-
舆情系统总模板 :
CodeAsPoetry/PublicOpinion这个项目本身就是舆情分析系统,包含爬虫、数据清洗、文本摘要、主题分类、情感倾向识别、可视化 ,适合拿来改整体框架。(GitHub)
-
分类 + 聚类模板 :
KongXiangFantasy/nlp-text-analysis-bert这个更适合你要的核心内容,里面有BERT 文本向量化、KMeans 聚类、文本分类、语义搜索、PCA 可视化 ,可以改成学校舆情的"分类和聚类模块"。(GitHub)
-
情感分析模板 :
hellonlp/sentiment-analysis这个项目整理了中文情感分析的几种实现:词典法、Bayes、ALBERT、TextCNN 等,适合改成舆情"正面/中性/负面/强负面"的情绪识别模块。(GitHub)
还有一篇 2026 年的轻量级 AI 舆情系统文章,结构上也可参考:数据采集层、数据处理层、AI 分析引擎、可视化与预警层,技术栈包括 Python、Transformers / PaddleNLP、Chroma / Milvus、Celery + Redis、Streamlit / Grafana。(技术栈)
学校舆情监控系统模板:分析、分类、聚类版
基于 NLP 的学校网络舆情分析与预警系统设计
面向校园场景的网络舆情文本分类、情感分析与聚类预警系统
一、系统主要目标
本系统面向学校网络舆情管理场景,通过采集公开网络平台、校园反馈渠道和人工录入的文本数据,对校园相关舆情进行自动化分析,主要实现以下功能:
- 对舆情文本进行清洗、去重和关键词提取;
- 判断文本是否与本校相关;
- 对文本进行情感倾向分析;
- 对舆情内容进行主题分类;
- 对相似舆情进行聚类,发现集中爆发的问题;
- 根据情绪强度、传播热度和主题风险生成预警等级;
- 通过可视化看板展示舆情趋势、主题分布和重点事件。
这部分不用写得太"监控感",可以强调:辅助学校发现公共问题、优化管理、回应学生和家长诉求。
二、系统总体架构模板
text
数据采集层
↓
数据预处理层
↓
文本分析层
├── 情感分析
├── 主题分类
├── 风险等级识别
└── 关键词提取
↓
文本聚类层
├── 文本向量化
├── 相似度计算
├── KMeans / DBSCAN 聚类
└── 舆情事件合并
↓
预警与可视化层
├── 舆情看板
├── 趋势分析
├── 高风险预警
└── 报告生成
这个结构可以直接改成论文/项目文档的"系统设计"部分。
三、数据分析模块模板
3.1 文本清洗
对采集到的原始舆情文本进行预处理,主要包括:
text
去除 URL 链接
去除表情符号和特殊字符
去除 HTML 标签
统一繁简体/大小写
去除重复文本
去除无意义短文本
分词
停用词过滤
处理前:
text
救命!XX学校食堂这个饭真的离谱!!!http://xxx.com 😂😂😂
处理后:
text
XX学校 食堂 饭 离谱
3.2 关键词提取
可以使用:
- TF-IDF;
- TextRank;
- jieba 词频统计;
- BERT 语义关键词提取。
输出示例:
text
原文:学校食堂饭菜价格越来越贵,菜量还变少了,学生意见很大。
关键词:食堂、饭菜价格、菜量、学生意见
在学校舆情系统里,关键词可以分成几类:
text
地点类:食堂、宿舍、操场、校门、教学楼
人员类:老师、学生、家长、辅导员、宿管
事件类:霸凌、收费、处分、食品安全、考试、体罚
情绪类:离谱、愤怒、投诉、曝光、失望、恶心
四、舆情分类模块模板
这是你说的重点之一。
4.1 分类目标
系统需要将校园舆情自动归入不同类别,方便学校快速判断问题归属部门和风险程度。
可以设计以下分类标签:
| 类别编号 | 舆情类别 | 例子 | 责任部门 |
|---|---|---|---|
| C1 | 食品卫生类 | 食堂饭菜、异物、食物中毒 | 后勤处 |
| C2 | 宿舍管理类 | 宿舍维修、断水断电、宿管冲突 | 后勤处 / 学工处 |
| C3 | 教学考试类 | 课程安排、考试公平、成绩争议 | 教务处 |
| C4 | 师德师风类 | 教师不当言行、体罚、歧视 | 人事处 / 纪检 |
| C5 | 校园安全类 | 打架、霸凌、伤害、火灾 | 保卫处 / 学工处 |
| C6 | 收费财务类 | 乱收费、退费、奖助学金 | 财务处 |
| C7 | 招生就业类 | 招生宣传、就业服务、实习争议 | 招生就业处 |
| C8 | 网络谣言类 | 未证实爆料、恶意传播 | 宣传部 |
| C9 | 正面宣传类 | 获奖、活动、志愿服务 | 宣传部 |
| C10 | 其他类 | 无法明确归类 | 人工审核 |
4.2 分类方法
可以写成三种方案。
方案一:关键词规则分类
适合早期版本。
text
如果文本中出现"食堂、饭菜、菜价、异物、拉肚子",归为食品卫生类;
如果文本中出现"宿舍、寝室、断电、漏水、空调",归为宿舍管理类;
如果文本中出现"考试、挂科、成绩、补考、监考",归为教学考试类。
优点:简单、可解释。
缺点:容易误判,泛化能力弱。
方案二:机器学习分类
可以使用:
text
TF-IDF + 朴素贝叶斯
TF-IDF + SVM
TF-IDF + 逻辑回归
流程:
text
标注训练数据
↓
文本分词
↓
TF-IDF 特征提取
↓
训练分类模型
↓
输出类别和置信度
方案三:BERT 分类
适合论文或高级版本。
流程:
text
输入舆情文本
↓
BERT 编码
↓
全连接分类层
↓
Softmax 输出类别概率
↓
得到舆情类别
输出示例:
json
{
"text": "学校食堂饭菜里吃出异物,希望尽快处理",
"category": "食品卫生类",
"confidence": 0.93
}
五、情感分析模块模板
5.1 情感标签设计
学校舆情不要只分"正面/负面",建议更细一点:
| 情感标签 | 含义 | 例子 |
|---|---|---|
| 正面 | 表扬、认可、支持 | 学校这次处理很及时 |
| 中性 | 陈述事实、通知信息 | 明天学校进行宿舍检查 |
| 轻度负面 | 不满、吐槽 | 食堂最近有点贵 |
| 强烈负面 | 愤怒、投诉、曝光 | 真的忍不了了,必须曝光 |
| 高危情绪 | 伤害、自残、霸凌、极端表达 | 涉及人身安全或心理危机内容 |
5.2 情感分析方法
可以参考中文情感分析模板,分为三种:
text
词典法:根据情感词典和否定词规则计算情绪分数
传统机器学习:Bayes、SVM 等模型
深度学习:ALBERT、BERT、TextCNN 等模型
这种分法和公开情感分析项目中的分类思路一致:中文情感分析常见方法包括词典方法、传统机器学习方法和深度学习方法。(GitHub)
5.3 情感分数计算模板
可以设计一个分数:
text
sentiment_score ∈ [-1, 1]
含义:
text
-1.0 ~ -0.7:强烈负面
-0.7 ~ -0.3:轻度负面
-0.3 ~ 0.3:中性
0.3 ~ 0.7:轻度正面
0.7 ~ 1.0:强烈正面
输出示例:
json
{
"text": "宿舍空调坏了三天没人修,真的很无语",
"sentiment": "轻度负面",
"sentiment_score": -0.61
}
六、舆情聚类模块模板
这是你要重点改的第二部分。
6.1 聚类目标
舆情聚类的作用是把"说同一件事"的内容合并成一个事件。
例如下面几条:
text
学校三食堂饭菜里有异物。
今天三食堂又被吐槽卫生问题。
有人说三食堂吃出虫子,真的假的?
三食堂食品安全问题希望学校回应。
系统应该把它们聚成一个事件:
text
事件名称:三食堂食品卫生争议
所属类别:食品卫生类
情绪倾向:负面
风险等级:较高
涉及地点:三食堂
6.2 聚类流程
可以这样写:
text
舆情文本集合
↓
文本清洗
↓
BERT / Sentence-BERT 向量化
↓
计算文本相似度
↓
KMeans / DBSCAN / 层次聚类
↓
生成舆情事件簇
↓
提取每个簇的关键词和代表文本
公开的 BERT 文本分析项目中就包含类似思路:使用 BERT 将中文文本转成向量,再用 KMeans 聚类,并用 PCA 做二维可视化,还可以用轮廓系数评估聚类效果。(GitHub)
6.3 聚类算法选择
| 算法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| KMeans | 已知大概有多少类话题 | 简单、速度快 | 需要提前设定 K |
| DBSCAN | 舆情事件数量不固定 | 能发现噪声点 | 参数较难调 |
| 层次聚类 | 数据量不大、需要看话题层级 | 结果直观 | 数据大时慢 |
| LDA | 主题建模 | 可解释性较好 | 对短文本效果一般 |
| BERTopic | 语义主题聚类 | 适合现代文本主题发现 | 部署略复杂 |
学校场景建议:
text
MVP 版:TF-IDF + KMeans
增强版:BERT 向量 + KMeans / DBSCAN
高级版:Sentence-BERT + BERTopic + 向量数据库
6.4 聚类结果模板
json
{
"cluster_id": 12,
"event_title": "三食堂食品卫生争议",
"topic": "食品卫生类",
"sentiment": "强烈负面",
"risk_level": "三级预警",
"keywords": ["三食堂", "异物", "虫子", "卫生", "投诉"],
"count": 37,
"first_seen_time": "2026-05-14 09:20:00",
"latest_seen_time": "2026-05-14 13:45:00",
"representative_text": "学校三食堂饭菜里吃出异物,希望尽快处理。"
}
七、风险等级分析模板
可以把风险分数设计成:
text
risk_score = 情感强度 × 0.3 + 主题风险 × 0.3 + 传播热度 × 0.2 + 聚类规模 × 0.2
然后分级:
| 分数范围 | 风险等级 | 说明 |
|---|---|---|
| 0---30 | 低风险 | 普通吐槽、零散意见 |
| 31---60 | 中风险 | 多人讨论,需要关注 |
| 61---80 | 高风险 | 负面集中爆发,需要处理 |
| 81---100 | 重大风险 | 涉及安全、伤害、媒体传播 |
高危主题可以直接加权:
text
校园霸凌 +30
食品安全 +25
师德师风 +25
人身伤害 +40
考试公平 +20
乱收费 +20
这样系统不会只看评论数量,也会看事件性质。
八、可以直接写进论文/项目文档的模块描述
你可以这样写:
本系统的文本分析模块主要包括情感分析、主题分类和文本聚类三个部分。首先,系统对采集到的校园舆情文本进行清洗、分词、去重和关键词提取,得到规范化文本数据。其次,系统利用情感分析模型判断文本的情绪倾向,将舆情划分为正面、中性、轻度负面、强烈负面和高危情绪等类型。然后,系统通过文本分类模型识别舆情主题,包括食品卫生、宿舍管理、教学考试、师德师风、校园安全、收费财务等类别。最后,系统将文本转换为语义向量,并使用聚类算法对相似舆情进行合并,形成舆情事件簇,从而帮助管理人员发现集中爆发的问题和潜在风险。
再写分类模块:
在主题分类方面,系统采用"关键词规则 + 机器学习模型"的混合方法。对于食品卫生、校园安全、考试公平等高风险主题,系统优先使用关键词规则进行快速识别;对于一般性舆情文本,系统使用基于 BERT 的文本分类模型进行类别预测,并输出对应的分类置信度。当模型置信度较低时,文本将进入人工审核队列,以降低误判风险。
再写聚类模块:
在聚类分析方面,系统首先使用 BERT 或 Sentence-BERT 模型将舆情文本编码为语义向量,然后计算文本之间的余弦相似度,并通过 KMeans、DBSCAN 等聚类算法将语义相近的文本合并为同一舆情事件。聚类完成后,系统自动提取每个事件簇中的高频关键词、代表文本、情感倾向和传播数量,并生成事件标题,辅助管理人员快速了解舆情焦点。
九、推荐你最终采用的模板组合
我建议你这样改:
text
整体框架:参考 CodeAsPoetry/PublicOpinion
情感分析:参考 hellonlp/sentiment-analysis
分类聚类:参考 KongXiangFantasy/nlp-text-analysis-bert
工程结构:参考轻量级 AI 舆情监控系统文章
你的学校舆情系统可以重点突出:
text
1. 校园舆情主题分类
2. 校园舆情情感分析
3. 相似舆情事件聚类
4. 风险等级预警
5. 可视化分析看板
一句话总结:
不要从零写"舆情监控系统",而是把公开舆情项目的采集和可视化框架,套上 BERT 分类 + KMeans/DBSCAN 聚类 + 情感分析模块,改成校园场景即可。