基于 Python Flask 和 朴素贝叶斯模型 构建的轻量级校园舆情分析系统,用于模拟对校园论坛、社交媒体文本的情感倾向分析,并提供可视化仪表盘。
- 全网贴文总量统计
- 情感倾向分布(积极/中立/消极)饼图
- 24 小时舆情热度趋势
- 数据来源统计
- 输入文本即可获得即时情感判定
- 三类情感的概率可视化
- 自动提取文本关键词
- 内置爬虫模拟器
- 自动生成带时间戳、来源、情感标签的模拟校园贴文数据
- 使用 TF-IDF + MultinomialNB(朴素贝叶斯)
- 针对校园语料场景进行了特化训练(如“芙蓉隧道”“选课”“食堂”)
.
├── app.py # Flask 后端主程序 (API & 静态文件托管)
├── index.html # 前端单页面 (Tailwind CSS + Chart.js)
├── model_train.py # 模型训练脚本
├── spider.py # 数据生成/模拟爬虫脚本
├── database.db # SQLite 数据库
└── models/
└── sentiment_nb.pkl # 训练好的情感分析模型
确保安装 Python 3.8+,并执行:
pip install flask flask-cors jieba scikit-learn joblib numpy严格按顺序运行以下脚本:
python model_train.py脚本将在 models/ 目录生成 sentiment_nb.pkl 模型文件。
python spider.py运行后输入需要生成的数据条数(推荐:1000)。
脚本将自动创建 database.db 并使用模型进行情感标注。
python app.py如看到输出:
🚀 舆情系统后端已启动...
说明服务已运行在:
浏览器打开:
你将看到仪表盘和“舆情内容实时检测”区域。
| 接口路径 | 方法 | 描述 |
|---|---|---|
/api/dashboard |
GET | 获取仪表盘数据(总数、来源、情感分布、趋势) |
/api/analyze |
POST | 输入 {text:"内容"} 返回情感分类、概率、关键词 |
- 积极:厦门大学是最美校园,芙蓉湖太漂亮了,爱了爱了!
- 消极:食堂的菜越来越贵,量还少,这学期的课表排得太满了。
- 中立:请问翔安校区怎么去本部?明天上午有一节高数课。
- 后端:Python, Flask, SQLite
- 前端:HTML5, Tailwind CSS(CDN), Chart.js(CDN)
- 算法:Scikit-learn(朴素贝叶斯), Jieba(中文分词)
注意:本项目仅用于学习与演示,所有数据均为随机生成,不代表真实舆情。