☰
基于pytorch LSTM的对话情绪识别系统-毕业设计
2026/10/14 7:24:33 网站建设 项目流程

视频地址:

https://www.bilibili.com/video/BV1tcqTBxE13/

项目简介

本项目是一个基于长短期记忆网络(LSTM)的中文对话情绪识别Web应用系统。用户可以通过Web界面输入中文对话文本,系统能够自动识别并分类文本所表达的情绪类别,同时展示各情绪类别的概率分布。

项目采用前后端分离架构,后端基于Python Flask框架和PyTorch深度学习框架实现,前端使用Bootstrap框架构建响应式界面。模型使用LSTM网络对中文文本进行情感分析,能够识别平静、开心、伤心、生气、惊讶、厌恶、疑问、关心共八种情绪类别。

本项目是毕业设计作品,完整实现了从数据预处理、模型训练、Web开发到部署上线的全流程,具有较高的工程实践价值。

功能特性

核心功能

  1. 文本情感识别:用户输入中文文本,系统调用LSTM模型进行情感分析,返回预测的情绪类别和概率分布。

  2. 随机样本测试:系统内置数据集,支持随机抽取已标注的对话文本进行测试,方便评估模型效果。

  3. 概率可视化:以进度条形式直观展示各情绪类别的概率分布,帮助用户理解模型的判断依据。

  4. 真实标签对比:随机抽取样本时显示真实标签,便于用户对比预测结果与真实标签的差异。

界面特性

  1. 响应式设计:适配桌面端和移动端,在不同屏幕尺寸下都能正常显示和交互。

  2. 现代化UI:采用紫色渐变配色方案,界面简洁美观,操作直观便捷。

  3. 流畅交互:按钮悬浮动画、概率条动态效果,提升用户体验。

技术架构

后端技术

技术用途
Python 3.8+编程语言
Flask 3.1.0Web框架,提供RESTful API服务
PyTorch 2.9.0深度学习框架,实现LSTM模型
jieba 0.42.1中文分词工具
pandas 2.2.3数据处理与分析

前端技术

技术用途
HTML5页面结构
CSS3样式设计
JavaScript交互逻辑
Bootstrap 5.3.0响应式UI框架
Axios异步HTTP请求

模型架构

输入层 → 词嵌入层(32维) → LSTM层(64维) → Dropout(0.5) → 全连接层(8类) → Softmax
  • 词嵌入层:将词汇表中的词索引转换为32维稠密向量
  • LSTM层:单层LSTM,隐藏层维度64,捕捉序列的时序特征
  • Dropout层:概率0.5,防止过拟合
  • 全连接层:将64维隐藏状态映射到8个情感类别

目录结构

emotion_dialogue_classify/ ├── static/ # 静态资源目录 │ ├── css/ │ │ └── bootstrap.min.css # Bootstrap CSS(本地化) │ └── js/ │ └── axios.min.js # Axios库(本地化) ├── templates/ │ └── index.html # 前端页面模板 ├── app.py # Flask后端主程序 ├── model_state_dict.pth # 预训练模型参数 ├── vocabulary.pth # 词汇表文件 ├── train_model.ipynb # 模型训练代码(Jupyter Notebook) ├── Simplified_Chinese_Multi-Emotion_Dialogue_Dataset.csv # 训练数据集 ├── dataset_infos.json # 数据集元信息 ├── training_curve.png # 训练曲线图 ├── 数据集说明.md # 数据集详细说明 ├── 文档.md # 毕业设计完整文档 └── README.md # 项目说明文件

使用系统

  1. 打开浏览器访问 http://localhost:5000
  2. 在左侧文本框输入中文对话文本
  3. 点击"开始识别"按钮
  4. 右侧显示识别结果:预测情绪类别和概率分布

或者点击"随机抽取"按钮,系统从数据集中随机选择一条样本进行测试。

数据集说明

本系统使用简体中文多情感对话数据集,数据源自Johnson8187/Chinese_Multi-Emotion_Dialogue_Dataset,经过Qwen2.5-32B模型翻译为简体中文。

数据集统计

情绪类别样本数量占比
平静70517.0%
开心59214.2%
关心56013.5%
生气52712.7%
惊讶49912.0%
伤心48611.7%
厌恶4049.7%
疑问3869.3%
合计4159100%

数据格式

数据集为CSV格式,包含两列:

  • text:对话文本内容
  • label:情绪类别标签

示例数据

textlabel
今天天气真好,心情很愉快开心
这件事让我很生气生气
你没事吧?要不要紧?关心

模型性能

训练配置

参数数值
训练轮次60
批次大小64
学习率0.1
优化器SGD(动量0.9)
权重衰减2e-3
学习率调度每20轮衰减

性能指标

指标数值
训练集准确率96.67%
测试集准确率75.86%
最终训练损失0.12
最终测试损失0.78

训练曲线

训练过程中记录了每轮的准确率和损失变化,训练曲线保存为training_curve.png文件。从曲线可以看出:

  • 模型在约20轮后趋于收敛
  • 训练集和测试集性能差距表明存在一定过拟合
  • 学习率调度有效避免了训练后期的振荡

API接口

1. 主页

请求

GET /

响应:返回index.html页面

2. 情感识别

请求

POST /predict Content-Type: application/x-www-form-urlencoded text=今天天气真好

响应

{ "text": "今天天气真好", "result": [ {"emotion": "开心", "probability": 0.8532}, {"emotion": "平静", "probability": 0.0821}, {"emotion": "关心", "probability": 0.0315}, ... ], "top_emotion": "开心", "top_probability": 0.8532 }

3. 随机抽取

请求

GET /random

响应

{ "text": "你今天看起来心情不错啊", "true_label": "开心" }

项目亮点

  1. 完整的机器学习流程:涵盖数据预处理、模型训练、模型评估、Web部署全流程。

  2. 实用的中文NLP应用:针对中文文本特点,使用jieba分词处理中文语言。

  3. 现代化的Web界面:采用响应式设计,视觉效果现代美观。

  4. 本地化部署:所有静态资源本地化,不依赖外部CDN,可离线运行。

  5. 代码结构清晰:模块化设计,代码注释完善,易于维护和扩展。

截图

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询