expon_backend / src /expon /presentation /domain /services /sentiment_analysis_service.py
alexander1010's picture
Update new emociones
9723a64 verified
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
}