- 🎯 Aperçu du projet
- 🚀 Fonctionnalités
- 🏗️ Architecture
- 🔧 Technologies utilisées
- 📊 Modèles et performances
- 🛠️ Installation
- 💻 Utilisation
- 📈 Suivi des expériences
- 🎯 Résultats
- 🚫 Limitations
- 🔮 Perspectives
- 👥 Contribution
- 📄 Licence
http://github.com/dona-eric/VeritaAI/blob/master/VeritaApp/assets/verita.png
La prolifération des fausses nouvelles ("fake news") représente une menace croissante pour l'information et la société. Ces contenus trompeurs peuvent manipuler l'opinion publique et semer la désinformation.
Verita est un projet conçu pour adresser ce problème en développant un système intelligent capable de détecter automatiquement les fausses nouvelles à l'aide d'algorithmes de machine learning. J'ai intégré MLflow pour un suivi, une comparaison et une gestion efficaces des expériences de modèles, assurant ainsi la reproductibilité et l'optimisation des performances.
- Détecter automatiquement les fausses informations
- Fournir une interface intuitive pour l'analyse de textes
- Offrir un système de scoring de crédibilité
- Assurer une traçabilité complète des expériences ML
Cette section décrit les étapes clés de la mise en œuvre technique du projet.
- Détection automatique : Classification binaire (vrai/faux)
- Interface utilisateur : Application web Streamlit intuitive
- Suivi MLflow : Gestion complète des expériences
- Modèles multiples : Comparaison de 4 algorithmes différents
- Prétraitement avancé : Nettoyage et vectorisation TF-IDF
- Devéloppement API : Développé une api qui consomme les modèles de prédiction et affiche les résultats
- API REST pour intégration externe
- Détection multilingue
- Analyse de sentiment
- Système d'explication des prédictions
graph TB
A[NewsAPI] --> B[Python + Scheduler]
B --> C[Base PostgreSQL Supabase]
C --> D[Prétraitement & Vectorisation]
D --> E[Modélisation ML]
E --> F[MLflow Tracking]
F --> G[API Web FastAPI]
G --> H[Interface Streamlit]
H --> I[Dockerfile & Docker-compose]
- Collecte : Récupération d'articles via NewsAPI et Guardian
- Stockage : Sauvegarde structurée en base PostgreSQL
- EDA : Analyse exploratoire des données
- Prétraitement : Nettoyage et vectorisation TF-IDF
- Entraînement : Modèles ML avec suivi MLflow
- Evaluation : Évaluer les modèles avec une validation croisée et sélection du meilleur modèle
- Mise en Production : API web et interface utilisateur
- Python 3.8+ : Langage principal
- Scikit-learn : Modèles de machine learning
- XGBOOST
- MLflow : Suivi et Gestion des expériences
- Pandas, NumPy, Matplotlib : Manipulation de données et Visualisation des données
- NLTK : Traitement du langage naturel
- Streamlit : Interface utilisateur
- FastAPI : API REST
- CSS/JavaScript : Interface web
- PostgreSQL : Stockage principal
- SQLAlchemy : ORM Python
| Modèle | Accuracy | F1 Score | CV scores | Temps d'entraînement | Avantages | Rappel | AUC-ROC |
|---|---|---|---|---|---|---|---|
| MultinomialNB | 97.88% | 97.88% | 98.00% | 6.4s | Simple,efficace sur texte | 97.98% | 99.84% |
| Logistic Regression. | 98.7% | 98.7% | 99.95% | 3.1min | Robuste, interprétable | 99.97% | 99.99% |
| SVM (RBF) | 99.3% | 99.3% | 🐌 Lent | Puissant, relations non-linéaires | |||
| LinearSVC | 99.98% | 99.98% | 99.97% | 18.9s | Meilleur équilibre | 99.978% | 99.998% |
| RandomForest | 98.91% | 98.91% | 98.95% | 2.3min | Lent | 98.91% | 99.9992% |
| XGboost | 99.967% | 99.967% | 99.956% | 21.3min | Trop Lent | 99.967% | 99.999% |
LinearSVC a été sélectionné comme modèle de production pour :
- Meilleurs Paramètres du modèles : {"C":1, "loss":"squared_hinge", "max_iter":1000, "tool":0.001}
- Performance exceptionnelle : 99.5% de précision
- Rapidité : Temps d'inférence optimal
- Scalabilité : Adapté aux grandes volumes de données
- Robustesse : Excellent sur vecteurs TF-IDF
- Python 3.8+
- pip ou conda
- PostgreSQL (optionnel)
# Cloner le repository
git clone https://github.com/dona-eric/VeritaAI.git
cd VeritaAI
# Créer un environnement virtuel
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows
# Installer les dépendances
pip install -r requirements.txt
# Initialiser la base de données
python3 connect_database.py
# Pour lancer le pipeline de collecte de données et de sauvegarde
python3 Data_collect/pipeline_connection_database_collect_data/pipeline_collect_data.pystreamlit>=1.28.0
scikit-learn>=1.3.0
mlflow>=2.7.0
pandas>=1.5.0
numpy>=1.24.0
nltk>=3.8
psycopg2-binary>=2.9.0
scheduler
uvicorn
sqlalchemy# Lancer l'interface Streamlit
streamlit run VeritaApp/verita.py
# Lancer MLflow UI
mlflow ui
# Entraîner les modèles
cd Final_Analysis
python3 modelisation.py #pour la modelisation- Sélection du rôle : Choisir entre User, Admin, Super-admin
- Authentification : Se connecter avec ses identifiants
- Analyse : Saisir un texte pour analyse
- Résultats : Consulter la prédiction et le score de confiance
from veritaai import FakeNewsDetector
# Initialiser le détecteur
detector = FakeNewsDetector()
# Analyser un texte
text = "Votre article à analyser..."
result = detector.predict(text)
print(f"Prédiction: {result['prediction']}")
print(f"Confiance: {result['confidence']:.2%}")Toutes les expériences sont trackées avec MLflow :
import mlflow
# Démarrer une expérience
with mlflow.start_run():
# Enregistrer les métriques
mlflow.log_metric("accuracy", 0.995)
mlflow.log_metric("f1_score", 0.995)
# Enregistrer le modèle
mlflow.sklearn.log_model(model, "model")Accéder à l'interface de suivi :
mlflow ui
# Ouvrir http://127.0.0.1:5000- Accuracy globale : 99.5%
- Précision : 99.4%
- Rappel : 99.6%
- F1-Score : 99.5%
Prédiction
Réel Faux Vrai
Faux 4695 0
Vrai 2 4426
- Faux positifs : 2 articles (0.5%)
- Faux négatifs : 0 articles (0.4%)
- Principaux défis : Articles satiriques, opinions subjectives
- Langue : Uniquement en anglais pour le moment
- Contexte : Classification binaire simplifiée
- Données : Dépendant de la qualité du dataset d'entraînement
- Biais : Possible biais dans les sources d'entraînement
- Pas de compréhension sémantique profonde : Les modèles classiques comme les LinearSVC, RandomForest, ou même certains modèles de boosting, ne comprennent pas le contexte global. Ils utilisent principalement :
- des mots fréquents
- leur cooccurrence
- la structure du texte.
Mais ils ne "comprennent" pas que le journaliste parle de fake news , ce qui est parfaitement légitime dans un article informatif.
- [ ]Déséquilibre du dataset d'entraînement : Mon dataset contient beaucoup de fake news au ton sensationnaliste, il est possible que ce type d'article soit trop proche dans le vocabulaire. De plus, le modèle peut ne pas avoir été exposé à des exemples de vrais articles qui parlent de fausses informations.
- Support multilingue
- Classification à plusieurs niveaux
- Détection de biais
- Amélioration continue du dataset
- API REST complète
- Système d'authentification avancé
- Interface d'administration
- Support multilingue
- Analyse de sentiment
- Utilisation des grands modèles de langues LLMs(Bert, Roberta)
- Mettre en place une architecture RAG multisources
- Détection en temps réel
- Intégration réseaux sociaux et divers sources pour plus d'apprentissage
Pour une approche plus structurée et cohérente pour le développement :
- Phase 1 : Fondations sémantiques
- Encodeur sémantique principal : Commencer avec BERT/RoBERTa fine-tuné pour la compréhension contextuelle des articles. Nous devrons l'entraîner sur des corpus spécialisés dans la détection de nuances sémantiques.
- Module de segmentation intelligente : Développer un système qui découpe les articles en segments cohérents (claims, arguments, preuves) plutôt qu'en phrases isolées.
- Phase 2 : Système de récupération et vérification
- Base de connaissances de référence : Construire ou intégrer des sources fiables (Wikipedia, bases factuelles, archives journalistiques vérifiées).
- Module RAG spécialisé : Système de récupération qui trouve les sources pertinentes pour chaque claim identifié dans l'article.
- Comparateur sémantique : Algorithme qui compare le sens des claims avec les sources de référence, pas seulement la similarité lexicale.
- Phase 3 : Raisonnement et classification
- Moteur de cohérence : Vérifie la cohérence interne de l'article (dates, faits, logique).
- Système de scoring multidimensionnel : Évalue la crédibilité selon plusieurs critères (sources, cohérence, style, métadonnées).
Elle se présente sous cette forme (voir diagramme):
graph TB
A[Text User] --> B[DistilBERT/BERT] <-- C[Semantic Comprehension]
B --> C[Engine Search]
C --> D[Engine Comparaison]
D --> E[Scoring Fiability] <-- E[Sources Fiables]
E --> F[Result]
F --> G[API Web FastAPI]
G --> H[Interface Streamlit]
- Fork le projet
- Créer une branche feature (
git checkout -b feature/FeatureVeritaAI) - Commit vos changements (
git commit -m 'Add FeatureVeritaAI') - Push vers la branche (
git push origin feature/FutureVeritaAi) - Ouvrir une Pull Request
- Respecter le style de code (PEP 8)
- Ajouter des tests pour les nouvelles fonctionnalités
- Documenter les changements
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
KOULODJI Dona Eric
- 🐙 GitHub: @dona-eric
- 💼 LinkedIn: dona-erick
- 📧 Email: donaerickoulodji@gmail.com
- Équipe MLflow pour l'excellent framework de tracking
- Communauté Streamlit pour l'interface intuitive
- Contributeurs open source pour les outils utilisés
Si vous avez des questions ou des problèmes :
- 📚 Consultez la documentation
- 🐛 Ouvrez une issue
- 💬 Rejoignez nos discussions
⭐ N'hésitez pas à mettre une étoile si ce projet vous a aidé ! ⭐
Made by KOULODJI Dona Eric




