File size: 2,389 Bytes
0cebe35
 
 
 
 
 
 
 
 
 
3eae2ef
0cebe35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3eae2ef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# 📰 AG News Text Classification Demo

Ce projet présente une application de classification de textes d’actualité basée sur le dataset **AG News**.  
L'objectif est de comparer plusieurs stratégies d'inférence de modèles Transformers pour la classification de texte.

---

## 🚀 Démo en ligne

L’application est disponible ici :  
[**Lien vers la démo Hugging Face Space**](https://huggingface.co/spaces/Merwan611/classification-text) 

---

## 📂 Organisation du projet

- `app.py` : interface Gradio avec deux onglets (`Demo` + `Documentation`)
- `scripts/inference.py` : fonctions d’inférence pour 4 types de modèles
- `scripts/train.py` : script d’entraînement du modèle BERT fine-tuné sur AG News
- `scripts/utils.py` : calcul des métriques d’évaluation (accuracy, F1, etc.)
- `requirements.txt` : liste des dépendances Python

---

## 🧠 Description des modèles utilisés

1. **Base model**  
   Modèle BERT préentraîné `textattack/bert-base-uncased-ag-news` utilisé directement sans fine-tuning.

2. **Zero-shot**  
   Modèle `facebook/bart-large-mnli` utilisé pour classification zero-shot via pipeline Hugging Face.

3. **Few-shot**  
   Approche zero-shot avec exemples dans le prompt (prompt engineering).

4. **Fine-tuned model**  
   Modèle BERT `bert-base-uncased` entraîné sur un sous-ensemble équilibré du dataset AG News (3000 exemples par classe), sauvegardé sur Hugging Face Hub sous `Merwan611/agnews-finetuned-bert`.

---

## 📊 Données et entraînement

- **Dataset** : AG News (4 classes : World, Sports, Business, Sci/Tech)
- **Préprocessing** : tokenisation avec `AutoTokenizer` BERT
- **Entraînement** : 3 epochs, batch size 32, métrique optimisée : accuracy
- **Sous-échantillonnage** pour accélérer l’entraînement : 3000 exemples par classe pour le train, 1000 par classe pour le test

---

## 📈 Performances

Les métriques calculées sont :  
- Accuracy  
- Precision (moyenne pondérée)  
- Recall (moyenne pondérée)  
- F1-score (moyenne pondérée)

Le modèle fine-tuné atteint généralement une meilleure précision que le modèle de base ou les approches zero-shot.

---

## ⚙️ Lancer l’application localement

1. Cloner le repo  
2. Créer un environnement virtuel Python  
3. Installer les dépendances :  
   ```bash
   pip install -r requirements.txt
4. Lancer python app.py