abhigoraya005/Fake-News-Detection-Using-NLP
GitHub: abhigoraya005/Fake-News-Detection-Using-NLP
一个基于NLP和机器学习技术的端到端假新闻检测项目,通过TF-IDF特征工程与多种分类算法实现新闻真伪判别,并附带交互式Web应用。
Stars: 0 | Forks: 0
# 📰 使用 NLP 进行假新闻检测







# 📌 项目概述
假新闻已成为当今数字世界面临的最大挑战之一。错误信息通过网络平台的快速传播会影响公众舆论、引发混乱,并干扰决策过程。
本项目开发了一个完整的**自然语言处理 (NLP)** pipeline,能够自动将新闻文章分类为**假新闻**或**真实新闻**。
该项目遵循端到端的 Machine Learning 工作流,包括:
- 数据理解
- 探索性数据分析
- 文本清洗
- NLP 预处理
- TF-IDF 特征工程
- 模型训练
- 模型评估
- 模型保存
- 交互式 Streamlit 预测 Web App
# 🎯 目标
- 构建自动化的假新闻检测系统。
- 执行全面的探索性数据分析 (EDA)。
- 清洗和预处理文本新闻文章。
- 应用自然语言处理技术。
- 生成 TF-IDF 特征向量。
- 训练多个 Machine Learning 分类器。
- 比较模型性能。
- 使用 Streamlit 部署性能最佳的模型。
- 按照 IEEE 标准记录整个项目。
# 📂 仓库结构
```
Fake-News-Detection-Using-NLP/
│
├── dataset/
│ ├── raw/
│ ├── processed/
│ └── cleaned/
│
├── models/
│ ├── random_forest_model.pkl
│ └── tfidf_vectorizer.pkl
│
├── notebooks/
│ ├── 01_Project_Setup.ipynb
│ ├── 02_Data_Understanding.ipynb
│ ├── 03_Exploratory_Data_Analysis.ipynb
│ ├── 04_Text_Preprocessing.ipynb
│ ├── 05_Feature_Engineering.ipynb
│ ├── 06_Model_Training.ipynb
│ ├── 07_Model_Evaluation.ipynb
│ ├── 08_Prediction.ipynb
│ └── 08_Save_Model.ipynb
│
├── images/
├── presentation/
├── reports/
├── src/
│
├── app.py
├── requirements.txt
├── .gitignore
└── README.md
```
# 📊 数据集
本项目使用**虚假与真实新闻数据集**进行二进制新闻分类。
## 数据集特征
| 特征 | 描述 |
|----------|-------------|
| title | 新闻标题 |
| text | 完整的新闻文章 |
| subject | 新闻类别 |
| date | 发布日期 |
| label | 0 = 假新闻,1 = 真实新闻 |
## 数据集统计
| 描述 | 数量 |
|-------------|------:|
| 假新闻 | 23,481 |
| 真实新闻 | 21,417 |
| 文章总数 | 44,898 |
预处理后:
- 使用的总样本数:**44,182**
- 移除的缺失值:**716**
- 最终特征:**5,000 个 TF-IDF 特征**
# 📈 探索性数据分析 (EDA)
执行的详细探索性数据分析包括:
- 假新闻与真实新闻分布
- 按主题划分的分布
- 发布年份分布
- 文章长度分析
- 标题长度分析
- 相关性热力图
- 词云(假新闻)
- 词云(真实新闻)
- 数据集统计
- EDA 观察结果
# 🧹 自然语言处理 Pipeline
预处理工作流包括:
- 将文本转换为小写
- 移除 URL
- 移除 HTML 标签
- 移除标点符号
- 移除特殊字符
- 移除数字
- 移除多余空格
- 移除英文停用词
- 词形还原
- 移除缺失值
- 保存清洗后的数据集
# ⚙️ 特征工程
TF-IDF 向量化:
- Unigram + Bigram 特征
- 最大词汇量:**5000**
- 稀疏矩阵表示
- 80-20 训练-测试集划分比例
- 保存 TF-IDF Vectorizer 以便部署
# 🤖 机器学习模型
以下模型经过了训练和评估。
| 模型 | 准确率 |
|--------|---------:|
| 逻辑回归 | 98.97% |
| 朴素贝叶斯 | 94.25% |
| 决策树 | 99.51% |
| 随机森林 | **99.82%** 🏆 |
| 支持向量机 | 99.63% |
# 🏆 最佳模型
**随机森林分类器**
准确率:
**99.82%**
选择原因:
- 最高准确率
- 极佳的精确率
- 极佳的召回率
- 极佳的泛化能力
- 快速预测
- 稳健的性能
# 📊 模型评估
每个分类器均使用以下指标进行评估:
- 准确率
- 精确率
- 召回率
- F1分数
- 混淆矩阵
- 分类报告
- 模型比较
随机森林模型取得了最高的性能,因此被选为最终的预测模型。
# 🌐 Streamlit Web 应用程序
本项目包含一个使用 **Streamlit** 构建的完全交互式 Web 应用程序。
功能:
- 新闻文章输入
- 真实/虚假预测
- 置信度分数
- 随机森林预测引擎
- 清洁的用户界面
- 快速推理
# 🛠 使用的技术
- Python
- Jupyter Notebook
- Pandas
- NumPy
- Matplotlib
- Scikit-Learn
- NLTK
- WordCloud
- Streamlit
- Joblib
- 正则表达式
- Git
- GitHub
# 🚀 安装说明
克隆仓库
```
git clone https://github.com/abhigoraya005/Fake-News-Detection-Using-NLP.git
```
进入项目
```
cd Fake-News-Detection-Using-NLP
```
安装依赖项
```
pip install -r requirements.txt
```
运行 Streamlit 应用程序
```
streamlit run app.py
```
# 📌 当前进度
| 阶段 | 状态 |
|--------|--------|
| 项目设置 | ✅ 已完成 |
| 环境配置 | ✅ 已完成 |
| 数据理解 | ✅ 已完成 |
| 探索性数据分析 | ✅ 已完成 |
| 文本预处理 | ✅ 已完成 |
| 特征工程 | ✅ 已完成 |
| 模型训练 | ✅ 已完成 |
| 模型评估 | ✅ 已完成 |
| 模型保存 | ✅ 已完成 |
| Streamlit Web App | ✅ 已完成 |
| IEEE 文档 | ⏳ 进行中 |
# 📷 项目截图
包含的截图:
- 数据集概述
- 探索性数据分析
- 词云
- TF-IDF 特征工程
- 模型比较
- 混淆矩阵
- 分类报告
- Streamlit 用户界面
- 预测结果
# 🔮 未来改进
- 超参数优化
- 深度学习
- 基于 BERT 的假新闻检测
- 新闻 API 集成
- REST API 开发
- Docker 支持
- 云部署
- 移动端响应式界面
# 📚 参考资料
- Scikit-Learn 文档
- NLTK 文档
- Streamlit 文档
- Pandas 文档
- Matplotlib 文档
- Kaggle 虚假与真实新闻数据集
# 👨💻 作者
**Abhiney Kumar**
**B.Tech 电子与通信工程 (ECE)**
**Dr. B. R. Ambedkar National Institute of Technology (NIT) Jalandhar**
GitHub:
https://github.com/abhigoraya005
# 🚀 项目状态
## 已完成的 Notebook
- ✅ 01 – 项目设置
- ✅ 02 – 数据理解
- ✅ 03 – 探索性数据分析
- ✅ 04 – 文本预处理
- ✅ 05 – 特征工程
- ✅ 06 – 模型训练
- ✅ 07 – 模型评估
- ✅ 08 – 预测
- ✅ 08 – 保存模型
## 成就
- ✅ 端到端 NLP Pipeline
- ✅ 完整的文本预处理
- ✅ TF-IDF 特征工程
- ✅ 训练了五种 Machine Learning 模型
- ✅ 随机森林被选为最佳模型
- ✅ **99.82% 准确率**
- ✅ 使用 Joblib 保存模型
- ✅ 交互式 Streamlit Web 应用程序
## 版本
**当前版本:** **v1.0**
### 最终模型
🏆 **随机森林分类器**
**准确率:** **99.82%**
### 即将推出的版本
- IEEE 研究论文
- UI 改进
- BERT 集成
- 云部署
- 实时新闻预测 API
## 项目更新 1
## 项目更新 2
## 项目更新 3
## 项目更新 4
## 模型性能
## 数据集描述
## 安装说明
## 未来展望
标签:Apex, Kubernetes, NoSQL, Python, Scikit-Learn, Streamlit, TF-IDF, 文本分类, 无后门, 机器学习, 虚假新闻检测, 访问控制, 逆向工具