Streamlit app to analyze news articles for credibility, sentiment, clickbait, and more. 🔗 Live App: https://newscheck-ai.streamlit.app/
- Onyeka Nwokike — Team Lead / Topic Classification — https://github.com/Nwokike
- Stephen Ayankoso — Fake News Detection — https://github.com/Steve-ayan
- Cleiton Langa — Clickbait Detection — https://github.com/cleitonlanga
- Rivaldo — Sentiment Analysis — https://github.com/rivaldo56
NewsCheck AI is a modular NLP project built with Streamlit. Each team member contributed a trained model that analyzes different aspects of news articles. Incomplete modules display as “Coming Soon.”
newscheck-ai/
│
├── app.py
│
├── model_functions/
│ ├── topic.py
│ ├── fake.py
│ ├── sentiment.py
│ ├── clickbait.py
│ ├── bias.py # Coming Soon
│ ├── summarizer.py # Coming Soon
│ └── emotion.py # Coming Soon
│
├── models/
│ ├── topic_model.pkl
│ ├── topic_vectorizer.pkl
│ ├── fake_news_model.pkl
│ ├── fake_news_vectorizer.pkl
│ ├── sentiment_model.pkl
│ ├── tfidf_vectorizer.pkl
│ ├── clickbait_model.pkl
│ ├── clickbait_vectorizer.pkl
│ └── ...
│
├── notebooks/
│ ├── topic_classification.ipynb
│ ├── fake_news_training.ipynb
│ ├── sentiment_training.ipynb
│ ├── clickbait_training.ipynb
│ └── ...
│
├── requirements.txt
├── .gitignore
└── README.md
This table shows the high-level status of each module. See the "Data Sources" section below for the specific datasets and requirements for each model.
| Feature | Function | Status |
|---|---|---|
| Topic Classification | predict_topic(text) |
✅ Done |
| Fake News Detection | predict_fake(text) |
✅ Done |
| Sentiment Analysis | predict_sentiment(text) |
✅ Done |
| Clickbait Detection | is_clickbait(text) |
✅ Done |
| Bias Detection | detect_bias(text) |
🚧 Coming Soon |
| Extractive Summarizer | summarize(text) |
🚧 Coming Soon |
| Emotion Detection | get_emotion(text) |
🚧 Coming Soon |
This is the official list of datasets for the project. Contributors working on a "Coming Soon" module should use the specified dataset and deliverable.
-
Topic Classification (Done)
- Dataset: News Category Dataset
- Deliverable: A function
predict_topic(text)inmodel_functions/topic.pythat returns the predicted category as a string.
-
Fake News Detection (Done)
- Dataset: Fake and Real News Dataset
- Deliverable: A function
predict_fake(text)inmodel_functions/fake.pythat returns a formatted string like"High Risk (Fake) - 92.51%".
-
Sentiment Analysis (Done)
- Dataset: Sentiment Analysis for Financial News
- Deliverable: A function
predict_sentiment(text)inmodel_functions/sentiment.pythat returns "Positive," "Negative," or "Neutral."
-
Clickbait Detection (Done)
- Dataset: Clickbait Dataset
- Deliverable: A function
is_clickbait(headline_text)inmodel_functions/clickbait.pythat returns "Yes" or "No".
-
Bias Detection (Coming Soon)
- Dataset: MBIC: A Media Bias Annotation Dataset
- Deliverable: A function
detect_bias(text)inmodel_functions/bias.pythat returns "Biased" or "Neutral."
-
Extractive Summarizer (Coming Soon)
- Dataset: Newspaper Text Summarization CNN/DailyMail
- Deliverable: A function
summarize(text)inmodel_functions/summarizer.pythat returns a single string containing the 3-sentence summary.
-
Emotion Detection (Coming Soon)
- Dataset: Emotions Dataset for NLP
- Deliverable: A function
get_emotion(text)inmodel_functions/emotion.pythat returns the predicted emotion.
- Clone the repository:
git clone https://github.com/Nwokike/newscheck-ai.git
- Navigate to the directory:
cd newscheck-ai - Create a virtual environment:
python -m venv venv
- Activate the environment:
- macOS/Linux:
source venv/bin/activate - Windows:
venv\Scripts\activate
- macOS/Linux:
- Install dependencies:
pip install -r requirements.txt
- Run the app:
streamlit run app.py
- Fork the repo and create a new feature branch:
git checkout -b feature/your-model
- Add your files (see "Data Sources" section for model requirements):
- Your training notebook
$\rightarrow$ /notebooks - Your model + vectorizer
$\rightarrow$ /models - Your inference script
$\rightarrow$ /model_functions
- Your training notebook
- Push your branch and open a Pull Request to
main.