|
from transformers import pipeline |
|
import gradio as gr |
|
|
|
nombre_modelo = "cardiffnlp/twitter-xlm-roberta-base-sentiment" |
|
pipeline_sentimiento = pipeline("sentiment-analysis", model=nombre_modelo, tokenizer=nombre_modelo) |
|
|
|
def analizar_sentimiento(texto): |
|
|
|
if not texto.strip(): |
|
return "Error: Por favor introduce texto para analizar" |
|
|
|
try: |
|
resultado = pipeline_sentimiento(texto) |
|
print("Resultado del modelo:", resultado) |
|
|
|
etiqueta = resultado[0]['label'] |
|
puntuación = resultado[0]['score'] |
|
|
|
|
|
mapa_etiquetas = { |
|
'negative': '🔴 Negativo', |
|
'neutral': '🟡 Neutral', |
|
'positive': '🟢 Positivo', |
|
'LABEL_0': '🔴 Negativo', |
|
'LABEL_1': '🟡 Neutral', |
|
'LABEL_2': '🟢 Positivo' |
|
} |
|
|
|
etiqueta_espanol = mapa_etiquetas.get(etiqueta, 'Desconocido') |
|
|
|
if puntuación < 0.6: |
|
confianza_desc = "Confianza baja" |
|
elif puntuación < 0.8: |
|
confianza_desc = "Confianza moderada" |
|
else: |
|
confianza_desc = "Confianza alta" |
|
|
|
return f"El mensaje es: {etiqueta_espanol} ({confianza_desc}: {puntuación:.2f})" |
|
|
|
except Exception as e: |
|
print(f"Error interno: {str(e)}") |
|
return "Ocurrió un error al analizar el texto. Por favor intenta con otro contenido." |
|
|
|
demo = gr.Interface( |
|
fn=analizar_sentimiento, |
|
inputs=gr.Textbox( |
|
lines=5, |
|
placeholder="Introduce texto en español o inglés aquí...", |
|
label="Texto a Analizar" |
|
), |
|
outputs="text", |
|
title="Análisis de Sentimiento Multilingüe", |
|
description="""Analiza el sentimiento de texto en español o inglés utilizando el modelo XLM-RoBERTa. |
|
Resultados: 🔴 Negativo, 🟡 Neutral, 🟢 Positivo""", |
|
examples=[ |
|
["Me encanta este producto, es increíble"], |
|
["No estoy satisfecho con el servicio recibido"], |
|
["Es aceptable, pero podría mejorar"], |
|
["I love this app! (inglés también funciona)"] |
|
], |
|
theme="soft" |
|
) |
|
|
|
demo.launch() |
|
|