{"id":29580269,"url":"https://github.com/dona-eric/veritaai","last_synced_at":"2025-07-19T18:32:20.949Z","repository":{"id":299008525,"uuid":"1001808671","full_name":"dona-eric/VeritaAI","owner":"dona-eric","description":"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. ","archived":false,"fork":false,"pushed_at":"2025-07-10T16:35:21.000Z","size":163746,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-10T19:45:23.218Z","etag":null,"topics":["data-science","data-visualization","fake-news","machine-learning","machine-learning-algorithms","mlflow","mlflow-sklearn","nltk"],"latest_commit_sha":null,"homepage":"http://127.0.0.1:500/0/experiment","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dona-eric.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-14T04:31:17.000Z","updated_at":"2025-07-10T16:35:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"f2293c05-ec03-42c7-95a4-213394d8a95a","html_url":"https://github.com/dona-eric/VeritaAI","commit_stats":null,"previous_names":["dona-eric/system-detection-of-the-fake-and-true-news","dona-eric/veritaai"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dona-eric/VeritaAI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dona-eric%2FVeritaAI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dona-eric%2FVeritaAI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dona-eric%2FVeritaAI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dona-eric%2FVeritaAI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dona-eric","download_url":"https://codeload.github.com/dona-eric/VeritaAI/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dona-eric%2FVeritaAI/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265986225,"owners_count":23860004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-science","data-visualization","fake-news","machine-learning","machine-learning-algorithms","mlflow","mlflow-sklearn","nltk"],"created_at":"2025-07-19T18:31:42.149Z","updated_at":"2025-07-19T18:32:20.941Z","avatar_url":"https://github.com/dona-eric.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔍 VeritaAI - Système de Détection de Fausses et Vraies Nouvelles\n\n![Python](https://img.shields.io/badge/python-v3.8+-blue.svg)\n![MLflow](https://img.shields.io/badge/MLflow-tracking-orange.svg)\n![License](https://img.shields.io/badge/license-MIT-green.svg)\n![Status](https://img.shields.io/badge/status-active-success.svg)\n![Sklearn](https://img.shields.io/badge/sklearn-red.svg)\n\n## 📋 Table des matières\n\n- [🎯 Aperçu du projet](#-aperçu-du-projet)\n- [🚀 Fonctionnalités](#-fonctionnalités)\n- [🏗️ Architecture](#-architecture)\n- [🔧 Technologies utilisées](#-technologies-utilisées)\n- [📊 Modèles et performances](#-modèles-et-performances)\n- [🛠️ Installation](#-installation)\n- [💻 Utilisation](#-utilisation)\n- [📈 Suivi des expériences](#-suivi-des-expériences)\n- [🎯 Résultats](#-résultats)\n- [🚫 Limitations](#-limitations)\n- [🔮 Perspectives](#-perspectives)\n- [👥 Contribution](#-contribution)\n- [📄 Licence](#-licence)\n\n---\n\n## 🎯 Aperçu du projet\n\nhttp://github.com/dona-eric/VeritaAI/blob/master/VeritaApp/assets/verita.png\n\n\nLa 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.\n\n**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.\n\n---\n### 🌟 Objectifs principaux\n\n- Détecter automatiquement les fausses informations\n- Fournir une interface intuitive pour l'analyse de textes\n- Offrir un système de scoring de crédibilité\n- Assurer une traçabilité complète des expériences ML\n\n---\n\n## 🚀 Mise en Place Technique\n\nCette section décrit les étapes clés de la mise en œuvre technique du projet.\n\n### ✅ Fonctionnalités actuelles\n\n- **Détection automatique** : Classification binaire (vrai/faux)\n- **Interface utilisateur** : Application web Streamlit intuitive\n- **Suivi MLflow** : Gestion complète des expériences\n- **Modèles multiples** : Comparaison de 4 algorithmes différents\n- **Prétraitement avancé** : Nettoyage et vectorisation TF-IDF\n- **Devéloppement API** : Développé une api qui consomme les modèles de prédiction et affiche les résultats\n\n### 🔄 En développement\n\n- API REST pour intégration externe\n- Détection multilingue\n- Analyse de sentiment\n- Système d'explication des prédictions\n\n---\n\n## 🏗️ Architecture\n\n```mermaid\ngraph TB\n    A[NewsAPI] --\u003e B[Python + Scheduler]\n    B --\u003e C[Base PostgreSQL Supabase]\n    C --\u003e D[Prétraitement \u0026 Vectorisation]\n    D --\u003e E[Modélisation ML]\n    E --\u003e F[MLflow Tracking]\n    F --\u003e G[API Web FastAPI]\n    G --\u003e H[Interface Streamlit]\n    H --\u003e I[Dockerfile \u0026 Docker-compose]\n```\n\n### 🔄 Flux de données\n\n1. **Collecte** : Récupération d'articles via NewsAPI et Guardian\n2. **Stockage** : Sauvegarde structurée en base PostgreSQL\n3. **EDA** : Analyse exploratoire des données\n3. **Prétraitement** : Nettoyage et vectorisation TF-IDF\n4. **Entraînement** : Modèles ML avec suivi MLflow\n5. **Evaluation** : Évaluer les modèles avec une validation croisée et sélection du meilleur modèle\n5. **Mise en Production** : API web et interface utilisateur\n\n---\n\n## 🔧 Technologies utilisées\n\n### 🐍 Backend \u0026 ML\n- **Python 3.8+** : Langage principal\n- **Scikit-learn** : Modèles de machine learning\n- **XGBOOST**\n- **MLflow** : Suivi et Gestion des expériences\n- **Pandas, NumPy, Matplotlib** : Manipulation de données et Visualisation des données\n- **NLTK** : Traitement du langage naturel\n\n### 🌐 Frontend \u0026 API\n- **Streamlit** : Interface utilisateur\n- **FastAPI** : API REST\n- **CSS/JavaScript** : Interface web\n\n### 🗄️ Base de données\n- **PostgreSQL** : Stockage principal\n- **SQLAlchemy** : ORM Python\n\n---\n\n**Visualisation**\n![EDA](https://github.com/dona-eric/VeritaAI/blob/master/mlflow_plots/data_analysis.png)\n\n## 📊 Modèles et performances\n\n### 🤖 Modèles entraînés\n\n| Modèle | Accuracy | F1 Score |CV scores| Temps d'entraînement | Avantages | Rappel | AUC-ROC |\n|--------|----------|----------|---------|----------------------|-----------|---------|---------|\n| **MultinomialNB** | **97.88%** | **97.88%** | 98.00% | 6.4s | Simple,efficace sur texte | 97.98% | 99.84%|\n| **Logistic Regression.** | 98.7% | 98.7% | 99.95% | 3.1min | Robuste, interprétable | 99.97% | 99.99%|\n| **SVM (RBF)** | 99.3% | 99.3% | 🐌 Lent | Puissant, relations non-linéaires |\n| **LinearSVC** | **99.98%** | **99.98%** |**99.97%** | **18.9s** | **Meilleur équilibre** | 99.978% | 99.998%|\n| **RandomForest** | 98.91% | 98.91% | 98.95% | 2.3min | Lent | 98.91% | 99.9992%|\n| **XGboost** | 99.967% | 99.967% | 99.956% | 21.3min | Trop Lent | 99.967% | 99.999% |\n\n### 🏆 Modèles retenus : **LinearSVC**\n\n**LinearSVC** a été sélectionné comme modèle de production pour :\n- **Meilleurs Paramètres du modèles** : {\"C\":1, \"loss\":\"squared_hinge\", \"max_iter\":1000, \"tool\":0.001}\n- **Performance exceptionnelle** : 99.5% de précision\n- **Rapidité** : Temps d'inférence optimal\n- **Scalabilité** : Adapté aux grandes volumes de données\n- **Robustesse** : Excellent sur vecteurs TF-IDF\n\n---\n**Courbe d'apprentissage**\n![Learning Curve](https://github.com/dona-eric/VeritaAI/blob/master/mlflow_plots/learning_curve_linearsvc.png)\n\n**Courbe ROC-AUC**\n![AUC-ROC](https://github.com/dona-eric/VeritaAI/blob/master/mlflow_plots/roc_curve_linearsvc.png)\n\n## 🛠️ Installation\n\n### 📋 Prérequis\n\n- Python 3.8+\n- pip ou conda\n- PostgreSQL (optionnel)\n\n### 🔧 Installation rapide\n\n```bash\n# Cloner le repository\ngit clone https://github.com/dona-eric/VeritaAI.git\ncd VeritaAI\n\n# Créer un environnement virtuel\npython -m venv venv\nsource venv/bin/activate  # Linux/Mac\n# ou\nvenv\\Scripts\\activate  # Windows\n\n# Installer les dépendances\npip install -r requirements.txt\n\n# Initialiser la base de données \npython3 connect_database.py\n# Pour lancer le pipeline de collecte de données et de sauvegarde \npython3 Data_collect/pipeline_connection_database_collect_data/pipeline_collect_data.py\n```\n\n### 📦 Dépendances principales\n\n```txt\nstreamlit\u003e=1.28.0\nscikit-learn\u003e=1.3.0\nmlflow\u003e=2.7.0\npandas\u003e=1.5.0\nnumpy\u003e=1.24.0\nnltk\u003e=3.8\npsycopg2-binary\u003e=2.9.0\nscheduler\nuvicorn\nsqlalchemy\n```\n\n---\n\n## 💻 Utilisation\n\n### 🚀 Lancement rapide\n\n```bash\n# Lancer l'interface Streamlit\nstreamlit run VeritaApp/verita.py\n\n# Lancer MLflow UI \nmlflow ui\n\n# Entraîner les modèles\ncd Final_Analysis\npython3 modelisation.py   #pour la modelisation\n```\n\n### 🎯 Utilisation de l'interface\n\n1. **Sélection du rôle** : Choisir entre User, Admin, Super-admin\n2. **Authentification** : Se connecter avec ses identifiants\n3. **Analyse** : Saisir un texte pour analyse\n4. **Résultats** : Consulter la prédiction et le score de confiance\n\n### 📝 Exemple d'utilisation\n\n```python\nfrom veritaai import FakeNewsDetector\n\n# Initialiser le détecteur\ndetector = FakeNewsDetector()\n\n# Analyser un texte\ntext = \"Votre article à analyser...\"\nresult = detector.predict(text)\n\nprint(f\"Prédiction: {result['prediction']}\")\nprint(f\"Confiance: {result['confidence']:.2%}\")\n```\n\n---\n\n## 📈 Suivi des expériences\n\n### 🔍 MLflow Tracking\n\nToutes les expériences sont trackées avec MLflow :\n\n```python\nimport mlflow\n\n# Démarrer une expérience\nwith mlflow.start_run():\n    # Enregistrer les métriques\n    mlflow.log_metric(\"accuracy\", 0.995)\n    mlflow.log_metric(\"f1_score\", 0.995)\n    \n    # Enregistrer le modèle\n    mlflow.sklearn.log_model(model, \"model\")\n```\n\n### 📊 Interface MLflow\n\nAccéder à l'interface de suivi :\n```bash\nmlflow ui\n# Ouvrir http://127.0.0.1:5000\n```\n\n![MLflow Interface](https://github.com/dona-eric/VeritaAI/blob/master/mlflow_plots/mlflow.png)\n\n---\n\n## 🎯 Résultats\n\n### 📈 Métriques clés\n\n- **Accuracy globale** : 99.5%\n- **Précision** : 99.4%\n- **Rappel** : 99.6%\n- **F1-Score** : 99.5%\n\n### 🎭 Matrice de confusion (LinearSVC)\n\n```\n             Prédiction\nRéel      Faux   Vrai\nFaux     4695     0\nVrai       2   4426\n```\n![Matrice Confusion](https://github.com/dona-eric/VeritaAI/blob/master/mlflow_plots/confusion_matrix_linearsvc.png)\n### 🔍 Analyse des erreurs\n\n- **Faux positifs** : 2 articles (0.5%)\n- **Faux négatifs** : 0 articles (0.4%)\n- **Principaux défis** : Articles satiriques, opinions subjectives\n\n---\n\n## 🚫 Limitations\n\n### ⚠️ Limitations actuelles\n\n- **Langue** : Uniquement en anglais pour le moment\n- **Contexte** : Classification binaire simplifiée\n- **Données** : Dépendant de la qualité du dataset d'entraînement\n- **Biais** : Possible biais dans les sources d'entraînement\n- **Pas de compréhension sémantique profonde** :\nLes modèles classiques comme les LinearSVC, RandomForest, ou même certains modèles de boosting, ne comprennent pas le contexte global. Ils utilisent principalement :\n- [ ] des mots fréquents\n- [ ] leur cooccurrence\n- [ ] la structure du texte.\n\nMais ils ne \"comprennent\" pas que le journaliste parle de fake news , ce qui est parfaitement légitime dans un article informatif.\n\n- [ ]Déséquilibre du dataset d'entraînement :\nMon 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.\n----\n\n### 🔄 Améliorations prévues\n\n- Support multilingue\n- Classification à plusieurs niveaux\n- Détection de biais\n- Amélioration continue du dataset\n\n---\n\n## 🔮 Perspectives\n\n### 🚀 Roadmap\n\n#### Phase 1 (En cours)\n- [ ] API REST complète\n- [ ] Système d'authentification avancé\n- [ ] Interface d'administration\n\n#### Phase 2 (Prochaine)\n- [ ] Support multilingue\n- [ ] Analyse de sentiment\n- [ ] Utilisation des grands modèles de langues LLMs(Bert, Roberta)\n\n#### Phase 3 (Future)\n- [ ] Mettre en place une architecture RAG multisources\n- [ ] Détection en temps réel\n- [ ] Intégration réseaux sociaux et divers sources pour plus d'apprentissage\n\n---\n\n### Architecture du système proposé\n\nPour une approche plus structurée et cohérente pour le développement :\n\n- [ ] Phase 1 : Fondations sémantiques\n- 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.\n- 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.\n- [ ] Phase 2 : Système de récupération et vérification\n- Base de connaissances de référence : Construire ou intégrer des sources fiables (Wikipedia, bases factuelles, archives journalistiques vérifiées).\n- Module RAG spécialisé : Système de récupération qui trouve les sources pertinentes pour chaque claim identifié dans l'article.\n- Comparateur sémantique : Algorithme qui compare le sens des claims avec les sources de référence, pas seulement la similarité lexicale.\n- [ ] Phase 3 : Raisonnement et classification\n- Moteur de cohérence : Vérifie la cohérence interne de l'article (dates, faits, logique).\n- Système de scoring multidimensionnel : Évalue la crédibilité selon plusieurs critères (sources, cohérence, style, métadonnées).\n\n Elle se présente sous cette forme (voir diagramme):\n\n ```mermaid\ngraph TB\n    A[Text User] --\u003e B[DistilBERT/BERT] \u003c-- C[Semantic Comprehension]\n    B --\u003e C[Engine Search]\n    C --\u003e D[Engine Comparaison]\n    D --\u003e E[Scoring Fiability] \u003c-- E[Sources Fiables]\n    E --\u003e F[Result]\n    F --\u003e G[API Web FastAPI]\n    G --\u003e H[Interface Streamlit]\n```\n\n## 👥 Contribution\n\n### 🤝 Comment contribuer\n\n1. **Fork** le projet\n2. **Créer** une branche feature (`git checkout -b feature/FeatureVeritaAI`)\n3. **Commit** vos changements (`git commit -m 'Add FeatureVeritaAI'`)\n4. **Push** vers la branche (`git push origin feature/FutureVeritaAi`)\n5. **Ouvrir** une Pull Request\n\n### 📝 Guidelines\n\n- Respecter le style de code (PEP 8)\n- Ajouter des tests pour les nouvelles fonctionnalités\n- Documenter les changements\n\n---\n\n## 📄 Licence\n\nCe projet est sous licence MIT. Voir le fichier [LICENSE](LICENSE) pour plus de détails.\n\n---\n\n## 👨‍💻 Auteur\n\n**KOULODJI Dona Eric**\n- 🐙 GitHub: [@dona-eric](https://github.com/dona-eric)\n- 💼 LinkedIn: [dona-erick](https://linkedin.com/in/dona-erick)\n- 📧 Email: donaerickoulodji@gmail.com\n\n---\n\n## 🙏 Remerciements\n\n- **Équipe MLflow** pour l'excellent framework de tracking\n- **Communauté Streamlit** pour l'interface intuitive\n- **Contributeurs open source** pour les outils utilisés\n\n---\n\n## 📞 Support\n\nSi vous avez des questions ou des problèmes :\n\n1. 📚 Consultez la [documentation](docs/)\n2. 🐛 Ouvrez une [issue](https://github.com/dona-eric/veritaai/issues)\n3. 💬 Rejoignez nos [discussions](https://github.com/dona-eric/veritaai/discussions)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\n    \u003cstrong\u003e⭐ N'hésitez pas à mettre une étoile si ce projet vous a aidé ! ⭐\u003c/strong\u003e\n  \u003c/p\u003e\n  \u003cp\u003e\n    Made by \u003ca href=\"https://github.com/dona-eric\"\u003eKOULODJI Dona Eric\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdona-eric%2Fveritaai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdona-eric%2Fveritaai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdona-eric%2Fveritaai/lists"}