Système automatisé d'analyse de sentiments clients basé sur le Machine Learning et le NLP (Natural Language Processing). Ce projet permet de classifier automatiquement les avis clients en sentiments Positifs ou Négatifs avec une précision de 98,07%.
- 🤖 Classification automatique : Analyse de sentiments en temps réel
- 📊 Dashboard interactif : Visualisation des statistiques et tendances
- 📝 Historique des prédictions : Suivi complet de toutes les analyses
- 🔔 Monitoring réactif : Alertes automatiques si ratio négatif > seuil critique
- 🚀 Performance optimale : 98,07% d'accuracy avec Linear SVM
- ⚡ Temps de réponse : < 100ms par prédiction
Ce projet a été développé dans le cadre d'un projet de Machine Learning et NLP.
sentiment-analysis/
│
├── app.py # Application Flask principale
├── config.py # Configuration de l'app
├── run.py # Script de lancement
├── requirements.txt # Dépendances Python
├── nixpacks.toml # Configuration pour le déploiement (Railway/Render)
├── Procfile # Commande pour serveur Gunicorn
├── .gitattributes # Configuration Git LFS (pour les .pkl)
│
├── Data/
│ └── raw/
│ └── processed/
│ └── vectorization_objects.pkl
│
├── models/
│ └── final_optimized_model.pkl
│
└── templates/ # Dossier des vues HTML
├── base.html
├── index.html
├── history.html
├── stats.html
└── about.html
- Python 3.8+ (recommandé : Python 3.9 ou 3.10)
- pip (gestionnaire de paquets Python)
- virtualenv (recommandé pour isolation)
git clone https://github.com/votre-username/sentiment-analysis.git
cd sentiment-analysisLinux / macOS :
python3 -m venv venv
source venv/bin/activateWindows :
python -m venv venv
venv\Scripts\activatepip install --upgrade pip
pip install -r requirements.txt
⚠️ Note importante : Les packagesgensimettextblobdoivent être installés en dernier comme spécifié dansrequirements.txt.
Après l'installation, téléchargez les ressources nécessaires pour TextBlob :
python -m textblob.download_corporaSi vous utilisez NLTK directement, téléchargez également :
import nltk
nltk.download('stopwords')
nltk.download('wordnet')
nltk.download('punkt')Créez un fichier .env pour les variables d'environnement :
# .env
FLASK_APP=app.py
FLASK_ENV=development
SECRET_KEY=votre_clé_secrète_ici
DATABASE_URI=sqlite:///data/predictions.dbpython app.pyL'application sera accessible à l'adresse : http://localhost:5000
# Étapes automatisées :
1. Conversion en minuscules
2. Suppression ponctuation et caractères spéciaux
3. Tokenisation
4. Retrait des stopwords
5. Lemmatisation (WordNet)
6. Gestion des négations (not_good → single token)# Paramètres optimisés :
- max_features: 10,000
- min_df: 5
- max_df: 0.7
- ngram_range: (1, 2) # Unigrammes + Bigrammes# Hyperparamètres optimaux (GridSearchCV) :
- C: 1.0
- kernel: 'linear'
- class_weight: None- Flask 3.1.2 : Framework web léger et flexible
- Werkzeug 3.1.3 : WSGI utilities
- Jinja2 3.1.6 : Moteur de templates
- Gunicorn 21.2.0 : Serveur WSGI pour production
- scikit-learn 1.6.1 : Bibliothèque ML principale
- numpy 2.1.3 : Calculs numériques
- pandas 2.2.3 : Manipulation de données
- scipy 1.15.2 : Algorithmes scientifiques
- joblib 1.4.2 : Sérialisation des modèles
- gensim : Word2Vec et modèles de topics
- textblob : Analyse de sentiments et POS tagging
- requests 2.32.3 : Requêtes HTTP
- python-dateutil 2.9.0 : Manipulation de dates
- pytz 2025.1 : Gestion des fuseaux horaires
Ce projet est le fruit d'une collaboration passionnée entre :
- Akilou Illa Abdourazak : Abdourazak01
- Yassine Boumhand : Yboumhand
Les contributions sont les bienvenues ! Voici comment contribuer :
- Fork le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'Add AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
N'hésitez pas à lui donner une ⭐ sur GitHub !
Dernière mise à jour : 7 Février 2025 Version : 1.0.0