毕设网毕设选题大全 · 成品源码

基于 Django 的新闻舆情分析系统设计与实现

项目编号 020 · 更新 2026-11-05
PythonDjangojiebaSnowNLPscikit-learnEChartsMySQL

获取方式

两个渠道都可以买:面包多(在线支付、自动发货)或闲鱼;也可以加微信咨询。

面包多购买 闲鱼购买 去 B 站看演示

咨询微信:csbysj2020 / ACE2487(备注 BS)

项目简介

面向新闻标题的舆情分析系统:真实采集中国新闻网、人民网、新华网 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

功能模块

  • 真实采集:中国新闻网滚动分页 + 国内/社会频道页 + 人民网/新华网 RSS,共 725 条标题;只取标题/链接/时间等元数据,不抓正文
  • 清洗与批次过滤:按 URL 去重、剔除过短与异常标题、过滤人民网 RSS 的 2025-06 旧缓存批次,避免时间轴断裂;最终 232 条、2 天窗口如实标注
  • 情感判定:SnowNLP 打分 0~1,三段阈值;20 条人工抽检得出三分类一致率 60%、负面召回 100%、精确率 50%——模型对真负面敏感,却把中性陈述判为正面
  • 关键词:jieba TF-IDF 每篇抽 5 词,汇总 TOP30,并统计每个关键词的负面率与峰值日期
  • 热点聚类:TF-IDF + KMeans 聚 8 簇,过滤单字与符号后取权重词作簇名(新疆/服务、博会/第九届等),每簇附代表标题
  • 预警:负面占比 ≥25% 记一条、每日高频词取前三且 ≥5 次;因窗口仅 2 天,弃用不稳定的「7 日移动基线」,规则改动本身写进论文
  • 9 个页面 + 原始 CSV 下载 + Django admin,ECharts 本地内置离线可用;第 20 套杂志特稿风(纯白 + 墨黑大字 + 克莱因蓝)
  • 论文实验可复现:所有数字来自 data/analysis/findings.json,重跑 import_news 自动更新

交付内容

  • 完整源码(Django 工程 + 真实采集脚本 + 情感/关键词/聚类/预警导入命令)
  • 原始新闻标题 CSV 与演示数据库、findings.json 实验产物
  • 毕业设计任务书(Word)
  • 毕业设计开题报告(Word)
  • 毕业论文(Word,七章制,含人工抽检与模型偏差分析)
  • 系统使用与二次开发说明(Word + md)
  • 系统运行截图 11 张

最终成品目录结构

下面是交付包里的真实目录,共 59 个文件。只展示文件名,不含文件内容; 点击文件夹可逐层展开,看到每个模块是怎么拆分的。

根目录:020-基于Django的新闻舆情分析系统

界面截图

点击任意一张可放大,支持左右切换(也可用键盘 ← → 键)

新闻舆情分析
舆情总览
新闻舆情分析
热度趋势
新闻舆情分析
频道对比
新闻舆情分析
热点话题
新闻舆情分析
关键词分析
新闻舆情分析
情感分析与抽检样本
新闻舆情分析
舆情预警
新闻舆情分析
数据质量与窗口说明
新闻舆情分析
原始数据下载
新闻舆情分析
热点话题与最新预警
新闻舆情分析
管理端

文档预览

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

毕业论文(七章制)
毕业论文(七章制)
毕业设计任务书
毕业设计任务书
开题报告
开题报告

常见问题

数据是真实采集的吗?

是。从中国新闻网滚动页与频道页、人民网 RSS、新华网 RSS 采集公开标题与发布时间,共 725 条,原始 CSV 随包可下载。只取标题/链接/时间等元数据,不抓正文。

为什么只有 232 条、2 天?

公开滚动页只保留最近约 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)。

💬 在线咨询9:00–23:00
加微信咨询

备注 BS

csbysj2020ACE2487

也可在 B 站 看演示