news 2026/2/3 10:41:02

基于pytorch LSTM的对话情绪识别系统-毕业设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于pytorch LSTM的对话情绪识别系统-毕业设计

视频地址:

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. 代码结构清晰:模块化设计,代码注释完善,易于维护和扩展。

截图

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/3 4:02:05

AI如何简化Keycloak集成?5步实现自动化身份验证

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个基于React的前端应用,集成Keycloak进行用户认证。要求:1) 使用Keycloak JavaScript适配器 2) 实现登录/注销功能 3) 显示用户基本信息 4) 包含权限…

作者头像 李华
网站建设 2026/2/1 15:37:58

项目应用:通过对照表精准匹配实际元件封装

一次做对:用“对照表”打通Proteus设计与实物落地的最后一公里你有没有遇到过这样的情况?电路仿真跑得飞起,波形完美无瑕,信心满满地把PCB送去打样、贴片——结果板子回来一通电,芯片发烫、信号全无。拆下元件一看&…

作者头像 李华
网站建设 2026/2/1 6:25:38

面向工业应用的STLink驱动安装全过程记录示例

工业现场踩过的坑:一次搞定 ST-Link 驱动安装的实战全记录 最近在给产线部署一批新的 STM32 测试工装时,又遇到了那个“老朋友”——ST-LINK 插上电脑后设备管理器里显示“未知设备”。不是没装驱动,而是明明之前能用的环境,换了一…

作者头像 李华
网站建设 2026/2/1 20:23:56

5分钟用AIDL搭建跨进程通信原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 生成一个可立即运行的AIDL原型:1. 实现简单的消息传递接口;2. 包含服务端和客户端的最小实现;3. 支持即时消息发送/接收;4. 提供一键…

作者头像 李华