Objective: Develop emotion classification models for African languages. Dataset: BRIGHTER + EthioEmo, AfriSenti, AfriHate. Key Tasks: Implement multi-label emotion classification. Use deep learning to detect nuanced emotions. Compare model performance across African languages.
# Emotion Analysis — African Languages
Multilabel emotion classification across five African languages from **BRIGHTER** (Afrikaans, Swahili, Hausa) and **EthioEmo** (Amharic, Tigrinya), spanning **Latin and Ge'ez scripts**.
COS 760 group project — University of Pretoria.
## Target languages
Five languages across two datasets, two scripts, and three families — chosen for direct-fine-tune-able train splits and maximal contrast for the RQ2 linguistic-factor analysis.
| Language | Code | Source | Script | Train | Dev | Test | Family | Region |
|---|---|---|---|---|---|---|---|---|
| Afrikaans | `afr` | BRIGHTER | Latin | 1,222 | 196 | 2,130 | Indo-European (Germanic) | South Africa |
| Swahili | `swa` | BRIGHTER | Latin | 3,307 | 1,102 | 3,312 | Niger-Congo (Bantu) | East Africa |
| Hausa | `hau` | BRIGHTER | Latin | 2,145 | 712 | 2,160 | Afro-Asiatic (Chadic) | West Africa |
| Amharic | `amh` | EthioEmo | Ge'ez | 3,549 | 592 | 1,774 | Afro-Asiatic (Semitic) | Ethiopia |
| Tigrinya | `tir` | EthioEmo | Ge'ez | 3,681 | 614 | 1,840 | Afro-Asiatic (Semitic) | Ethiopia / Eritrea |
Both datasets share the **same 6-label int64 multilabel schema** (`id, text, anger…surprise`), so one loader serves both. The Latin-vs-Ge'ez script split and the resource/morphology spread are central to RQ2 (what linguistic factors explain performance gaps). isiZulu/isiXhosa were dropped earlier (BRIGHTER `train=0` — no direct fine-tuning); EthioEmo's `orm`/`som` (both Latin) remain available if the set is widened.
## Emotion labels (BRIGHTER multilabel schema)
`anger`, `disgust`, `fear`, `joy`, `sadness`, `surprise` — multi-hot per text. Intensity prediction (0–3) is a stretch goal if a target language has the intensity split.
## Project layout
```
.
├── configs/ # Hydra / YAML configs
│ ├── data.yaml
│ ├── languages.yaml
│ ├── models.yaml
│ └── training.yaml
├── data/
│ ├── raw/ # raw downloads (gitignored)
│ ├── processed/ …