natmarinn's picture
Update app.py
cf5dd34 verified
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)