|
from transformers import pipeline |
|
|
|
|
|
emotion_tone_map = { |
|
"Sadness": "Be comforting, empathetic, and gentle.", |
|
"Anger": "Stay calm, respectful, and de-escalate.", |
|
"Love": "Be warm, appreciative, and encouraging.", |
|
"Surprise": "Be affirming and help clarify what's surprising.", |
|
"Fear": "Be reassuring and emphasize safety/facts.", |
|
"Happiness": "Be enthusiastic and congratulatory.", |
|
"Neutral": "Be informative and straightforward.", |
|
"Disgust": "Be clinical, non-judgmental, and clarify facts.", |
|
"Shame": "Be kind, avoid blame, and uplift the user.", |
|
"Guilt": "Be compassionate and reduce self-blame.", |
|
"Confusion": "Be extra clear and explain step-by-step.", |
|
"Desire": "Be supportive and help guide constructively.", |
|
"Sarcasm": "Stay serious, clarify misunderstandings politely.", |
|
} |
|
|
|
emotion_classifier = pipeline("text-classification", model="boltuix/bert-emotion") |
|
|
|
def get_emotion_and_tone(text): |
|
emotions = emotion_classifier(text) |
|
detected_emotion = emotions[0]["label"].capitalize() if emotions else "Neutral" |
|
emotion = detected_emotion if detected_emotion in emotion_tone_map else "Neutral" |
|
tone_instruction = emotion_tone_map.get(emotion, "Be informative and polite.") |
|
return emotion, tone_instruction |