# 🕌 Darija Sentiment Analysis - Deep Learning
Ce projet est une solution complète d'Analyse de Sentiments (Positif / Négatif / Neutre) pour les avis de produits écrits en **Darija marocain** (en caractères arabes et en Arabizi/alphabet latin), **Apprentissage Profond (Deep Learning)**.
---
## 📊 Le Modèle de Deep Learning
* **Modèle de base** : `SI2M-Lab/DarijaBERT` (modèle BERT pré-entraîné sur un large corpus de textes marocains).
* **Version fine-tunée** : `HamzaElhamidineOffi/darija-sentiment-bert` (hébergé sur le Hugging Face Hub).
* **Performances** : Précision (Accuracy) supérieure à **95%** sur le jeu de test.
* **Score F1-Macro** : Supérieur à **0.9500** sur le jeu de test équilibré.
---
## 💾 Le Dataset Généré (10 000 avis)
Pour surmonter les biais des datasets publics (souvent très petits et déséquilibrés), le projet utilise un **générateur combinatoire de données** (`generate_dataset.py`) qui produit un jeu de données de **10 000 lignes** :
* **Équilibre des écritures** : 50% en caractères arabes (عربي), 50% en Arabizi (alphabet latin).
* **Équilibre des sentiments** : ~3 333 Positifs, ~3 333 Négatifs, ~3 334 Neutres.
* **Diversité des domaines** : Produits (téléphones, PC, vêtements, etc.), services (livraison, service client) et restauration.
### Variabilité Orthographique du Darija
Le Darija n'ayant pas d'orthographe fixe, le générateur injecte aléatoirement des variantes courantes pour chaque mot-clé :
* *Beaucoup* : `bzf`, `bzaf`, `bezzaf`, `bzaaf`, `bzaff`.
* *Bien/Bon* : `mzyan`, `mezyan`, `mziyan`, `mezian`, `mzyane`, `mzyana`.
* *Mauvais* : `khayb`, `khayba`, `khaib`, `khaser`, `na9s`.
### Mots-Pivots ("walakin" / ولكن)
Pour apprendre au modèle à comprendre les nuances, des phrases neutres ont été conçues en reliant des sentiments opposés via le mot-pivot **"walakin"** (ex: *"had pc zwine walakin ghali chwiya"* $\rightarrow$ Neutre).
### Adjectifs Cumulés
Des structures de phrases renforcent le sentiment en cumulant d …