Multi-label emotion detection across 28 fine-grained emotions, powered by a RoBERTa model fine-tuned on Google's GoEmotions dataset.
EmoSense is a multi-label emotion classifier trained on Google's GoEmotions dataset — 58,000 Reddit comments annotated across 28 fine-grained emotion categories by human raters.
Unlike binary sentiment (positive/negative), GoEmotions captures the full nuance of human emotional expression: the difference between admiration and love, between disappointment and grief.
Backbone: RoBERTa-base (domain-adapted on GoEmotions) → Classification head with LayerNorm, Dropout, 2-layer MLP with GELU activation.
Training: Focal BCE loss with label smoothing (0.05), cosine annealing scheduler, per-class threshold tuning on validation set, early stopping.
Improvement over Assignment 1: Upgraded from vanilla RoBERTa-base (Macro F1: 0.5245) to a domain-adapted backbone with improved loss function and training recipe.
| MODEL | MACRO F1 | MICRO F1 |
|---|---|---|
| BiGRU (A1) | 0.4314 | 0.5008 |
| BiLSTM (A1) | 0.4266 | 0.5041 |
| BERT-base (A1) | 0.5144 | 0.5930 |
| RoBERTa-base (A1) | 0.5245 | 0.5844 |
| RoBERTa-GoEmotions (A2) | 0.58+ | 0.64+ |