akshat404fx/Fake_News_Detection_2210991228
GitHub: akshat404fx/Fake_News_Detection_2210991228
该项目是一个使用经典机器学习算法比较研究假新闻检测的学术项目,基于ISOT数据集进行实验分析和交付。
Stars: 0 | Forks: 0
# 📰 使用机器学习的假新闻检测
## 📋 项目概述
本项目研究了基于简单语言模式的经典监督机器学习能否可靠地大规模检测虚假新闻文章。在完全受控、可重复的实验条件下,使用**ISOT 假新闻数据集**(44,898篇文章)对四种 TF-IDF/BoW 向量化方案下的五种流行分类器进行了基准测试。
**被动攻击分类器**结合**TF-IDF 一元组 + 二元组**特征取得了出色的结果:**99.9% 的准确率**和 **0.999 的 F1 分数**——训练时间仅需约 **0.2 秒**——在计算成本极低的情况下,达到甚至超越了经过微调的 Transformer 基准模型的性能。
## 📄 知识产权交付成果
| 字段 | 详情 |
|---|---|
| **交付物类型** | 研究论文 |
| **标题** | *使用机器学习的假新闻检测:经典监督学习算法的比较研究* |
| **当前状态** | ✅ 已提交至期刊 |
## 🗂️ 仓库结构
```
Fake-News-Detection-2210991228/
│
├── IPR_Submission_Proof/ # Journal submission confirmation & proof of submission
│
├── PPT_and_Report/ # Presentation slides and Report
│
├── Source_Code/ # Jupyter notebook with all experiments and analysis
│
└── README.md # You are here
```
## 🔬 研究摘要
### 数据集
- **名称:** ISOT 假新闻数据集(维多利亚大学)
- **大小:** 44,898 篇文章 — 23,481 篇虚假新闻 + 21,417 篇真实新闻(比例约为 52/48)
- **来源:** 真实文章来自路透社;虚假文章来自被 PolitiFact 和 Wikipedia 标记的来源
- **覆盖范围:** 2015–2017 年美国政治和国际新闻
### 评估的分类器
| 分类器 | 准确率 | F1 分数 | 训练时间 |
|---|---|---|---|
| 逻辑回归 | 99.7% | 0.997 | 3.8 秒 |
| 支持向量机 | 99.8% | 0.998 | 1.1 秒 |
| 随机森林 | 99.7% | 0.997 | 138.5 秒 |
| 朴素贝叶斯 | 96.3% | 0.963 | 0.1 秒 |
| **被动攻击分类器 (PAC)** ⭐ | **99.9%** | **0.999** | **0.2 秒** |
*所有结果均基于在包含 8,980 篇文章的留出测试集上,使用 TF-IDF 一元组 + 二元组向量化方案得出。*
### 比较的向量化方案
| 方案 | 最高准确率 | 特征维度 |
|---|---|---|
| 词袋计数 — 一元组 | 99.6% | 58,420 |
| TF-IDF — 仅一元组 | 99.8% | 58,420 |
| TF-IDF — 仅二元组 | 99.4% | 311,680 |
| **TF-IDF — 一元组 + 二元组** ⭐ | **99.9%** | **370,100** |
### 主要发现
- **PAC 是帕累托最优的** — 在具有竞争力的分类器中,以最低的合理训练时间实现了最高准确率。
- **向量化方案的选择与分类器选择同等重要** — 不同方案之间的性能差距(0.5 个百分点)大于前 4 种分类器之间的差距(0.2 个百分点)。
- **二元组增加了有意义的信号** — 像 `washington reuters`、`york reuters` 和 `featured image` 这样的序列无法仅通过一元组捕获。
- **特征可解释性揭示了明显的修辞差异** — 真实新闻基于来源归属语言(`reuters`、`said`、日期行);虚假新闻则涉及媒体嵌入和政治煽动性内容(`via`、`video`、`breaking`、`obama`)。
## 🛠️ 技术栈
| 类别 | 工具 / 库 |
|---|---|
| 语言 | Python |
| 数据处理 | pandas, NumPy |
| NLP 与预处理 | NLTK(分词、停用词、词形还原) |
| 特征工程 | scikit-learn (TF-IDF, CountVectorizer) |
| 分类器 | scikit-learn (LR, LinearSVC, RF, MultinomialNB, PAC) |
| 评估 | scikit-learn (准确率、精确率、召回率、F1、混淆矩阵) |
| 可视化 | Matplotlib, Seaborn, WordCloud |
| 笔记本 | Jupyter Notebook |
## 🚀 开始使用
### 前置条件
```
pip install scikit-learn nltk pandas numpy matplotlib seaborn wordcloud tqdm
```
### 数据集设置
从 Kaggle 下载 **ISOT 假新闻数据集**:
[https://www.kaggle.com/datasets/emineyetm/fake-news-detection-datasets](https://www.kaggle.com/datasets/emineyetm/fake-news-detection-datasets)
将 `Fake.csv` 和 `True.csv` 放置在与笔记本相同的目录下。
### 运行笔记本
```
cd Source_Code/
jupyter notebook Fake_News_Detection_Experiments.ipynb
```
按顺序运行所有单元格 — 笔记本分为 7 个阶段,从环境设置到特征可解释性分析。
## 📚 参考文献
1. Ahmed, H., Traore, I., & Saad, S. — ISOT 假新闻数据集基准(原始 TF-IDF 基线)。
2. Wang, W. Y. — LIAR 数据集:多类别真实性分类。
3. Sharma, K. 等 — 在稀疏 TF-IDF 空间上的跨分类器 SVM 比较。
4. Devlin, J. 等 — BERT:深度双向 Transformer 的预训练。
5. Kaliyar, R. K. 等 — FakeBERT:使用基于 BERT 的深度学习方法进行社交媒体假新闻检测。
6. Monti, F. 等 — 使用几何深度学习检测社交媒体上的假新闻。
## ⚠️ 局限性
- 结果特定于 ISOT 语料库(2015–2017 年美国政治新闻),可能无法推广到其他领域或语言。
- 如果特征权重暴露,基于词汇的分类器可能容易受到对抗性规避攻击。
- 与 Transformer 模型的跨论文准确率比较仅为指示性的;一个受控的正面基准测试是已确定的未来方向。
## 📃 许可证
本仓库根据 Chitkara 大学的知识产权提交框架,为学术目的提交。ISOT 假新闻数据集可通过维多利亚大学公开获取。
标签:AI应用, Apex, ISOT数据集, NoSQL, TF-IDF, TruffleHog, 假新闻检测, 学术论文, 实验研究, 支持向量机, 文本分类, 新闻分析, 朴素贝叶斯, 机器学习, 模型比较, 特征工程, 监督学习, 被动攻击分类器, 计算效率, 词袋模型, 逆向工具, 逻辑回归, 随机森林, 高准确率模型