AI源码
AI源码AI 精选 · 优质源码 · 助力学习

虚假新闻检测系统

本项目是基于 ConceptNN (概念神经网络) 算法实现的虚假新闻检测后端服务。它支持文本与图片的双模态特征提取,并保留了算法核心的 增量学习 (Incremental Learning) 能力,能够对接 Java 后端系统进行实时预测与模型更新。

评分:4.8/5.0
销量:54
发布:2026/2/9
难度:L2 进阶级
💬 联系咨询
永久使用权限
免费更新维护
技术支持服务

项目说明

虚假新闻检测系统

本项目是基于 ConceptNN (概念神经网络) 文章算法实现的虚假新闻检测后端服务。它支持文本与图片的双模态特征提取,并保留了文章核心的 增量学习 (Incremental Learning) 能力,能够对接 Java 后端系统进行实时预测与模型更新。


1. 项目目录结构

fake_news_detector/
├── main.py                    # FastAPI 服务主入口
├── train_from_csv.py          # 【新增】从 CSV 文件进行初始训练的工具脚本
├── test_api.py                # API 快速测试工具
├── config.py                  # 全局参数与类别映射配置
├── requirements.txt           # 项目依赖包清单
├── full_train_data.csv        # 示例/初始训练数据集 (含全维度特征)
├── 项目说明.md                # 本文档
├── models/                    # 【自动创建】存放训练好的模型文件 (.h5)
│   └── concept_nn_model.h5    # 持久化模型文件
├── data/                      # 【自动创建】存放运行产生的 CSV 结果
│   ├── predictions_1.csv      # 批次预测明细
│   ├── full_train_data.csv             # 总体准确率累计表
│   └── metrics_by_category.csv # 按类别的详细指标
├── core/                      # 算法核心代码
│   ├── __init__.py
│   ├── concept_nn.py          # 概念神经网络核心类 (含增量学逻辑)
│   ├── concept_space.py       # 文章核心:概念空间构建逻辑
│   └── cosine_similarity.py   # 余弦相似度计算工具
├── preprocessing/             # 数据预处理 (向量化)
│   ├── __init__.py
│   ├── text_vectorizer.py     # 文本特征提取 (sentence-transformer)
│   ├── image_vectorizer.py    # 图像特征提取 (ResNet18)
│   └── feature_merger.py      # 特征合并与元数据标准化
└── api/                       # 接口层
    ├── __init__.py
    ├── router.py              # API 路由实现 (/predict, /train)
    ├── schemas.py             # Pydantic 数据格式校验模型
    └── metrics.py             # 评估指标 (Precision, Recall, F1)

2. 文件功能说明

其他

  • models/: 用于存放持久化保存的 TensorFlow 模型文件 (.h5)。
  • data/: 用于存放运行产生的 predictions_n.csvfull_train_data.csv 等结果文件。

2. 项目启动与环境参数

环境要求

  • Python 版本: 推荐 Python 3.9 (本项目实测通过版本)。
  • 系统平台: 支持 Windows / macOS / Linux。

启动步骤

  1. 安装依赖:
    pip install -r requirements.txt
    
  2. 运行服务:
    python main.py
    
    服务默认启动在: http://127.0.0.1:8000

核心参数调节 (config.py)

  • N_EPOCHS: 初始训练的轮数。
  • UPDATE_EPOCHS: 增量学习时每一批数据的更新轮数。
  • SIMILARITY_THRESHOLDS: 概念空间构建时的相似度阈值搜索范围。

3. 接口调用示例

预测接口 (POST /predict)

向后端发送新闻数据,返回虚假概率。系统会自动在 data/ 目录下生成 CSV 记录。

请求示例:

{
  "items": [
    {
      "info_id": "unique_id_001",
      "info_content": "这里是新闻的正文内容...",
      "content_type": "社会",
      "image_base64": "",
      "publish_time": "2024-07-11",
      "user_gender": "女",
      "user_age": 23,
      "user_occupation": "农民",
      "user_location": "湖南",
      "user_register_time": "2003-06-10",
      "user_fans_count": 22,
      "like_count": 44,
      "comment_count": 33,
      "report_count": 11,
      "share_count": 6
    }
  ]
}

3. 初始化训练 (必须步骤)

在首次使用预测功能前,必须让模型学习“什么是虚假新闻”。项目提供了 train_from_csv.py 脚本来完成此任务。

训练数据格式

项目根目录下的 full_train_data.csv 应符合以下格式:

  • title: 新闻标题
  • desc: 新闻描述/正文
  • label: 标签 (0 = 真实, 1 = 虚假)

执行训练

# 确保 full_train_data.csv 已就绪
python train_from_csv.py

说明:

  • 脚本会调用 sentence-transformers 提取文本特征。
  • 训练完成后,会在 models/ 目录下生成 concept_nn_model.h5 权重文件。
  • 只要有了该文件,之后的预测接口才能给出有意义的概率值。

💡 训练数据质量保证 (去重逻辑)

为了确保模型的稳健性,训练脚本执行了严格的去重操作

  • 重复现象: 在原始收集中(如 51,055 行),常因多个学生采集重叠或“汇总表”包含“分表”而产生大量重复数据。
  • 去重逻辑: 脚本通过 drop_duplicates(subset=['info_content']) 仅保留唯一的正文内容(约 20,000+ 条)。
  • 必要性:
    1. 防止过拟合: 避免模型对高频出现的重复新闻产生“死记硬背”,确保其学习的是普遍规律。
    2. 公平评估: 纯净且独立的样本集能让准确率反映真实的泛化能力。

4. 测试方式

系统提供了多种方式进行功能验证:

方法 A:交互式文档 (推荐)

服务启动后,在浏览器访问: http://127.0.0.1:8000/docs

  • 你可以看到所有可用接口。
  • 点击 "Try it out" -> 修改 JSON -> 点击 "Execute",即可直接在页面上查看返回结果。

方法 B:命令行 Curl

打开终端,执行以下命令:

curl -X POST http://127.0.0.1:8000/predict \
  -H "Content-Type: application/json" \
  -d '{"items": [{"info_id": "t1", "info_content": "测试文本", "content_type": "社会", "image_base64": "", "publish_time": "2024-07-11", "user_gender": "男", "user_age": 20, "user_occupation": "学生", "user_location": "北京", "user_register_time": "2020-01-01", "user_fans_count": 0, "like_count": 0, "comment_count": 0, "report_count": 0, "share_count": 0}]}'

方法 C:Python 测试脚本

项目根目录下提供了 test_api.py,运行即可验证:

python test_api.py

5. 增量学习机制说明

本项目保留了文章的 Dynamic Learning (动态学习) 特性:

  1. 反馈学习: 当你有了一批真实标签(即知道哪些新闻确实是虚假,哪些是真实时),可以调用 /train 接口。
  2. 模型自进化: 系统会调用 incremental_update 方法,在不破坏原有知识的基础上,针对新数据微调网络权重。
  3. 性能监控: 每次预测的结果和概率分布都会记录在 CSV 中,方便后续进行离线分析和效果评估。

5. 常见问题 (FAQ)

  • 为什么第一次运行很慢? 首次运行会自动下载预训练的文本和图像模型(约 400MB),之后运行将直接从本地缓存加载,速度很快。

  • 如何查看 API 文档? 启动服务后,访问 http://127.0.0.1:8000/docs 即可查看可视化交互文档(Swagger UI)。

  • 运行报错 ModuleNotFoundError: No module named 'tf_keras' 由于 transformers 库目前对 Keras 3 有兼容性问题,必须安装备份包:pip install tf-keras

  • 支持哪个 Python 版本? 所有代码与依赖库均在 Python 3.9 环境下调试通过。虽然 3.10 理论上也支持,但为了减少依赖冲突,强烈建议使用 Python 3.9

技术分类

包含内容

完整源码
项目说明文档

适用人群

学习参考与二次开发

关于 AI源码

AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。

QQ: 861077046
邮箱: 861077046@qq.com
已服务 54+ 位用户
立即咨询

相关推荐

查看全部 →
城市交通流量预测与拥堵成因分析系统
Python
进阶

城市交通流量预测与拥堵成因分析系统

是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

PythonHTMLSQLite
4.820
电商用户行为漏斗与CRO转化率优化分析
Python
NEW
进阶

电商用户行为漏斗与CRO转化率优化分析

电商用户行为漏斗与CRO转化率优化分析(E-Commerce Funnel CRO)是一套面向电商运营的数据分析平台,覆盖从用户访问到最终购买的完整漏斗链路,提供多维诊断、统计检验、PIE 优先级矩阵与 XGBoost 购买预测等能力,帮助运营团队精准定位转化瓶颈并制定优化策略。

PythonHTMLSQLite
4.866
多组学癌症预后预测分析系统
Python
进阶

多组学癌症预后预测分析系统

基于 Flask 的 Web 应用,用于上传 TCGA 风格合并表、做特征与标签概览、Cox 预后风险评分与生存相关可视化。模型在本地训练后以 形式加载,不提供旧版演示数据或假模型兜底。

PythonHTMLSQLite
4.834
基于 Apriori 算法的中药配伍审查系统
Python
NEW
进阶

基于 Apriori 算法的中药配伍审查系统

本系统是一个基于经典 Apriori 关联规则挖掘算法的中药配伍审查平台,使用真实中医药处方数据集(PTM-TKDE2018),实现药材频繁项集挖掘、关联规则生成与配伍禁忌审查。

PythonHTMLSQLite
4.840
基于 Python 的城市共享单车骑行需求时空分析系统
Python
NEW
进阶

基于 Python 的城市共享单车骑行需求时空分析系统

本系统是一个基于 Python Flask 框架的城市共享单车骑行需求时空分析平台,使用 Oslo City Bike(奥斯陆城市自行车)开放数据,提供系统总览、时间维度分析、空间维度分析、站点运营分析、OD 起讫流动分析、骑行需求预测、综合分析报告等功能模块,适用于城市共享单车运营调度与骑行需求研究场景。

PythonHTMLSQLite
4.857
基于 Python 的短视频用户行为分析系统
Python
NEW
进阶

基于 Python 的短视频用户行为分析系统

基于快手 KuaiRec / KuaiRand 数据集的短视频推荐分析平台,提供用户行为分析、推荐偏差检测、内容运营洞察、图神经网络推荐等完整分析链路。

PythonHTMLSQLite
4.875