基于Flask的微博话题情感分析系统设计与实现
一、项目概述
本项目是一个轻量化的微博话题情感分析系统,通过Flask框架整合情感分析模型,实现对微博话题及评论的情感标签识别与结果展示。系统面向普通用户和研究者,提供简单易用的操作界面,支持输入话题和评论后快速获取对应的情感倾向(24种表情标签),并以可视化方式呈现分析结果。
项目目标
- 实现基于预训练模型的微博文本多标签情感识别
- 搭建Flask Web服务,支持用户通过网页交互完成分析流程
- 提供情感结果可视化展示与历史记录管理功能
- 确保系统在浏览器和移动设备上均能流畅运行
二、技术选型
核心技术栈
- 后端:Python 3.8+、Flask 2.0+(Web框架)
- 情感模型:Transformers库(预训练模型调用)、PyTorch(模型推理)
- 前端:HTML5、CSS3、JavaScript、Chart.js(数据可视化)
- 数据库:SQLite(用户数据与分析记录存储)
- 开发工具:VS Code、Postman(API测试)
三、系统设计
功能模块
-
用户交互模块
- 话题与评论输入界面
- 分析结果展示页面(含情感标签分布图表)
- 历史记录查询页面
-
情感分析模块
- 文本预处理(清洗、分词、格式转换)
- 预训练模型调用(加载、推理)
- 多标签情感结果解析
-
数据管理模块
- 用户分析记录存储与查询
- 情感标签数据维护
- 数据库连接与操作封装
核心代码示例
1. Flask后端API
from flask import Flask, request, jsonify, render_template
import torch
from transformers import BertTokenizer, BertForSequenceClassification
app = Flask(__name__)
# 加载预训练模型与分词器
tokenizer = BertTokenizer.from_pretrained("bert-base-chinese")
model = BertForSequenceClassification.from_pretrained(
"./emotion_model", num_labels=24
)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/analyze', methods=['POST'])
def analyze():
data = request.json
hashtag = data.get('hashtag')
comments = data.get('comments')
text = f"{hashtag}[SEP]{'[SEP]'.join(comments)}"
# 模型推理
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=128)
outputs = model(**inputs)
predictions = torch.sigmoid(outputs.logits).detach().numpy()[0]
# 解析结果(筛选概率>0.5的标签)
emotion_labels = ["微笑", "嘻嘻", "笑cry", ...] # 24种标签
result = {
emotion_labels[i]: float(predictions[i])
for i in range(24) if predictions[i] > 0.5
}
return jsonify({"success": True, "result": result})
if __name__ == '__main__':
app.run(debug=True)
2. 前端结果可视化
<!-- 结果展示页面 -->
<div class="result-container">
<h3>情感分析结果</h3>
<canvas id="emotionChart"></canvas>
</div>
<script>
// 使用Chart.js绘制情感分布饼图
function drawChart(emotions) {
const ctx = document.getElementById('emotionChart').getContext('2d');
new Chart(ctx, {
type: 'pie',
data: {
labels: Object.keys(emotions),
datasets: [{
data: Object.values(emotions),
backgroundColor: ['#FF6384', '#36A2EB', '#FFCE56', ...]
}]
}
});
}
</script>
四、系统实现与测试
主要页面
- 首页:提供话题和评论输入表单,支持批量粘贴评论内容
- 分析结果页:展示情感标签及概率,通过饼图/柱状图可视化分布
- 历史记录页:列表展示用户过往分析记录,支持重新查看详情
测试要点
- 文本输入长度限制与格式校验
- 模型分析响应时间(单条分析≤3秒)
- 多终端适配(手机、平板、PC浏览器)
- 数据库记录准确性(查询、删除功能)
五、总结
本系统通过Flask框架快速搭建Web服务,整合预训练模型实现微博话题情感分析,既满足了情感识别的准确性需求,又通过简洁的界面降低了使用门槛。项目可进一步扩展实时数据爬取、情感趋势分析等功能,提升系统实用性。
关键词:Flask、情感分析、多标签分类、微博数据、Web系统