Spaces:
Sleeping
Sleeping
Merwan6
commited on
Commit
·
9682a49
1
Parent(s):
7ae005b
modif
Browse files
app.py
CHANGED
|
@@ -8,8 +8,76 @@ from scripts.inference import (
|
|
| 8 |
)
|
| 9 |
|
| 10 |
#Lire le README.md
|
| 11 |
-
|
| 12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
def predict_with_model(text, model_type):
|
| 15 |
"""
|
|
|
|
| 8 |
)
|
| 9 |
|
| 10 |
#Lire le README.md
|
| 11 |
+
readme_content = """# 📰 AG News Text Classification Demo
|
| 12 |
+
|
| 13 |
+
Ce projet présente une application de classification de textes d’actualité basée sur le dataset **AG News**.
|
| 14 |
+
L'objectif est de comparer plusieurs stratégies d'inférence de modèles Transformers pour la classification de texte.
|
| 15 |
+
|
| 16 |
+
---
|
| 17 |
+
|
| 18 |
+
## 🚀 Démo en ligne
|
| 19 |
+
|
| 20 |
+
L’application est disponible ici :
|
| 21 |
+
[**Lien vers la démo Hugging Face Space**](https://huggingface.co/spaces/Merwan611/classification-text)
|
| 22 |
+
|
| 23 |
+
---
|
| 24 |
+
|
| 25 |
+
## 📂 Organisation du projet
|
| 26 |
+
|
| 27 |
+
- `app.py` : interface Gradio avec deux onglets (`Demo` + `Documentation`)
|
| 28 |
+
- `scripts/inference.py` : fonctions d’inférence pour 4 types de modèles
|
| 29 |
+
- `scripts/train.py` : script d’entraînement du modèle BERT fine-tuné sur AG News
|
| 30 |
+
- `scripts/utils.py` : calcul des métriques d’évaluation (accuracy, F1, etc.)
|
| 31 |
+
- `requirements.txt` : liste des dépendances Python
|
| 32 |
+
|
| 33 |
+
---
|
| 34 |
+
|
| 35 |
+
## 🧠 Description des modèles utilisés
|
| 36 |
+
|
| 37 |
+
1. **Base model**
|
| 38 |
+
Modèle BERT préentraîné `textattack/bert-base-uncased-ag-news` utilisé directement sans fine-tuning.
|
| 39 |
+
|
| 40 |
+
2. **Zero-shot**
|
| 41 |
+
Modèle `facebook/bart-large-mnli` utilisé pour classification zero-shot via pipeline Hugging Face.
|
| 42 |
+
|
| 43 |
+
3. **Few-shot**
|
| 44 |
+
Approche zero-shot avec exemples dans le prompt (prompt engineering).
|
| 45 |
+
|
| 46 |
+
4. **Fine-tuned model**
|
| 47 |
+
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`.
|
| 48 |
+
|
| 49 |
+
---
|
| 50 |
+
|
| 51 |
+
## 📊 Données et entraînement
|
| 52 |
+
|
| 53 |
+
- **Dataset** : AG News (4 classes : World, Sports, Business, Sci/Tech)
|
| 54 |
+
- **Préprocessing** : tokenisation avec `AutoTokenizer` BERT
|
| 55 |
+
- **Entraînement** : 3 epochs, batch size 32, métrique optimisée : accuracy
|
| 56 |
+
- **Sous-échantillonnage** pour accélérer l’entraînement : 3000 exemples par classe pour le train, 1000 par classe pour le test
|
| 57 |
+
|
| 58 |
+
---
|
| 59 |
+
|
| 60 |
+
## 📈 Performances
|
| 61 |
+
|
| 62 |
+
Les métriques calculées sont :
|
| 63 |
+
- Accuracy
|
| 64 |
+
- Precision (moyenne pondérée)
|
| 65 |
+
- Recall (moyenne pondérée)
|
| 66 |
+
- F1-score (moyenne pondérée)
|
| 67 |
+
|
| 68 |
+
Le modèle fine-tuné atteint généralement une meilleure précision que le modèle de base ou les approches zero-shot.
|
| 69 |
+
|
| 70 |
+
---
|
| 71 |
+
|
| 72 |
+
## ⚙️ Lancer l’application localement
|
| 73 |
+
|
| 74 |
+
1. Cloner le repo
|
| 75 |
+
2. Créer un environnement virtuel Python
|
| 76 |
+
3. Installer les dépendances :
|
| 77 |
+
```bash
|
| 78 |
+
pip install -r requirements.txt
|
| 79 |
+
4. Lancer python app.py"""
|
| 80 |
+
|
| 81 |
|
| 82 |
def predict_with_model(text, model_type):
|
| 83 |
"""
|