Spaces:
Running
Running
def calculate_distress(emotions, suicide_risk=0.0): | |
distress_weights = { | |
"fear": 1.0, | |
"anger": 0.9, | |
"disgust": 0.8, | |
"sadness": 0.85, | |
"nervousness": 0.7, | |
"disappointment": 0.6, | |
"remorse": 0.5, | |
"annoyance": 0.6, | |
"confusion": 0.6, | |
"disapproval": 0.4, | |
"embarrassment": 0.7, | |
"grief": 1.0, | |
"desire": 0.4, | |
"joy": 0.2, | |
"love": 0.3, | |
"admiration": 0.2, | |
"optimism": 0.3, | |
"relief": 0.2, | |
"pride": 0.3, | |
"gratitude": 0.2, | |
"amusement": 0.2, | |
"excitement": 0.3, | |
"surprise": 0.4, | |
"neutral": 0.1 | |
} | |
if not emotions: | |
distress = 0.0 | |
else: | |
distress = sum( | |
distress_weights.get(label, 0) * score | |
for label, score in emotions.items() | |
) | |
# Boost distress with suicidal risk | |
distress += suicide_risk * 1.5 | |
return round(min(distress, 1.0), 2) # Cap at 1.0 | |