🎯 Objectif du Projet
Développer un système d'analyse de sentiments capable de:
- Classifier les sentiments en français et langues africaines
- Fonctionner avec des données limitées (few-shot learning)
- Être déployable via API REST
- Supporter plusieurs modèles de langue
🔍 Problématique
L'analyse de sentiments est bien développée pour les langues à ressources riches (anglais, français), mais pose des défis pour les langues africaines en raison du manque de données annotées.
💻 Architecture Technique
Backend
- Framework: FastAPI pour l'API REST
- Modèles: BERT multilingue fine-tuné
- Base de données: PostgreSQL pour les logs
- Cache: Redis pour les prédictions fréquentes
Frontend (Demo)
- React.js pour l'interface utilisateur
- Axios pour les appels API
- Tailwind CSS pour le design
Déploiement
- Docker & Docker Compose
- CI/CD: GitHub Actions
- Hosting: Heroku / Digital Ocean
📊 Dataset
- Français: 10 000 tweets annotés
- Sources: Twitter API, actualités
- Classes: Positif, Négatif, Neutre
- Augmentation: Back-translation, paraphrases
🧠 Modèles Utilisés
-
BERT Multilingue
- Base:
bert-base-multilingual-cased - Fine-tuning sur corpus français/africain
- F1-score: 0.87
- Base:
-
CamemBERT (Français)
- Spécialisé pour le français
- F1-score: 0.91
-
Ensemble Model
- Combinaison des deux modèles
- Meilleurs résultats globaux
📈 Résultats
| Modèle | Précision | Rappel | F1-Score | |--------|-----------|--------|----------| | BERT Multilingue | 0.85 | 0.84 | 0.87 | | CamemBERT | 0.90 | 0.89 | 0.91 | | Ensemble | 0.91 | 0.90 | 0.92 |
🚀 Fonctionnalités
- ✅ Analyse de sentiments en temps réel
- ✅ Support multilingue (FR, EN + langues africaines)
- ✅ API REST documentée (Swagger)
- ✅ Interface web de démonstration
- ✅ Batch processing pour grandes quantités
- ✅ Export des résultats (CSV, JSON)
💡 Innovation
- Transfer Learning: utilisation de modèles pré-entraînés
- Few-shot Learning: apprentissage avec peu de données
- Adaptation aux langues africaines: techniques spéciales
🔧 Installation & Utilisation
# Cloner le repository
git clone https://github.com/zoom-BT/sentiment-analysis.git
# Installation des dépendances
pip install -r requirements.txt
# Lancer l'API
uvicorn app.main:app --reload
# Utilisation via curl
curl -X POST "http://localhost:8000/predict" \
-H "Content-Type: application/json" \
-d '{"text": "Ce film est excellent!"}'
📚 Documentation
Documentation complète disponible sur ReadTheDocs
🎓 Apprentissages
- Maîtrise de PyTorch et Transformers
- Architecture d'API REST robuste
- Déploiement de modèles ML en production
- Gestion de projets ML end-to-end
🔮 Améliorations Futures
- [ ] Support de plus de langues africaines
- [ ] Détection de sarcasme
- [ ] Analyse d'aspects (aspect-based sentiment)
- [ ] Interface mobile
- [ ] API GraphQL
🤝 Contributions
Les contributions sont bienvenues! Voir CONTRIBUTING.md
📄 Licence
MIT License - voir le fichier LICENSE