Training repo to turn arabzi to tunisian dialect
# arabzi2tounsi
Fine-tuning d'un petit LLM pour translittérer le tunisien écrit en Arabizi (latin) vers le script arabe.
**Exemple**
```
sbeh el khir → صباح الخير
nheb nrou7 → نحب نروح
ma n9addarch → ما نقدرش
```
---
## Objectif pédagogique
Ce projet est un tutoriel complet de fine-tuning SFT (Supervised Fine-Tuning) avec LoRA sur un cas concret et simple. Il couvre :
- Construction d'un dataset au format chat
- Fine-tuning avec LoRA via PEFT + TRL
- Évaluation quantitative (CER) et qualitative
---
## Stack
| Composant | Choix |
|-----------|-------|
| Modèle de base | `HuggingFaceTB/SmolLM2-360M-Instruct` |
| Fine-tuning | LoRA (`r=8`, `alpha=16`) via PEFT |
| Trainer | `SFTTrainer` (TRL) |
| GPU | Google Colab T4 |
---
## Dataset
791 paires Arabizi → arabe tunisien oral, construites manuellement.
Couvre : salutations, verbes conjugués, négations, questions, famille, émotions, vie quotidienne.
Format :
```json
{"input": "kifeh 7alek", "output": "كيفاش حالك"}
```
## Résultats
Métrique : **CER** (Character Error Rate) — 0 = parfait, 1+ = mauvais.
| Modèle | CER moyen | Exact match |
|--------|-----------|-------------|
| Base (sans fine-tuning) | 2.72 | 0 / 135 |
| Fine-tuné (3 epochs, LoRA) | 0.26 | 14 / 135 |
Le modèle de base recrache l'Arabizi ou hallucine. Le modèle fine-tuné produit systématiquement du script arabe, avec des erreurs résiduelles sur les caractères proches (خ/ك, ن/ع).
---
## Reproduire
**Prérequis** : Python 3.13+, `uv`
```bash
# 1. Installer les dépendances
uv sync
# 2. Préparer les splits (train / val / test)
uv run python 01_prepare_dataset.py
# 3. Fine-tuning (recommandé sur GPU)
uv run python 02_train.py
# 4. Évaluation base vs fine-tuné
uv run python 03_evaluate.py
```
Sur **Google Colab** (GPU T4 gratuit) : ouvrir `colab_run.ipynb` et suivre les cellules dans l'ordre.
---
## Limites et pistes d'amélioration
- 791 exemples → CER 0.26 : encore trop élevé pour un usage réel
- Augmenter le dataset à ~3000 ex …