Sentiment Analysis on IMDb Dataset using PyTorch & CI/CD
Ce projet implémente un modèle de classification de sentiments (analyse d'opinion positive/négative) entraîné sur le jeu de données IMDb. Il s'agit d'un réseau de neurones multicouches (MLP) construit avec PyTorch et précédé d'une vectorisation de texte TF-IDF à l'aide de scikit-learn.
L'une des fonctionnalités clés de ce dépôt est l'automatisation complète : à chaque git push sur la branche principale (main), un pipeline CI/CD GitHub Actions entraîne automatiquement le modèle et le déploie sur le Hugging Face Hub.
Dépôts Liés
- GitHub Repository : MaayZz/IMDB-sentiment
- Hugging Face Model Hub : MaayZz/imdb-sentiment-nn
Architecture du Projet
data/: Contient le jeu de données brut (imdb_top_500.csv).model/: Dossier contenant les artifacts du modèle après entraînement :model.pt: Poids du réseau de neurones PyTorch.vectorizer.pkl: Vectoriseur TF-IDF scikit-learn sérialisé.config.json: Hyperparamètres et configuration du modèle.metrics.json: Métriques de performance (Accuracy, Loss).
train.py: Script de chargement des données, de prétraitement, d'entraînement et d'évaluation.predict.py: Script d'inférence pour tester le modèle sur de nouvelles phrases.requirements.txt: Liste des dépendances Python requises..github/workflows/train-and-upload.yml: Configuration du pipeline CI/CD GitHub Actions.
Détails Techniques du Modèle
- Prétraitement :
- Nettoyage du texte (suppression des balises HTML
<br />courantes dans IMDb). - Mises en minuscules et suppression de la ponctuation.
- Nettoyage du texte (suppression des balises HTML
- Représentation du texte :
- TF-IDF avec un vocabulaire maximum de 5 000 mots les plus fréquents.
- Classifieur (Réseau de neurones PyTorch) :
- Couche d'entrée : 5 000 entrées (une valeur TF-IDF par mot du vocabulaire).
- Couche cachée 1 : 128 neurones avec activation ReLU + Dropout (0.5).
- Couche cachée 2 : 32 neurones avec activation ReLU.
- Couche de sortie : 1 neurone avec fonction d'activation Sigmoïde pour prédire la probabilité de sentiment positif.
- Optimisation : Loss
BCELoss(Binary Cross Entropy) et optimiseurAdam.
Installation et Utilisation en Local
1. Cloner le dépôt et installer les dépendances
git clone https://github.com/MaayZz/IMDB-sentiment.git
cd IMDB-sentiment
pip install -r requirements.txt
2. Entraîner le modèle localement
python3 train.py
Cela va créer le dossier model/ et générer les 4 fichiers d'artifacts (model.pt, vectorizer.pkl, config.json, metrics.json).
3. Tester le modèle (Inférence)
Pour prédire le sentiment d'une phrase par défaut :
python3 predict.py
Ou en spécifiant votre propre phrase :
python3 predict.py "This movie was spectacular, I really enjoyed the acting and the plot."
python3 predict.py "Terrible acting, extremely boring storyline and a waste of time."
Fonctionnement du CI/CD (GitHub Actions)
Lorsqu'un commit est poussé sur la branche main :
- Un runner GitHub Actions (Ubuntu) démarre.
- Les dépendances Python sont installées depuis
requirements.txt. - Le script
train.pys'exécute pour ré-entraîner le modèle sur le dataset présent dans le dépôt et générer les artifacts mis à jour. - Les métriques d'entraînement et de test sont affichées dans les logs de l'Action.
- Si l'entraînement réussit, le pipeline utilise la bibliothèque
huggingface_hubet le secret de dépôtHF_TOKENpour uploader automatiquement tous les fichiers du dossiermodel/ainsi que leREADME.mdvers le Hugging Face HubMaayZz/imdb-sentiment-nn.
- Downloads last month
- 33