Spaces:
Sleeping
Sleeping
from transformers import pipeline | |
import os | |
from typing import Dict | |
# Configuraci贸n de entorno para Hugging Face Spaces | |
os.environ["TRANSFORMERS_CACHE"] = "/tmp/transformers" | |
os.environ["HF_HOME"] = "/tmp/huggingface" | |
class SentimentAnalysisService: | |
def __init__(self): | |
try: | |
print("[LOG] Cargando pipeline con modelo BETO...") | |
self.pipeline = pipeline( | |
"sentiment-analysis", | |
model="finiteautomata/beto-sentiment-analysis", | |
top_k=3 # 猬咃笍 Mostrar las 3 emociones m谩s probables | |
) | |
print("[LOG] Pipeline cargado correctamente.") | |
except Exception as e: | |
print("[ERROR] Fall贸 la carga del modelo:", e) | |
raise | |
def analyze(self, transcript: str) -> Dict: | |
print("[LOG] An谩lisis de transcripci贸n recibido.") | |
try: | |
results = self.pipeline(transcript) | |
print("[LOG] Resultado del modelo:", results) | |
# Emoci贸n dominante = la primera (mayor score) | |
dominant = results[0] | |
emotion_mapping = { | |
"POS": "entusiasta", | |
"NEU": "neutro", | |
"NEG": "frustrado" | |
} | |
dominant_emotion = emotion_mapping.get(dominant['label'], "desconocido") | |
confidence = round(dominant['score'], 2) | |
# Crear diccionario de probabilidades mapeadas | |
emotion_probabilities = { | |
emotion_mapping.get(r['label'], r['label']): round(r['score'], 2) | |
for r in results | |
} | |
except Exception as e: | |
print("[ERROR] Fall贸 la predicci贸n:", e) | |
return { | |
"dominant_emotion": "error", | |
"emotion_probabilities": {}, | |
"confidence": 0.0 | |
} | |
return { | |
"dominant_emotion": dominant_emotion, | |
"emotion_probabilities": emotion_probabilities, | |
"confidence": confidence | |
} | |