虚假新闻检测系统
本项目是基于 ConceptNN (概念神经网络) 算法实现的虚假新闻检测后端服务。它支持文本与图片的双模态特征提取,并保留了算法核心的 增量学习 (Incremental Learning) 能力,能够对接 Java 后端系统进行实时预测与模型更新。
项目说明
虚假新闻检测系统
本项目是基于 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.csv、full_train_data.csv等结果文件。
2. 项目启动与环境参数
环境要求
- Python 版本: 推荐
Python 3.9(本项目实测通过版本)。 - 系统平台: 支持 Windows / macOS / Linux。
启动步骤
- 安装依赖:
pip install -r requirements.txt - 运行服务:
服务默认启动在:python main.pyhttp://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+ 条)。 - 必要性:
- 防止过拟合: 避免模型对高频出现的重复新闻产生“死记硬背”,确保其学习的是普遍规律。
- 公平评估: 纯净且独立的样本集能让准确率反映真实的泛化能力。
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 (动态学习) 特性:
- 反馈学习: 当你有了一批真实标签(即知道哪些新闻确实是虚假,哪些是真实时),可以调用
/train接口。 - 模型自进化: 系统会调用
incremental_update方法,在不破坏原有知识的基础上,针对新数据微调网络权重。 - 性能监控: 每次预测的结果和概率分布都会记录在 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源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
城市交通流量预测与拥堵成因分析系统
是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

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

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

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

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

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