ma2za/many_emotions
Many Emotions Many Emotions is a 2.7-million-row multilingual text-classification dataset for recognizing seven emotion categories in English, French, Italian, Spanish, and German. It combines examples from Emotion, DailyDialog, and GoEmotions. The default unsplit corpus contains 2,710,740 non-empty rows derived from 550,123 source IDs. Every row records its source dataset and source-specific license. The current release is 2.0.0. See CHANGELOG.md for changes from the original… See the full description on the dataset page: https://huggingface.co/datasets/ma2za/many_emotions.
Many Emotions
Many Emotions is a 2.7-million-row multilingual text-classification dataset for recognizing seven emotion categories in English, French, Italian, Spanish, and German. It combines examples from Emotion, DailyDialog, and GoEmotions.
The default unsplit corpus contains 2,710,740 non-empty rows derived from 550,123 source IDs. Every row records its source dataset and source-specific license.
The current release is 2.0.0. See CHANGELOG.md for changes from the original 2023 release.
No train/test split is implied. The defaultallconfiguration intentionally exposes onefullpartition. Create splits appropriate for your task and group them bysource_id.
Labels
Load the dataset
Install the required library:
pip install datasetsLoad the complete corpus as one dataset:
from datasets import load_dataset
dataset = load_dataset("ma2za/many_emotions", split="full")For exploration, tutorials, and integration tests, load the deterministic 10,000-row sample:
sample = load_dataset("ma2za/many_emotions", "sample", split="full")The sample excludes known exact-text label conflicts and is balanced as evenly as possible across the 35 language-label combinations. It is not an evaluation split and should not be used as a benchmark.
all is the default configuration. Calling load_dataset("ma2za/many_emotions") without split="full" returns a DatasetDict containing that partition.
The repository retains the raw gzip file for archival access. Load it explicitly with:
raw = load_dataset(
"json",
data_files="hf://datasets/ma2za/many_emotions/data/many_emotions.json.gz",
split="train",
)The deprecated row-level gzip files also remain available for reproducibility, but they are not published as Hub configurations:
base = "hf://datasets/ma2za/many_emotions/data"
legacy = load_dataset(
"json",
data_files={
"train": f"{base}/split_dataset_train.jsonl.gz",
"validation": f"{base}/split_dataset_validation.jsonl.gz",
"test": f"{base}/split_dataset_test.jsonl.gz",
},
)Both Hub configurations expose one partition named full. No repository code is executed when loading them.
Dataset structure
Default unsplit corpus
The default corpus is stored in 11 Zstandard-compressed Parquet shards. It adds explicit source_id and label_name columns and omits the single empty record found in the legacy files.
Balanced sample
The sample contains 285 or 286 rows from each language-label combination and zero rows marked as exact-text label conflicts. Selection is deterministic by ID. Its source distribution is not balanced.
Deprecated legacy splits
These splits are retained only for reproducibility. They are row-level splits, not source-grouped splits. Removing the final language suffix from id gives the source ID. Its membership across the legacy splits is:
Pairwise, train shares 122,325 source IDs with validation and 122,579 with test. Validation and test share 23,131 source IDs.
The default corpus contains approximately the same number of rows for each language:
Data fields
Example:
{
"id": "emotion_199458_en",
"source_id": "emotion_199458",
"text": "i live with a big wonderful family that wants me to feel welcomed so sitting alone in my room is not an option",
"label": 2,
"label_name": "joy",
"dataset": "emotion",
"license": "educational/research",
"language": "en",
"is_label_conflict": false,
"label_variants": 1
}Raw data
data/many_emotions.json.gz contains 598,298 records. Each record contains the English text in text and parallel French, Italian, Spanish, and German text in fr, it, es, and de. It also retains the original source label ID before normalization to the seven prepared labels above.
Unlike the prepared corpus, the raw file does not normalize labels or select one language column.
The prepared data retains 550,123 of the raw source IDs; 48,175 raw IDs are absent. Among retained source IDs, 530,398 have all five languages, while 19,725 have between one and four languages.
Source composition
Counts in the default unsplit corpus:
Data quality and limitations
The following results come from complete build-time and post-build scans:
- All 2,710,740 default rows have the documented typed schema, unique IDs, non-empty text, valid language codes, and labels between 0 and 6.
- The empty legacy record
go_emotions_1_48976_esis excluded fromall. Its corresponding Spanish field is also empty in the raw record. - There are no repeated
(language, text, label)triples in the default corpus. - There are 159,897 exact
(language, text)values associated with multiple labels, involving 323,049 rows. The same text can have as many as six labels. Useis_label_conflictandlabel_variantsto identify them without recomputing this analysis. - The deprecated legacy files place the same-language text across train and validation for 14,535 values, train and test for 14,660 values, and validation and test for 888 values. None has the same label on both sides of the measured pair.
- The deprecated legacy files also distribute translations of the same source example across splits. The default
fullpartition has no split boundaries and makes no evaluation claim. - Labels are imbalanced and strongly associated with source. For example, 83.2% of DailyDialog rows and 64.7% of GoEmotions rows are neutral, while the Emotion contribution contains no neutral rows.
- The translation method and translation-quality evaluation are not documented in this repository. Inspect the languages relevant to your use case before training or evaluation.
- Median text length is 15 to 16 whitespace-delimited words, depending on language; the 95th percentile is 39 to 42 words.
Source labels are normalized to anger, fear, joy, love, sadness, surprise, and neutral. The default corpus preserves the normalized labels from the legacy prepared files.
Reproducibility
reports/all_validation.json and reports/sample_validation.json record input and shard checksums, row counts, feature definitions, distributions, and conflict statistics.
Rebuild into a separate directory:
python scripts/build_all.py \
--output-dir build/all \
--sample-output-dir build/sample \
--report build/all_validation.json \
--sample-report build/sample_validation.json
python scripts/validate_all.py \
--reports build/all_validation.json build/sample_validation.jsonThe builder concatenates the three legacy files into one partition, derives the additional fields, excludes empty text, annotates exact-text label conflicts, and writes deterministic Parquet files. It also selects the balanced sample by a stable hash of each ID. It does not assign train, validation, or test splits.
Licensing
This dataset combines sources with different licenses or usage designations. The license field preserves that information for each row. Users are responsible for following the terms associated with every source represented in their chosen subset; the repository-level metadata therefore uses license: other rather than applying one license to all rows.
Filter by source provenance or stored license value when a project cannot use every contribution:
go_emotions = dataset.filter(lambda row: row["dataset"] == "go_emotions")
apache_rows = dataset.filter(lambda row: row["license"] == "apache license 2.0")These fields describe inherited provenance. Filtering them is not a legal conclusion about a resulting dataset or downstream use; review the linked upstream terms for your use case.
Citation
For the current version 2.0.0, cite:
Mazza, P. (2026). many_emotions (Revision abb7917) [Data set]. Hugging Face. https://doi.org/10.57967/hf/9639
@misc{paolo_mazza_2026,
author = {paolo mazza},
title = {many_emotions (Revision abb7917)},
year = {2026},
url = {https://huggingface.co/datasets/ma2za/many_emotions},
doi = {10.57967/hf/9639},
publisher = {Hugging Face}
}Many Emotions version 1.0 was originally released in 2023. Its archived citation is:
Mazza, P. (2026). many_emotions (Revision 2f0d037) [Data set]. Hugging Face. https://doi.org/10.57967/hf/9638
@misc{paolo_mazza_2026_v1,
author = {paolo mazza},
title = {many_emotions (Revision 2f0d037)},
year = {2026},
url = {https://huggingface.co/datasets/ma2za/many_emotions},
doi = {10.57967/hf/9638},
publisher = {Hugging Face}
}Also cite the applicable upstream datasets represented in the subset you use.
Upstream datasets
- Emotion: dataset and CARER paper (DOI).
- DailyDialog: dataset archive and paper.
- GoEmotions: dataset, Google Research repository, and paper (DOI).
@inproceedings{saravia-etal-2018-carer,
title = {{CARER}: Contextualized Affect Representations for Emotion Recognition},
author = {Saravia, Elvis and Liu, Hsien-Chi Toby and Huang, Yen-Hao and Wu, Junlin and Chen, Yi-Shin},
booktitle = {Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing},
year = {2018},
publisher = {Association for Computational Linguistics},
url = {https://aclanthology.org/D18-1404/},
doi = {10.18653/v1/D18-1404},
pages = {3687--3697}
}
@inproceedings{li-etal-2017-dailydialog,
title = {{D}aily{D}ialog: A Manually Labelled Multi-turn Dialogue Dataset},
author = {Li, Yanran and Su, Hui and Shen, Xiaoyu and Li, Wenjie and Cao, Ziqiang and Niu, Shuzi},
booktitle = {Proceedings of the Eighth International Joint Conference on Natural Language Processing (Volume 1: Long Papers)},
year = {2017},
publisher = {Asian Federation of Natural Language Processing},
url = {https://aclanthology.org/I17-1099/},
pages = {986--995}
}
@inproceedings{demszky-etal-2020-goemotions,
title = {{G}o{E}motions: A Dataset of Fine-Grained Emotions},
author = {Demszky, Dorottya and Movshovitz-Attias, Dana and Ko, Jeongwoo and Cowen, Alan and Nemade, Gaurav and Ravi, Sujith},
booktitle = {Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics},
year = {2020},
publisher = {Association for Computational Linguistics},
url = {https://aclanthology.org/2020.acl-main.372/},
doi = {10.18653/v1/2020.acl-main.372},
pages = {4040--4054}
}