import gradio as gr from transformers import pipeline #Configuración del modelo modelo_sentimiento = "pysentimiento/robertuito-sentiment-analysis" print("Cargando modelo de sentimientos... (Esto es rápido)") try: clasificador = pipeline("text-classification", model=modelo_sentimiento) print("✅ Modelo cargado y listo.") except Exception as e: print(f"❌ Error al cargar: {e}") clasificador = None def analizar_texto(texto): if clasificador is None: return "Error: El modelo no está cargado." if not texto: return "Escribe algo primero." try: resultados = clasificador(texto) # Formateamos bonito el resultado mejor_resultado = resultados[0] etiqueta = mejor_resultado['label'] # POS, NEG, NEU confianza = round(mejor_resultado['score'] * 100, 2) # Traducción de etiquetas para que se entienda mejor traduccion = { 'POS': '😃 Positivo', 'NEG': '😡 Negativo', 'NEU': '😐 Neutro' } resultado_texto = traduccion.get(etiqueta, etiqueta) return f"{resultado_texto} (Confianza: {confianza}%)" except Exception as e: return f"Error al analizar: {str(e)}" # --- INTERFAZ GRÁFICA --- with gr.Blocks(theme=gr.themes.Base()) as demo: gr.Markdown("# 🌡️ Termómetro de Opinión") gr.Markdown("Escribe una frase, reseña o tweet y la IA detectará el tono emocional.") with gr.Row(): input_text = gr.Textbox( label="Tu texto", placeholder="Ej: ¡Este producto es una maravilla, me encanta!", lines=3 ) output_text = gr.Label(label="Sentimiento Detectado") btn = gr.Button("Analizar Sentimiento", variant="primary") btn.click(fn=analizar_texto, inputs=input_text, outputs=output_text) gr.Examples( examples=[ ["El servicio fue pésimo y la comida estaba fría."], ["Es una película entretenida, aunque el final es un poco flojo."], ["¡Estoy superfeliz con mi nueva compra!"] ], inputs=input_text ) if __name__ == "__main__": demo.launch()