Frontier BERT Workhorses: Emotion and Bias Classifiers

Small, fast, open text classifiers for emotion and bias detection, maintained since January 2025. This page is the single home for all of them: what each model does, how they evolved, how they score, and one citation that covers every model.

🎭 Try the live demo →

Models

Task Recommended model Labels Earlier versions
Fine-grained emotion (GoEmotions, multi-label) ultrabert-380M-go-emotions · base size: ultrabert-150M-go-emotions 28 modernbert-large-go-emotions, modernbert-base-go-emotions, modernbert-base-go-emotions-2025-01
Basic emotion (SuperEmotion, Shaver taxonomy) modernbert-base-emotions · UltraBERT: ultrabert-380M-emotions, ultrabert-150M-emotions 7 modernbert-base-emotions (v1), ultrabert-150M-emotions (v1)
Bias type (multi-label) ultrabert-380M-bias-type-classifier 11 modernbert-large-bias-type-classifier

Dataset: SuperEmotion, 500k+ texts from five emotion datasets harmonised to Shaver's taxonomy (arXiv:2505.15348).

The dataset is for non-commercial research and education: most of its texts come from CARER, which is licensed for that use only (licences per source).

Results: GoEmotions test set

Macro-F1 over the 28 labels (every emotion weighs equally, so rare emotions count as much as common ones). All models were evaluated with the same script in the same environment.

Model Params Threshold 0.5 Per-label thresholds (train) Per-label thresholds (validation)
modernbert-large-go-emotions 395M 0.490 0.543 0.536
modernbert-base-go-emotions (2026-03, autoresearch) 150M 0.500 0.550 0.536
ultrabert-150M-go-emotions 150M 0.497 0.550 0.544
ultrabert-380M-go-emotions 380M 0.521 0.568 0.555

Per-label thresholds are listed on each model card; using them instead of 0.5 is recommended. Over three training seeds, ultrabert-380M-go-emotions scores 0.550 ± 0.010 (validation thresholds) and ultrabert-150M-go-emotions 0.541 ± 0.002; the table shows the released runs.

Results: SuperEmotion test set (version 2)

Macro-F1 over the 7 labels, 51,950 test texts. All three current models are trained on version 2 with the same recipe.

Model Params Threshold 0.5 Per-label thresholds (validation)
modernbert-base-emotions (2025, v1) 150M 0.517 0.781
ultrabert-150M-emotions 150M 0.826 0.826
ultrabert-380M-emotions 380M 0.828 0.829
modernbert-base-emotions 150M 0.835 0.836

History

Why small fine-tuned encoders

Large "decision" models are hyped right now, but for a fixed label set a small fine-tuned encoder is still hard to beat: it is cheaper, faster, runs on a CPU, and is more accurate on the task it was trained for.

Cite

If you use any of these models or the dataset, please cite:

@misc{junque2025emotion,
  title        = {Emotion and Bias Classification with Modern Encoders},
  author       = {Junqu\'e de Fortuny, Enric},
  year         = {2025},
  howpublished = {\url{https://huggingface.co/spaces/cirimus/emotion-detection}}
}

For the SuperEmotion dataset specifically, please also cite the dataset paper:

@misc{junque2025superemotion,
  title         = {The SuperEmotion Dataset},
  author        = {Junqu\'e de Fortuny, Enric},
  year          = {2025},
  eprint        = {2505.15348},
  archivePrefix = {arXiv},
  primaryClass  = {cs.CL}
}

Contact

Questions about the models, the data or the citation? Get in touch via ciri.be.