Skip to content

Dans ce contexte, il devient crucial de développer des systèmes intelligents capables de détecter automatiquement ces fausses informations. Ce projet a pour objectif de concevoir un système de détection de fausses nouvelles à l'aide d'algorithmes de machine learning.

Notifications You must be signed in to change notification settings

dona-eric/VeritaAI

Repository files navigation

🔍 VeritaAI - Système de Détection de Fausses et Vraies Nouvelles

Python MLflow License Status Sklearn

📋 Table des matières


🎯 Aperçu du projet

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.


🌟 Objectifs principaux

  • 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

🚀 Mise en Place Technique

Cette section décrit les étapes clés de la mise en œuvre technique du projet.

✅ Fonctionnalités actuelles

  • 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

🔄 En développement

  • API REST pour intégration externe
  • Détection multilingue
  • Analyse de sentiment
  • Système d'explication des prédictions

🏗️ Architecture

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]
Loading

🔄 Flux de données

  1. Collecte : Récupération d'articles via NewsAPI et Guardian
  2. Stockage : Sauvegarde structurée en base PostgreSQL
  3. EDA : Analyse exploratoire des données
  4. Prétraitement : Nettoyage et vectorisation TF-IDF
  5. Entraînement : Modèles ML avec suivi MLflow
  6. Evaluation : Évaluer les modèles avec une validation croisée et sélection du meilleur modèle
  7. Mise en Production : API web et interface utilisateur

🔧 Technologies utilisées

🐍 Backend & ML

  • 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

🌐 Frontend & API

  • Streamlit : Interface utilisateur
  • FastAPI : API REST
  • CSS/JavaScript : Interface web

🗄️ Base de données

  • PostgreSQL : Stockage principal
  • SQLAlchemy : ORM Python

Visualisation EDA

📊 Modèles et performances

🤖 Modèles entraînés

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%

🏆 Modèles retenus : LinearSVC

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

Courbe d'apprentissage Learning Curve

Courbe ROC-AUC AUC-ROC

🛠️ Installation

📋 Prérequis

  • Python 3.8+
  • pip ou conda
  • PostgreSQL (optionnel)

🔧 Installation rapide

# 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.py

📦 Dépendances principales

streamlit>=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

💻 Utilisation

🚀 Lancement rapide

# 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

🎯 Utilisation de l'interface

  1. Sélection du rôle : Choisir entre User, Admin, Super-admin
  2. Authentification : Se connecter avec ses identifiants
  3. Analyse : Saisir un texte pour analyse
  4. Résultats : Consulter la prédiction et le score de confiance

📝 Exemple d'utilisation

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%}")

📈 Suivi des expériences

🔍 MLflow Tracking

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")

📊 Interface MLflow

Accéder à l'interface de suivi :

mlflow ui
# Ouvrir http://127.0.0.1:5000

MLflow Interface


🎯 Résultats

📈 Métriques clés

  • Accuracy globale : 99.5%
  • Précision : 99.4%
  • Rappel : 99.6%
  • F1-Score : 99.5%

🎭 Matrice de confusion (LinearSVC)

             Prédiction
Réel      Faux   Vrai
Faux     4695     0
Vrai       2   4426

Matrice Confusion

🔍 Analyse des erreurs

  • Faux positifs : 2 articles (0.5%)
  • Faux négatifs : 0 articles (0.4%)
  • Principaux défis : Articles satiriques, opinions subjectives

🚫 Limitations

⚠️ Limitations actuelles

  • 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.

🔄 Améliorations prévues

  • Support multilingue
  • Classification à plusieurs niveaux
  • Détection de biais
  • Amélioration continue du dataset

🔮 Perspectives

🚀 Roadmap

Phase 1 (En cours)

  • API REST complète
  • Système d'authentification avancé
  • Interface d'administration

Phase 2 (Prochaine)

  • Support multilingue
  • Analyse de sentiment
  • Utilisation des grands modèles de langues LLMs(Bert, Roberta)

Phase 3 (Future)

  • 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

Architecture du système proposé

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]
Loading

👥 Contribution

🤝 Comment contribuer

  1. Fork le projet
  2. Créer une branche feature (git checkout -b feature/FeatureVeritaAI)
  3. Commit vos changements (git commit -m 'Add FeatureVeritaAI')
  4. Push vers la branche (git push origin feature/FutureVeritaAi)
  5. Ouvrir une Pull Request

📝 Guidelines

  • Respecter le style de code (PEP 8)
  • Ajouter des tests pour les nouvelles fonctionnalités
  • Documenter les changements

📄 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.


👨‍💻 Auteur

KOULODJI Dona Eric


🙏 Remerciements

  • Équipe MLflow pour l'excellent framework de tracking
  • Communauté Streamlit pour l'interface intuitive
  • Contributeurs open source pour les outils utilisés

📞 Support

Si vous avez des questions ou des problèmes :

  1. 📚 Consultez la documentation
  2. 🐛 Ouvrez une issue
  3. 💬 Rejoignez nos discussions

⭐ N'hésitez pas à mettre une étoile si ce projet vous a aidé ! ⭐

Made by KOULODJI Dona Eric

About

Dans ce contexte, il devient crucial de développer des systèmes intelligents capables de détecter automatiquement ces fausses informations. Ce projet a pour objectif de concevoir un système de détection de fausses nouvelles à l'aide d'algorithmes de machine learning.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published