# Gestion du déséquilibre de classes pour l’analyse de sentiments en dialecte algérien
Ce projet explore et compare plusieurs stratégies de rééquilibrage pour la classification de sentiments sur le corpus **TWIFL** (tweets en dialecte algérien). Le modèle de base est **DziriBERT**, un Transformer pré‑entraîné spécifiquement pour le darija.
## Objectif
Remédier au déséquilibre entre les classes `Positive` (47,7 %), `Negative` (29,5 %) et `Neutral` (22,7 %) dans le corpus TWIFL. L’accent est mis sur l’amélioration de la détection des classes minoritaires (notamment `Neutral`) sans dégrader la performance globale.
## Stratégies évaluées
| Famille | Méthodes |
|---------|----------|
| Modification de la fonction de perte | Class Weighting, Focal Loss (γ=1,2), combinaison des deux |
| Rééquilibrage dans l’espace des embeddings | SMOTE, ADASYN (sur les vecteurs `[CLS]` de DziriBERT) + MLP |
| Augmentation de données | Back‑translation (ar → fr → ar) appliquée uniquement à la classe `Neutral` (taux +20 %, +50 %, +100 %) |
## Résultats principaux
- **Meilleur F1-macro** : Back‑translation +100 % → **0.6989** (gain de +0.0081 par rapport à la baseline).
- **Meilleur F1-Neutral** : Back‑translation +100 % → **0.5379** (contre 0.5254 pour la baseline).
- **Meilleur AUC-PR** : Back‑translation +20 % → **0.7557**.
- **Approche la plus simple et efficace sans modification des données** : Focal Loss γ=2 (F1-macro = 0.6937).
- **Méthodes à éviter sur ce corpus** : SMOTE/ADASYN sur embeddings (F1-macro ≤ 0.6306) – elles dégradent nettement les performances.
## Utilisation
### 1. Installation des dépendances
pip install transformers datasets torch scikit-learn imbalanced-learn sentencepiece
2. Téléchargement du corpus
Le corpus TWIFL est disponible sur HuggingFace :
python
from datasets import load_dataset
dataset = load_dataset("arbml/Twifil")
3. Prétraitement
Exécutez le pipeline décrit dans le rapport :
Suppression des URLs, me …