Views
No views yet

1>>> import torch
2>>> from transformers import pipeline
3>>> model_name = "roberta-large-emopillars-contextless-goemotions"
4>>> threshold = 0.36
5>>> emotions = [
6>>> "admiration", "amusement", "anger", "annoyance", "approval", "caring", "confusion",
7>>> "curiosity", "desire", "disappointment", "disapproval", "disgust", "embarrassment",
8>>> "excitement", "fear", "gratitude", "grief", "joy", "love", "nervousness", "optimism",
9>>> "pride", "realization", "relief", "remorse", "sadness", "surprise", "neutral"
10>>> ]
11>>> label_to_emotion = dict(zip(list(range(len(emotions))), emotions))
12>>> device = torch.device("cuda" if torch.cuda.is_available() else "CPU")
13>>> pipe = pipeline("text-classification", model=model_name, truncation=True,
14>>> return_all_scores=True, device=-1 if device.type=="cpu" else 0)
15>>> # input in a format f"{text}"
16>>> utterances = [
17>>> "Ok is it just me or is anyone else getting goosebumps too???",
18>>> "Don’t know what to do",
19>>> "I’m glad you had a great time here! Wishing you safe travels!"
20>>> ]
21>>> outcome = pipe(utterances)
22>>> dominant_classes = [
23>>> [prediction for prediction in example if prediction['score'] >= threshold]
24>>> for example in outcome
25>>> ]
26>>> for example in dominant_classes:
27>>> print(", ".join([
28>>> "%s: %.2lf" % (label_to_emotion[int(prediction['label'])], prediction['score'])
29>>> for prediction in sorted(example, key=lambda x: x['score'], reverse=True)
30>>> ]))
31curiosity: 0.88
32confusion: 1.00
33caring: 0.89, joy: 0.39| class | precision | recall | f1-score | GoEmotions f1-score | Gain |
|---|---|---|---|---|---|
| admiration | 0.64 | 0.80 | 0.71 | 0.65 | 0.06 |
| amusement | 0.75 | 0.93 | 0.83 | 0.8 | 0.03 |
| anger | 0.51 | 0.56 | 0.53 | 0.47 | 0.06 |
| annoyance | 0.36 | 0.40 | 0.38 | 0.34 | 0.04 |
| approval | 0.40 | 0.44 | 0.42 | 0.36 | 0.06 |
| caring | 0.44 | 0.45 | 0.44 | 0.39 | 0.05 |
| confusion | 0.41 | 0.53 | 0.46 | 0.37 | 0.09 |
| curiosity | 0.49 | 0.69 | 0.57 | 0.54 | 0.03 |
| desire | 0.58 | 0.48 | 0.53 | 0.49 | 0.04 |
| disappointment | 0.40 | 0.33 | 0.36 | 0.28 | 0.08 |
| disapproval | 0.43 | 0.48 | 0.46 | 0.39 | 0.07 |
| disgust | 0.47 | 0.49 | 0.48 | 0.45 | 0.03 |
| embarrassment | 0.55 | 0.46 | 0.50 | 0.43 | 0.07 |
| excitement | 0.44 | 0.50 | 0.47 | 0.34 | 0.13 |
| fear | 0.57 | 0.76 | 0.65 | 0.6 | 0.05 |
| gratitude | 0.91 | 0.91 | 0.91 | 0.86 | 0.05 |
| grief | 0.5 | 0.67 | 0.57 | 0 | 0.57 |
| joy | 0.59 | 0.69 | 0.64 | 0.51 | 0.13 |
| love | 0.74 | 0.92 | 0.82 | 0.78 | 0.04 |
| nervousness | 0.44 | 0.48 | 0.46 | 0.35 | 0.11 |
| neutral | 0.57 | 0.59 | 0.58 | 0.68 | -0.10 |
| optimism | 0.57 | 0.50 | 0.53 | 0.51 | 0.02 |
| pride | 0.32 | 0.25 | 0.28 | 0.36 | -0.08 |
| realization | 0.20 | 0.18 | 0.19 | 0.21 | -0.02 |
| relief | 0.56 | 0.82 | 0.67 | 0.15 | 0.52 |
| remorse | 0.54 | 0.62 | 0.58 | 0.66 | -0.08 |
| sadness | 0.54 | 0.60 | 0.57 | 0.49 | 0.08 |
| surprise | 0.68 | 0.67 | 0.68 | 0.5 | 0.18 |
| Micro average | 0.58 | 0.64 | 0.61 | - | - |
| Macro average | 0.53 | 0.58 | 0.55 | 0.46 | 0.09 |
| STD | 0.14 | 0.19 | 0.16 | 0.19 | 0.14 |
1@misc{shvets2025emopillarsknowledgedistillation,
2 title={Emo Pillars: Knowledge Distillation to Support Fine-Grained Context-Aware and Context-Less Emotion Classification},
3 author={Alexander Shvets},
4 year={2025},
5 eprint={2504.16856},
6 archivePrefix={arXiv},
7 primaryClass={cs.CL},
8 url={https://arxiv.org/abs/2504.16856}
9}