CoolFace
Apppublic

DevPatel0611/TruthLens

sourceHugging Faceupdated 6mo agoView on Hugging Face
1likes
App README

TruthLens: Advanced Fake News Detection Pipeline

TruthLens is an end-to-end fake news detection system that moves beyond simple machine learning probabilities. It employs a robust 5-signal weighted scoring framework built on journalistic standards, combining deep learning models (DistilBERT, RoBERTa), sequence models (LSTM), statistical models (Logistic Regression), and heuristic analysis to deliver explainable verdicts.

๐ŸŒŸ Key Features

  • โ€”5-Signal Scoring Framework:
  • โ€”Source Credibility (30%): Evaluates outlet reputation, author presence, and source corroboration, including typosquatting checks.
  • โ€”Claim Verification (30%): Combines AI probability with spaCy-based Named Entity Recognition (NER) and quote attribution analysis.
  • โ€”Linguistic Quality (20%): Detects sensationalism, superlatives, passive voice, and uses DistilBERT to check if the headline contradicts the body.
  • โ€”Freshness (10%): Contextual and date-based temporal scoring to detect outdated information.
  • โ€”AI Model Consensus (10%): Ensemble voting from Logistic Regression, LSTM, DistilBERT, and RoBERTa.
  • โ€”Adversarial Guardrails: Hard caps and overrides for highly suspicious patterns (Triple Anonymity, Uncited Statistics, Headline Contradictions).
  • โ€”Live Web Corroboration: RAG (Retrieval-Augmented Generation) pipeline using live search to verify unambiguous claims.
  • โ€”TruthLens UI: A sleek, dark/light mode adaptable Streamlit dashboard providing detailed explainability down to the specific signals and deductions.

๐Ÿ“ Project Structure

text
fake_news_detection/
โ”œโ”€โ”€ app.py                     # Streamlit frontend (TruthLens UI)
โ”œโ”€โ”€ run_pipeline.py            # Main script to run pipeline stages
โ”œโ”€โ”€ requirements.txt           # Python dependencies
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ stage1_ingestion.py    # Downloads and prepares datasets
โ”‚   โ”œโ”€โ”€ stage2_preprocessing.py# Cleans text, tokenizes, and saves artifacts
โ”‚   โ”œโ”€โ”€ stage3_training.py     # Trains models (LR, LSTM, DistilBERT, RoBERTa)
โ”‚   โ”œโ”€โ”€ stage4_inference.py    # The 5-signal scoring engine and prediction logic
โ”‚   โ””โ”€โ”€ utils/
โ”‚       โ””โ”€โ”€ rag_retrieval.py   # Live web search corroboration functions
โ”œโ”€โ”€ data/                      # Raw and processed datasets (created during execution)
โ””โ”€โ”€ models/                    # Trained models and vectorizers (created during execution)

๐Ÿš€ Getting Started

1. Installation

Ensure you have Python 3.8+ installed. Install the required dependencies:

bash
pip install -r requirements.txt
python -m spacy download en_core_web_sm

2. Running the Pipeline

The project is divided into stages. You can run the entire pipeline end-to-end, or run specific stages individually using run_pipeline.py.

To run the complete training pipeline (Stages 1 to 3): Note: This will download datasets, preprocess them, and train all models. It may take a significant amount of time depending on your hardware.

bash
python run_pipeline.py --stage 1 2 3

To run individual stages:

  • โ€”Stage 1: Data Ingestion Downloads and formats the necessary datasets (e.g., LIAR, ISOT).
bash
    python run_pipeline.py --stage 1
  • โ€”Stage 2: Preprocessing Cleans the text, maps verdicts to binary labels, and prepares DataFrames for training.
bash
    python run_pipeline.py --stage 2
  • โ€”Stage 3: Training Trains the ensemble: Logistic Regression, LSTM, DistilBERT, and RoBERTa. Saves the models to the /models directory.
bash
    python run_pipeline.py --stage 3
  • โ€”Stage 4: Evaluation Evaluates the trained pipeline on the holdout test set using the 5-signal inference framework.
bash
    python run_pipeline.py --eval

๐Ÿ–ฅ๏ธ Running the Application

Once the models are trained (or if you already have the pre-trained weights in the /models directory), you can launch the TruthLens UI.

bash
python -m streamlit run app.py

This will start a local web server (usually at http://localhost:8501).

Using the App:

  1. 1.Paste text or provide a URL: You can paste the raw text of an article (with or without a headline) or simply provide a URL for the app to parse automatically.
  2. 2.Select depth: Choose Quick, Standard, or Deep analysis.
  3. 3.View Results: Explore the four-tier verdict (True, Uncertain, Likely False, False), signal breakdown, adversarial flags, and live web corroboration results.