proxy3d/multi-motions-28
Multi-Motions 28 — EN/RU
## 📖 Detailed article and benchmarks A full description of the model, data preparation, EN/RU training approach, benchmark results and native-Russian validation is available here: [Multi-Motions 28 — Article & Benchmarks](https://huggingface.co/spaces/proxy3d/multi-motions-28-article)
One bilingual XLM-RoBERTa checkpoint · English + Russian · 28 GoEmotions-compatible outputs · multi-label classification.
Author: Ilya Zelenskiy (proxy3d) Telegram channel: https://t.me/greenruff Model repository: https://huggingface.co/proxy3d/multi-motions-28
Related work:
- Communication Styles LLM — article / live documentation: https://iproxy3d.github.io/communication-styles-llm/
- Communication Styles LLM — GitHub: https://github.com/iproxy3d/communication-styles-llm
- Multi-Motions 28 — detailed article and benchmarks: https://huggingface.co/spaces/proxy3d/multi-motions-28-article
The model returns a complete 28-dimensional sigmoid score vector: 27 fine-grained emotions plus neutral. It was built as a single EN/RU model rather than separate English and Russian classifiers, and it was additionally validated on independent native-Russian corpora that were not used for training or checkpoint selection.
Detailed article: https://huggingface.co/spaces/proxy3d/multi-motions-28-article Russian quick overview: `README_RU.md` Machine-readable benchmarks: `benchmarks.json`
Why use this model?
- One checkpoint for English and Russian.
- Fine-grained 28-label GoEmotions-compatible representation rather than only a small set of basic emotions.
- Full continuous score vector is available for agents, analytics, routing, state models, and downstream calibration.
- The selected training configuration was checked across 3 independent random seeds.
- Russian transfer was tested on CEDR and SemEval-2025 RU without training on either benchmark.
Application context — Communication Styles LLM
A practical application context for this classifier is the Communication Styles LLM project, which explores emotion-aware conversational agents, persistent emotional state, communication styles, motivation, and microdialogue-based behavior control.
The 28-dimensional output of this model can be used as the semantic emotion signal for such a system: instead of reducing a message to a single emotion label, downstream logic can consume the full emotion vector and combine it with state, style, and dialogue context.
- Article / live documentation: https://iproxy3d.github.io/communication-styles-llm/
- GitHub repository: https://github.com/iproxy3d/communication-styles-llm
The companion repository is also the natural place for end-to-end integration examples that connect this classifier to the agent pipeline.
Labels
admiration, amusement, anger, annoyance, approval, caring, confusion, curiosity, desire, disappointment, disapproval, disgust, embarrassment, excitement, fear, gratitude, grief, joy, love, nervousness, optimism, pride, realization, relief, remorse, sadness, surprise, neutral
Quick start — Transformers
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
MODEL_ID = "proxy3d/multi-motions-28"
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, use_fast=True)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_ID).eval()
text = "Я наконец закончил — какое облегчение!"
inputs = tokenizer(
text,
return_tensors="pt",
truncation=True,
max_length=64,
)
with torch.inference_mode():
scores = torch.sigmoid(model(**inputs).logits[0])
result = sorted(
[(model.config.id2label[i], float(scores[i])) for i in range(len(scores))],
key=lambda x: x[1],
reverse=True,
)
print(result[:5])The model was trained/evaluated with max_length=64; using the same value is recommended for reproducible inference behavior.
Hugging Face pipeline
Because config.json declares problem_type = "multi_label_classification", the Transformers text-classification pipeline uses sigmoid outputs for this model.
from transformers import pipeline
classifier = pipeline(
"text-classification",
model="proxy3d/multi-motions-28",
tokenizer="proxy3d/multi-motions-28",
)
scores = classifier(
"I am nervous, but also excited about tomorrow.",
top_k=None,
truncation=True,
max_length=64,
)
print(scores)Convenience wrapper
If you clone the repository, it also contains a small inference wrapper that returns all 28 scores plus optional thresholded labels:
pip install -e .from goemotions_en_ru import EmotionClassifier
clf = EmotionClassifier("proxy3d/multi-motions-28")
result = clf.predict("Спасибо, это действительно помогло.", top_k=5)
print(result["top"])
print(result["scores"]) # all 28 dimensions
print(result["labels"]) # convenience thresholdsBenchmarks
Values are mean ± population standard deviation over 3 independently trained seeds.
How to interpret the native-Russian results
CEDR and SemEval-2025 RU are external transfer tests, not datasets on which this checkpoint was trained or tuned. The model saw zero CEDR and zero SemEval/BRIGHTER train/dev examples during training and checkpoint selection. Only emotions actually annotated by each benchmark were scored; the other GoEmotions dimensions were ignored rather than treated as negatives.
This is deliberately different from a benchmark leaderboard where systems are trained directly on the target benchmark. The native-RU tests answer a different engineering question: does the bilingual 28-emotion representation transfer to original Russian text from unseen corpora?
See benchmarks.json for machine-readable aggregate metrics. The full article is published as a free Hugging Face Static Space; its source is also kept in docs/index.html.
Scores and thresholds
The raw model output should be passed through sigmoid. The resulting 28 values are best interpreted as model confidence scores, not universally calibrated probabilities.
thresholds.json contains per-label thresholds selected on the bilingual GoEmotions validation distribution. They are useful defaults, but fixed thresholds are domain-sensitive. On a new production domain, continuous scores are usually the safest interface; recalibrate thresholds on a separate development set if hard labels are required.
Intended use
Suitable for:
- emotion-aware conversational agents;
- affect/state representations;
- analytics and monitoring;
- routing and downstream decision systems;
- EN/RU research requiring a shared fine-grained emotion space.
Do not use expressed-text emotion as a clinical diagnosis or as the sole basis for high-stakes decisions about a person.
Architecture
- Backbone:
FacebookAI/xlm-roberta-base - Task: multi-label sequence classification
- Outputs: 28 independent logits → sigmoid scores
- Languages validated in this release: English and Russian
- Recommended inference max length: 64 tokens
The public model repository intentionally contains no training datasets, dataset-construction scripts, translation pipeline, synthetic-data generator, annotation pipeline, trainer states, or training code.
Author and project links
- Author: Ilya Zelenskiy (proxy3d)
- Telegram channel: https://t.me/greenruff Model repository: https://huggingface.co/proxy3d/multi-motions-28
- Communication Styles LLM article: https://iproxy3d.github.io/communication-styles-llm/
- Communication Styles LLM GitHub: https://github.com/iproxy3d/communication-styles-llm
- Multi-Motions 28 detailed article: https://huggingface.co/spaces/proxy3d/multi-motions-28-article
- Citation metadata:
CITATION.cff
License
Released under the MIT License. See THIRD_PARTY_NOTICES.md for third-party notices and the training-data licensing reminder.
