Ce dépôt présente mon projet de fin d'études en Master Data Science, visant à concevoir et déployer une solution complète d'analyse automatisée d'avis clients pour Trustpilot.
L'objectif du projet est de fournir aux entreprises clientes (avec ici un cas d'usage centré sur Amazon) un outil puissant pour extraire de la valeur d'une grande volumétrie de textes via le Natural Language Processing (NLP).
🔗 Accéder à l'application interactive Streamlit
Trustpilot souhaite intégrer un module IA d'analyse de reviews. Notre client fictif (Responsable Marketing chez Amazon) a besoin de comprendre rapidement :
- La polarité d'un avis (Positif ou Négatif).
- Le thème principal abordé (Performances du produit, Service Client, etc.).
Pour simuler les contraintes de volumétrie industrielles de Trustpilot, le projet a été construit sur le dataset massif Amazon Reviews Polarity (Kaggle), comprenant plus de 4 millions d'avis textes.
Le cycle de vie complet de la donnée a été traité, de l'exploration à l'entraînement de modèles Deep Learning. Le code documenté se trouve dans le dossier Code python/.
- Analyse exploratoire des données (EDA) de millions d'avis.
- Étude de la distribution des longueurs de textes et équilibrage des classes.
- Génération de Wordclouds et analyse des n-grammes pour extraire les premiers insights linguistiques.
Deux approches ont été comparées pour prédire la polarité d'un commentaire :
- Machine Learning Classique (Baseline) :
- Vectorisation TF-IDF.
- Entraînement et comparaison d'algorithmes : SVM Linéaire, Random Forest, XGBoost.
- Deep Learning (State of the Art) :
- Fine-tuning d'un modèle Transformer de type DistilBERT via TensorFlow / Keras.
- Optimisation des hyperparamètres et gestion de la mémoire liée à l'immense dataset.
💡 Un accent fort a été mis sur l'interprétabilité des modèles (Feature importance, sélection de variables RFE, et utilisation de la librairie LIME pour expliquer localement les prédictions de DistilBERT).
Pour extraire les thématiques sans labels prédéfinis :
- Utilisation de Sentence-BERT pour encoder les reviews en représentations vectorielles denses (Embeddings sémantiques).
- Algorithme de clustering KMeans appliqué sur ces embeddings.
- Analyse des clusters pour assigner des labels métiers pertinents (ex: Product performance, Entertainment, Technology).
Un microservice d'inférence a été développé pour exposer les modèles en production :
- API développée avec FastAPI.
- Architecture modulaire permettant le chargement de DistilBERT et KMeans.
- L'API est encapsulable via Docker et optimisée pour des requêtes CPU.
Dossier : services/api_inference/
Une architecture front-end interactive a été créée pour les utilisateurs finaux :
- Dashboard d'Insights : Visualisation des résultats de l'EDA et de l'interprétabilité.
- Test interactif : Classification et extraction de thème en temps réel sur des avis rédigés par l'utilisateur ou tirés du dataset de test.
- Déploiement Cloud : Application entièrement accessible en ligne via Streamlit Community Cloud.
Dossier : streamlit/
📦 trustpilot-reviews
┣ 📂 Code python/ # Notebooks Jupyter (EDA, TF-IDF, DistilBERT, KMeans)
┣ 📂 models/ # Modèles pré-entraînés exportés (KMeans, labels)
┣ 📂 services/
┃ ┗ 📂 api_inference/ # Code source de l'API FastAPI et Dockerfile
┣ 📂 streamlit/ # Code source de l'application interactive Streamlit
┣ 📜 Rapport final.pdf # Rapport complet et détaillé de l'étude (Contexte, Modélisation, Résultats)
┣ 📜 requirements.txt # Dépendances Python
┗ 📜 README.md # Documentation globale du projet
- Langage : Python 3
- Data Science : Pandas, NumPy, Scikit-Learn
- NLP & Deep Learning : TensorFlow, HuggingFace 🤗 (Transformers, Sentence-Transformers)
- MLOps / Backend : FastAPI, Uvicorn, Docker
- Frontend : Streamlit