abhigoraya005/Fake-News-Detection-Using-NLP

GitHub: abhigoraya005/Fake-News-Detection-Using-NLP

一个基于NLP和机器学习技术的端到端假新闻检测项目,通过TF-IDF特征工程与多种分类算法实现新闻真伪判别,并附带交互式Web应用。

Stars: 0 | Forks: 0

# 📰 使用 NLP 进行假新闻检测 ![Python](https://img.shields.io/badge/Python-3.14-blue) ![Jupyter](https://img.shields.io/badge/Jupyter-Notebook-orange) ![Scikit-Learn](https://img.shields.io/badge/Scikit--Learn-ML-red) ![NLP](https://img.shields.io/badge/NLP-Text%20Classification-success) ![Streamlit](https://img.shields.io/badge/Streamlit-Web%20App-FF4B4B) ![Status](https://img.shields.io/badge/Status-Version%201.0-success) ![License](https://img.shields.io/badge/License-MIT-green) # 📌 项目概述 假新闻已成为当今数字世界面临的最大挑战之一。错误信息通过网络平台的快速传播会影响公众舆论、引发混乱,并干扰决策过程。 本项目开发了一个完整的**自然语言处理 (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, 文本分类, 无后门, 机器学习, 虚假新闻检测, 访问控制, 逆向工具