Bilal191919/deep-learning-fake-news-detection

GitHub: Bilal191919/deep-learning-fake-news-detection

一个基于 Flask 和 Scikit-learn 构建的假新闻检测 Web 应用,利用 NLP 和逻辑回归对新闻文章进行真假分类并提供置信度评分。

Stars: 0 | Forks: 0

# 假新闻检测系统 [![Python 版本](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/downloads/) [![Flask](https://img.shields.io/badge/flask-2.0%2B-green.svg)](https://flask.palletsprojects.com/) [![许可证](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) ## 📋 概述 一个复杂的基于机器学习的 Web 应用程序,用于检测和分类假新闻文章。该系统利用自然语言处理 (NLP) 和逻辑回归分类,以高准确率识别误导性或虚假信息。它使用现代 Web 界面和 RESTful API 后端构建,提供编程访问和用户友好的检测功能。 **核心能力:** 分析新闻文章,并带有概率置信度得分将其分类为真实或假新闻。 ## ✨ 功能 ### 核心检测 - 🎯 **二元分类**:区分真实和捏造的新闻文章 - 📊 **置信度评分**:为分类决策提供概率分数 - ⚡ **实时处理**:亚秒级响应时间的即时分析 - 🔄 **批处理**:同时处理多篇文章 ### 用户界面 - 🖥️ **响应式 Web 界面**:现代、直观的新闻分析仪表板 - 👤 **用户认证**:安全的账户管理和会话处理 - 📈 **分析仪表板**:查看检测历史和统计数据 - 🎨 **深色/浅色模式支持**:优化的查看体验 ### 技术特性 - 🔐 **RESTful API**:对检测引擎的编程访问 - 📝 **输入验证**:强大的错误处理和数据验证 - 🚀 **可扩展架构**:生产环境就绪的部署设置 - 📦 **模型序列化**:用于即时预测的预训练模型 ## 🏗️ 架构 ``` ┌─────────────────────────────────────────────────────────┐ │ Frontend (HTML/CSS/JS) │ │ (Web UI & User Interface) │ └────────────────────┬────────────────────────────────────┘ │ HTTP/REST ┌────────────────────▼────────────────────────────────────┐ │ Backend (Flask/Python) │ │ ┌──────────────────┬──────────────────────────────┐ │ │ │ API Routes │ Authentication & Sessions │ │ │ └──────────────────┴──────────────────────────────┘ │ └────────────────────┬────────────────────────────────────┘ │ ┌────────────────────▼────────────────────────────────────┐ │ ML Pipeline (NLP & Classification) │ │ ┌─────────────┐ ┌──────────────────────────┐ │ │ │ Vectorizer │─────▶│ Logistic Regression │ │ │ │ (TF-IDF) │ │ Model (Joblib) │ │ │ └─────────────┘ └──────────────────────────┘ │ └────────────────────┬────────────────────────────────────┘ │ ┌────────────────────▼────────────────────────────────────┐ │ Data Layer (CSV Datasets) │ │ ├─ Fake.csv (Fabricated News) │ │ └─ True.csv (Genuine News) │ └─────────────────────────────────────────────────────────┘ ``` ## 🛠️ 技术栈 | 组件 | 技术 | 版本 | |-----------|-----------|---------| | **后端** | Flask | 2.0+ | | **语言** | Python | 3.8+ | | **ML 框架** | Scikit-learn | 最新版 | | **向量化** | TF-IDF | Scikit-learn | | **分类** | Logistic Regression | Scikit-learn | | **模型序列化** | Joblib | 最新版 | | **前端** | HTML5/CSS3/JavaScript | ES6+ | | **数据格式** | CSV | 标准 | ## 📁 项目结构 ``` Fake-News-Detection-main/ ├── README.md # Project documentation ├── requirements.txt # Python dependencies ├── app.py # Flask web application ├── api.py # RESTful API endpoints ├── app.ipynb # Jupyter notebook (data analysis) ├── lr_model.jb # Trained logistic regression model ├── vectorizer.jb # TF-IDF vectorizer (pre-fitted) ├── Fake.csv # Training data (fake news) ├── True.csv # Training data (genuine news) └── TEMPLATES/ ├── index.html # Homepage ├── detector.html # Detection interface ├── account.html # User account management ├── style.css # Global styling └── script.js # Frontend logic & interactivity ``` ## 🚀 安装与设置 ### 前置条件 - Python 3.8 或更高版本 - pip 或 conda 包管理器 - 2GB 可用磁盘空间(包括模型和数据集) ### 步骤 1:克隆仓库 ``` git clone cd Fake-News-Detection-main ``` ### 步骤 2:创建虚拟环境 ``` # Windows python -m venv venv venv\Scripts\activate # macOS/Linux python -m venv venv source venv/bin/activate ``` ### 步骤 3:安装依赖 ``` pip install -r requirements.txt ``` ### 步骤 4:验证安装 ``` python -c "import flask, sklearn, pandas; print('All dependencies installed successfully!')" ``` ## 🎮 使用方法 ### 运行 Web 应用程序 ``` # 启动 Flask 开发服务器 python app.py # 应用程序将可通过 http://localhost:5000 访问 ``` 在 Web 浏览器中访问 `http://localhost:5000` 以访问用户界面。 ### 使用 REST API #### 检测假新闻(单篇文章) ``` curl -X POST http://localhost:5000/api/detect \ -H "Content-Type: application/json" \ -d '{ "text": "Breaking news: Scientists discover cure for common cold..." }' ``` **响应:** ``` { "prediction": "Real", "confidence": 0.87, "probabilities": { "fake": 0.13, "real": 0.87 }, "timestamp": "2026-05-07T10:30:45Z" } ``` #### 批量检测 ``` curl -X POST http://localhost:5000/api/batch-detect \ -H "Content-Type: application/json" \ -d '{ "articles": [ {"text": "Article 1 text..."}, {"text": "Article 2 text..."} ] }' ``` ## 📊 模型详情 ### 算法:Logistic Regression - **类型**:二元分类 - **特征工程**:TF-IDF 向量化 - **词汇表大小**:从训练数据中优化 - **正则化**:L2 (Ridge) - **性能**:[包含您的模型准确率/指标] ### 数据规格 | 指标 | 值 | |--------|-------| | 训练样本(假新闻) | 可变(来自 Fake.csv) | | 训练样本(真实新闻) | 可变(来自 True.csv) | | 特征维度 | 5000+ TF-IDF 特征 | | 目标类别 | 2(假/真) | ### 模型文件 - **lr_model.jb**:序列化的 Logistic Regression 分类器 - **vectorizer.jb**:拟合的 TF-IDF 向量化器,用于文本预处理 ## 🔐 安全与最佳实践 ### 认证 - 基于会话的用户认证 - 安全的密码处理(在生产环境中使用哈希) - 启用 CSRF 保护 ### 输入验证 - 文本长度限制 - 用户输入净化 - 请求速率限制(建议在生产环境中使用) ### 部署建议 1. 使用 HTTPS/SSL 证书 2. 实施 API 密钥认证 3. 仅为受信任的域启用 CORS 4. 部署在反向代理 (Nginx) 之后 5. 使用环境变量存储敏感配置 6. 启用日志记录和监控 ## 🧪 测试与评估 ### 测试模型 ``` from sklearn.externals import joblib # 加载 model 和 vectorizer model = joblib.load('lr_model.jb') vectorizer = joblib.load('vectorizer.jb') # 测试 prediction test_text = "Your news article here..." features = vectorizer.transform([test_text]) prediction = model.predict(features) probability = model.predict_proba(features) print(f"Prediction: {prediction[0]}") print(f"Confidence: {probability[0]}") ``` ## 📈 性能指标 | 指标 | 值 | |--------|-------| | 准确率 | [使用您的模型更新] | | 精确率 | [使用您的模型更新] | | 召回率 | [使用您的模型更新] | | F1 分数 | [使用您的模型更新] | | 平均响应时间 | < 500ms | ## 🔄 API 端点 | 方法 | 端点 | 描述 | |--------|----------|-------------| | `GET` | `/` | 主页 | | `GET` | `/detector` | 检测界面 | | `GET` | `/account` | 用户账户页面 | | `POST` | `/api/detect` | 单篇文章检测 | | `POST` | `/api/batch-detect` | 多篇文章检测 | | `GET` | `/api/history` | 预测历史 | | `POST` | `/api/login` | 用户认证 | | `POST` | `/api/logout` | 会话终止 | ## 🐛 故障排除 ### 问题:找不到模块错误 ``` # 解决方案:重新安装 dependencies pip install --upgrade pip pip install -r requirements.txt ``` ### 问题:端口 5000 已被占用 ``` # 解决方案:使用不同的 port python app.py --port 5001 ``` ### 问题:模型文件未加载 ``` # 验证文件存在且可读 ls -la *.jb ``` ## 📝 未来增强 - [ ] 多语言支持 - [ ] 深度学习模型(BERT、基于 GPT 的模型) - [ ] 置信度校准 - [ ] 实时新闻源整合 - [ ] 移动应用程序 - [ ] 数据库集成 (PostgreSQL) - [ ] 高级分析仪表板 - [ ] 可解释性功能 (LIME/SHAP) - [ ] CI/CD 流水线 - [ ] Docker 容器化 ## 📜 许可证 本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 ## 👨‍💻 作者 **开发团队** - 创建用于:AI 编程(第 4 学期) - 机构:[您的大学] - 课程代码:[课程代码] ## 📞 支持与联系 **邮箱**:hafizbilal1919@gmail.com 如有问题、议题或建议: - 📧 邮箱:[your-email@example.com] - 🐛 议题:[GitHub Issues 链接] - 💬 讨论:[GitHub Discussions 链接] ## 🙏 致谢 - Scikit-learn 提供的 ML 算法 - Flask 团队提供的 Web 框架 - 贡献者和测试人员 - 假/真新闻数据集 ## 📚 参考资料与资源 - [Scikit-learn 文档](https://scikit-learn.org/) - [Flask 文档](https://flask.palletsprojects.com/) - [NLP 最佳实践](https://nlp.stanford.edu/) - [假新闻检测研究](https://arxiv.org/) **最后更新**:2026 年 5 月 7 日 **版本**:1.0.0 **状态**:积极开发中 ✅
标签:AI, Apex, Flask, Naabu, NLP, Python, RESTful API, 事实核查, 二分类, 人工智能, 代码示例, 假新闻检测, 内容安全, 分词, 向量化, 情感分析, 提示词优化, 数据分析, 数据可视化, 数据科学, 数据预处理, 文本分析, 文本分类, 新闻真伪鉴别, 无后门, 机器学习, 深度学习, 特征工程, 用户模式Hook绕过, 网络安全, 自动化代码审查, 舆情监控, 虚假信息识别, 资源验证, 逆向工具, 逻辑回归, 错误信息检测, 隐私保护, 预测建模