# 📰 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