拓冰建站拓冰建站
首页 / 资讯中心 / 正文

虚假新闻检测系统

虚假新闻检测系统本项目是基于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
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门