虚假新闻检测系统
基于 ConceptNN 概念神经网络的虚假新闻检测 FastAPI 服务,支持文本 Sentence-Transformer 与图像 ResNet18 双模态特征及增量学习,可对接 Java 后端实时预测,适合 NLP+CV 毕业设计。
获取完整源码
演示视频仅作效果参考。完整源码、项目说明与运行答疑,请私聊沟通(适合毕业设计 / 课程设计 / 课设参考)。
项目概览
项目实现概念空间构建、余弦相似度、ConceptNN 增量训练与 /predict、/train REST 接口,预处理含 text_vectorizer、image_vectorizer 与 feature_merger。提供 train_from_csv.py 初始训练、metrics 按类别评估与 predictions CSV 落盘,Python 3.9 实测通过,适合深度学习、多模态融合与虚假新闻识别类毕业设计与课程设计。
项目说明
虚假新闻检测系统
本项目是基于 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。
获取完整源码
技术分类
包含内容
适合方向
适合人工智能、计算机科学毕业设计中 NLP、计算机视觉、FastAPI 服务化与增量学习方向;需先完成 CSV 初始训练再调用预测接口。
关于 AI源码
AI源码 整理计算机毕业设计、课程设计向的可运行项目参考,含说明文档与演示材料。完整源码请通过联系方式沟通获取。
相关推荐
查看全部 →
微博热点数据分析与可视化系统
Flask 微博热搜分析平台:自动爬取热搜与评论、jieba 分词清洗、SnowNLP 情感分类,ECharts 热度排行/情感饼图/词云可视化,SQLite 存储与角色权限,适合 Python 数据分析毕业设计。

基于 Python 的短视频用户行为分析系统
基于 KuaiRec/KuaiRand 数据集的短视频分析平台:行为漏斗、推荐偏差、KMeans 聚类、TF-IDF/t-SNE、LightGCN 图推荐与 A/B 实验,Flask 仪表盘一键重训,适合推荐系统大数据毕业设计。

城市交通流量预测与拥堵成因分析系统
城市交通拥堵 monorepo:data-pipeline 多源时空特征、STGNN Proxy 流量预测、归因分析与 Leaflet 地图可视化,FastAPI 加载离线产物,适合交通大数据与计算机设计毕业设计。

电商用户行为漏斗与CRO转化率优化分析
电商漏斗 CRO 分析平台:页面/事件双漏斗、渠道设备多维诊断、PIE 优先级矩阵、卡方检验与 XGBoost 购买预测,Flask+ECharts 仪表板,支持 Retailrocket 真实数据,适合电商数据分析毕业设计。

基于 Python 的汽车市场数据分析与可视化平台
Flask 汽车市场分析平台:整合 Cars24/UCI Automobile 等多源真实数据集(统一 CNY),含多维分析、随机森林二手车价格预测、品牌对比与销量统计,适合 Python 数据分析毕业设计。

中学生学业水平多维度分析与预警系统
Flask 中学生学业预警系统:UCI Student Performance 真实数据,规则引擎 40%+随机森林/GBDT 60% 融合考前评分,六维雷达与皮尔逊相关分析,教师/管理员双角色,适合教育数据挖掘毕业设计。