面向新闻标题的舆情分析系统:真实采集中国新闻网、人民网、新华网 725 条公开标题,清洗后 232 条入库,完成情感判定、TF-IDF 关键词、KMeans 热点聚类与舆情预警,并在 20 条人工抽检中如实报告模型偏差(三分类一致率 60%、负面召回 100%)。第 20 套「杂志特稿风」界面。
视频也可在 B 站视频页 观看
| 编程语言 | Python 3.8 及以上 |
|---|---|
| 后端框架 | Django 4.2 |
| 数据采集 | requests 抓中新网滚动/频道页 + RSS 解析(低频、只取元数据) |
| 文本分析 | jieba 0.42(分词/TF-IDF)、SnowNLP(情感)、scikit-learn 1.3(TF-IDF + KMeans) |
| 数据库 | MySQL 8.0(交付默认 SQLite,免安装) |
| 可视化 | ECharts 5(已内置本地文件,离线可用) |
| 数据规模 | 原始 725 条 / 清洗后 232 条 / 8 频道 / 2 天 / 8 话题 |
| 操作系统 | Windows / macOS / Linux |
| 启动方式 | 双击一键脚本,或 python manage.py runserver 8085 |
下面是交付包里的真实目录,共 59 个文件。只展示文件名,不含文件内容; 点击文件夹可逐层展开,看到每个模块是怎么拆分的。
点击任意一张可放大,支持左右切换(也可用键盘 ← → 键)











交付的任务书、开题报告与论文均为 Word 文档,下面是真实页面预览;点击可放大并左右切换:



是。从中国新闻网滚动页与频道页、人民网 RSS、新华网 RSS 采集公开标题与发布时间,共 725 条,原始 CSV 随包可下载。只取标题/链接/时间等元数据,不抓正文。
公开滚动页只保留最近约 10 页;人民网 RSS 返回的是 2025-06 的旧缓存批次,与 2026-11 不在同一舆情窗口,混排会让时间轴断裂,因此在导入时按年份过滤。系统设计为可重复采集,持续运行即可累积时序。
不完全准,论文里如实报告了:20 条人工抽检的三分类一致率 60%,负面召回 100%、精确率 50%。模型对坠机、袭击、事故这类真负面很敏感,但会把天气、赛果、会议等中性陈述判为正面。系统只把它用于趋势参考,页面明示「不代表事实判断」。
社会频道天然多事故类标题,负面率高不代表报道倾向负面。页面只做相对差异提示,并在说明里写清这一点。
对全部标题做 TF-IDF 向量化后用 KMeans 聚 8 簇,每簇取权重最高的词作簇名,并过滤单字与符号。簇名不够自然,定位是「分组找线索」,不是给话题下定义。
负面占比 ≥25% 记一条;每日高频词取前 3 且出现 ≥5 次。因为窗口只有 2 天,前 7 日移动基线不稳定,所以改用绝对阈值,这个取舍本身写进了论文 6.4。
能。python3 crawler/fetch_news.py 重新采集,再 python3 manage.py import_news 重算情感、关键词、聚类与预警,页面和论文数字会一起更新。
访客可看 9 个分析页面并下载 CSV;管理员通过 Django admin 维护新闻、话题与采集日志(演示账号 admin / admin123456)。