Il faut créer l'environnement
python3 -m venv .venv
source .venv/bin/activateAvant de commencer, assurez-vous d’avoir installé et synchronisé toutes les dépendances du projet à l’aide de uv :
uv syncTélécharger le modèle
python -m spacy download en_core_web_smUtilisez le lien suivant pour télécharger le jeu de données :
👉 Fake and Real News Dataset – Kaggle
Après le téléchargement, placez les fichiers dans le répertoire racine du projet :
/Fake-News-Detect/
│
├── True.csv
└── Fake.csvCréez ensuite une structure de dossiers pour organiser vos données :
/Fake-News-Detect/
│
└── data/
├── raw/
└── processed/Pour extraire un nombre spécifique de lignes d’un fichier CSV (par exemple, pour un test rapide), utilisez la commande suivante :
head -n <n_lignes> input.csv > data/raw/output.csvRemplacez <n_lignes> par le nombre de lignes souhaité.
Lancez le script suivant pour traiter vos deux fichiers CSV (True.csv et Fake.csv) :
python process_data/pipeline.pyUne fois le traitement terminé, un fichier CSV final sera généré dans le dossier :
data/processed/Ce fichier fusionnera les deux sources et contiendra les colonnes suivantes :
| Colonnes | Description |
|---|---|
| article_id | Identifiant unique de l’article |
| chunk_id | Identifiant du segment (chunk) de texte |
| text | Contenu textuel de l’article |
| label | Classe de l’article : Fake ou True |
Tout se fait désormais en une seule commande via le pipeline principal :
python database/chroma_pipeline.pyCe script :
-
lit automatiquement le fichier data/processed/chunks.csv,
-
crée la collection fake_news_collection (si elle n’existe pas),
-
génère les embeddings pour chaque chunk,
-
insère les données dans la base par lots (batch_size=50 par défaut).
Après l’exécution, vérifiez le contenu de la base de données avec :
python database/check_db.pyCe script vous permettra de confirmer le nombre de chunks présents dans la collection.
Une fois la base configurée, vous pouvez lancer l’interface utilisateur avec Streamlit :
streamlit run interface/app.pyTerminal :
python rag_system/rag_pipeline.pyCette interface vous permettra d’entrer un texte et d’obtenir une prédiction au format suivant :
Résultat : Fake ou True
Explication : Raisonnement du modèle├── README.md
├── Dockerfile
├── chroma_db
├── data
│ ├── processed
│ │ └── chunks.csv
│ └── raw
│ ├── Fake.csv
│ └── True.csv
├── database
│ ├── __init__.py
│ ├── check_db.py
│ ├── chroma_pipeline.py
│ └── chroma_utils.py
├── interface
│ └── app.py
├── notebooks
| ├── exploration_chaima.ipynb
│ └── exploration.ipynb
├── process_data
│ ├── article_processor.py
│ ├── base_article.py
│ ├── chunked_article.py
│ ├── pipeline.py
│ └── preprocessing_article.py
├── pyproject.toml
├── rag_system
│ ├── __init__.py
│ ├── azure_client.py
│ ├── azure_generation.py
│ ├── chroma_retrieval.py
│ ├── query_preprocess.py
│ └── rag_pipeline.py
├── tests
│ ├── pytest.ini
│ ├── test_articles.py
│ └── test_pipeline.py
├── docker-compose.yml
├── requirements.txt
└── uv.lock