虚假新闻检测系统
虚假新闻检测系统本项目是基于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。启动步骤安装依赖:pipinstall-rrequirements.txt运行服务: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 条。必要性:防止过拟合: 避免模型对高频出现的重复新闻产生“死记硬背”确保其学习的是普遍规律。公平评估: 纯净且独立的样本集能让准确率反映真实的泛化能力。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\-HContent-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}]}方法 CPython 测试脚本项目根目录下提供了test_api.py运行即可验证python test_api.py5. 增量学习机制说明本项目保留了文章的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。本项目详情https://www.aiyuanma.vip/posts/fake_news_detector_project-3.fake_news_detector

相关新闻

模拟电路设计优化:多目标强化学习与大模型引导的搜索新范式

模拟电路设计优化:多目标强化学习与大模型引导的搜索新范式

很多人看到 ORACLE 这个名字,第一反应是数据库,甚至直接联想到数据库安装、RAC 集群、JDK 下载这些词。但这里的 ORACLE 完全不是那套东西。它是模拟电路设计自动化方向的一个优化框架,全称直译过来是“基于多目标强化学习、并由大语言模型引…

2026/11/1 2:02:11 阅读更多 →
蓝桥杯Scratch国赛真题解析:捉迷藏之四的算法与工程实践

蓝桥杯Scratch国赛真题解析:捉迷藏之四的算法与工程实践

1. 项目概述与核心价值“捉迷藏之四”这个项目,是第10届蓝桥杯Scratch国赛真题的第6题程序4。乍一看标题,很多刚接触竞赛的家长或孩子可能会觉得,这不就是个游戏吗?但作为带过好几届蓝桥杯队伍的指导老师,我必须说&…

2026/10/31 18:57:26 阅读更多 →
【TriCore-OS】ISR

【TriCore-OS】ISR

文章目录1. 中断1.1 Cat1 与 Cat2 对比1.2 入口宏的汇编实现1.3 中断屏蔽级别机制1.4 OS 如何介入 Cat2 ISR1.4.1 介入时机总览1.4.2 Os_Isr_Entry 详解1.4.3 Os_Isr_Exit 详解2. 定时器中断(OS_HRT)2.1 OS_HRT是什么2.2 OS_HRT流程图2.3 OS_HRT的触发流…

2026/10/25 2:40:42 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/1 0:24:43 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/31 10:20:19 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/31 10:20:23 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/1 1:06:58 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/31 10:30:19 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/31 9:29:43 阅读更多 →

日新闻

周新闻

月新闻