虚假新闻检测系统
2026/8/28 6:40:28 网站建设 项目流程

虚假新闻检测系统

本项目是基于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. 安装依赖:
    pipinstall-rrequirements.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-XPOST 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

  • 本项目详情:https://www.aiyuanma.vip/posts/fake_news_detector_project-3.fake_news_detector

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询