Spaces:
Sleeping
Sleeping
from transformers import XLMRobertaForSequenceClassification, XLMRobertaTokenizer | |
import torch | |
import gradio as gr | |
# Nombre del modelo en Hugging Face | |
model_path = "natmarinn/sentimientos-massa" | |
# Cargar el modelo y el tokenizador desde Hugging Face | |
model = XLMRobertaForSequenceClassification.from_pretrained(model_path) | |
tokenizer = XLMRobertaTokenizer.from_pretrained(model_path) | |
# Definir las etiquetas de las clases | |
clases = ["Negativo", "Neutro", "Positivo"] | |
def clasificar_texto(texto): | |
# Tokenizar el texto de entrada | |
inputs = tokenizer(texto, return_tensors="pt", truncation=True) | |
# Realizar la predicción y obtener las probabilidades | |
with torch.no_grad(): | |
outputs = model(**inputs) | |
logits = outputs.logits | |
probs = torch.softmax(logits, dim=1).squeeze().tolist() # Convertir a probabilidades | |
# Crear una lista de categorías y probabilidades | |
categorias_prob = list(zip(clases, probs)) | |
# Ordenar por probabilidad de mayor a menor | |
categorias_prob = sorted(categorias_prob, key=lambda x: x[1], reverse=True) | |
# Formatear el resultado en un string para mostrarlo en Gradio | |
resultado = "\n".join([f"{categoria}: {probabilidad:.2%}" for categoria, probabilidad in categorias_prob]) | |
return resultado | |
# Crear la interfaz en Gradio | |
iface = gr.Interface( | |
fn=clasificar_texto, # Función que ejecuta la clasificación | |
inputs="text", # Tipo de entrada: texto | |
outputs="text", # Tipo de salida: texto | |
title="Clasificación de Sentimientos - Sergio Massa - Debate Presidencial", | |
description="Escribe un comentario sobre el debate presidencial y el modelo clasificará el sentimiento con sus probabilidades.", | |
examples=[["Massa presidente"], ["Panqueque"], ["Que hable de chocolate"]] | |
) | |
# Ejecutar la aplicación | |
iface.launch(share=True) |