news 2026/10/19 2:15:53

基于LSTM的对话情绪识别系统计算机毕设(源码+lw+部署文档+讲解等)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于LSTM的对话情绪识别系统计算机毕设(源码+lw+部署文档+讲解等)

博主介绍:✌ 专注于VUE,小程序,安卓,Java,python,物联网专业, 从事毕业指导,项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题,我会尽力帮助你。

一、研究目的

随着自然语言处理技术的快速发展,基于文本的情绪识别已成为人机交互、智能客服等领域的重要研究方向。对话情绪识别旨在从多轮交互中捕捉说话者的主观情感状态,为系统提供更为细腻的人性化响应。然而,现有研究多聚焦于单句或短文本的情绪分类,忽视了对话上下文的动态演变,导致识别准确率受限。

此外,传统机器学习方法依赖手工特征工程,在面对语义多样、词汇稀疏的对话数据时往往难以泛化。深度学习模型虽能自动抽取特征,但在序列建模方面仍存在梯度消失、长程依赖捕捉不足等问题,尤其在情绪识别任务中,情感信息往往分布在句子长尾或跨句子层面。

本研究的主要目的在于构建一种基于长短时记忆网络(LSTM)的对话情绪识别系统,以充分利用对话历史的时间依赖特征。具体而言,首先通过多层双向LSTM对每轮对话文本进行编码,捕捉前后文信息;其次引入注意力机制,对情感相关词汇进行加权聚合;再次设计情绪标签预测层,将连续的情感概率映射为离散类别。

通过在公开对话语料库上进行实验,本系统将与传统支持向量机、卷积神经网络以及最新Transformer模型进行对比,评估其在准确率、召回率、F1值等指标上的优势。同时,本研究还将探讨模型在不同语言、不同情绪强度下的鲁棒性,为后续多模态情绪识别提供理论依据。

综上所述,本研究旨在填补现有对话情绪识别技术中上下文建模不足的空白,提出一种兼顾时序信息与注意力机制的LSTM框架,并通过系统实验验证其有效性。预期成果将为智能客服、情感计算以及人机共情等应用场景提供更精准、更可靠的情绪识别支持。

二、研究意义

在自然语言处理与情感计算交叉领域,对话情绪识别的研究意义首先体现在理论层面。传统情绪识别方法多聚焦于单句或短文本的分类,忽视了对话中的时间序列信息和上下文依赖,导致情感特征提取不完整。通过引入长短时记忆网络,本研究能够系统地捕捉跨轮对话中的情绪演变规律,为序列情感建模提供新的理论框架。其次,在实践层面,智能客服、在线教育与心理健康监测等应用场景均需要对用户情绪做出即时、准确的判断。构建基于LSTM的对话情绪识别系统,可显著提升自动化服务的情感适应性,从而改善用户体验并降低人工成本。再次,研究成果将为多模态情绪识别提供重要参考。结合文本与语音、面部表情等多源信息,本系统的时序建模思路可推广至跨模态融合模型,进一步提升情感识别的鲁棒性与泛化能力。最后,本研究通过在公开对话语料库上进行系统实验,验证了模型在准确率、召回率与F1值等指标上的优势,为后续算法改进和应用落地提供了可靠的数据支撑。综上所述,本研究不仅填补了对话情绪识别中上下文建模的空白,还为智能交互系统的情感适应性奠定了坚实基础,具有重要的学术价值与社会意义。

三、国内外研究现状

国内外对话情绪识别的研究始于对单句文本情感的分类,随后逐步扩展至多轮交互中的时间序列分析。早期研究主要采用基于词典的情感得分方法,例如利用SentiWordNet、AFINN等英文情绪词表,对句子中出现的情绪词进行统计,从而得到整体情绪倾向。随后,机器学习方法逐渐成为主流,支持向量机、朴素贝叶斯以及决策树等模型在IEMOCAP、MELD等公开数据集上取得了可观的分类效果,但其对语义上下文的建模能力有限。

随着深度学习技术的兴起,卷积神经网络被用于提取局部情感特征,随后循环神经网络特别是长短时记忆网络(LSTM)和门控循环单元(GRU)被广泛应用于对话序列建模。LSTM能够有效缓解梯度消失问题,捕捉跨轮对话中的情绪演变规律。研究者在此基础上引入注意力机制,对情感相关词汇进行加权聚合,进一步提升了情绪识别的准确性。近年来,基于Transformer的预训练模型如BERT、RoBERTa以及其多语言版本已被迁移到对话情绪识别任务中,通过微调实现了显著的性能提升。

在国内,学者们针对中文语料构建了专门的情绪词典和标注数据集,例如CASIA中文情感语料库、SentiWordNet中文版本以及近年公开的DailyDialog-CH、MELD-CH等多轮对话情绪标注数据。国内研究者在词向量层面采用了基于Word2Vec、GloVe以及更为先进的BERT-Base-Chinese进行预训练;在模型层面则探索了层次注意力网络(HAN)、图卷积网络(GCN)以及多模态融合框架,以更好地捕捉对话结构与情感信息。

近年来,跨模态情绪识别成为热点方向,研究者将语音、面部表情与文本信息进行联合建模,提出了多模态注意力机制、跨模态对齐模型以及多任务学习框架,以提升在嘈杂环境下的鲁棒性。与此同时,领域适应与迁移学习也受到关注,研究者通过对抗训练、域自适应层以及多源域联合学习等方法,使得模型能够在不同情景下保持较高的识别性能。

总体而言,国内外在对话情绪识别领域已形成从词典统计到机器学习,再到深度学习与预训练模型的技术演进路径。主要研究方向包括:时间序列情感建模、注意力机制与层次结构、预训练语言模型迁移、多模态融合以及跨域适应。尽管在准确率、召回率等指标上已取得显著进展,但对话中的讽刺、双关语以及文化差异仍然是当前研究的难点,未来工作需要进一步提升模型对上下文细节与隐含情绪的捕捉能力。

四、预期达到目标及解决的关键问题

预期目标首先是构建一种能够在多轮对话中实时识别说话者情绪的系统,系统应具备高准确率、低延迟以及良好的可扩展性。为实现这一目标,研究计划通过双向长短时记忆网络对每轮文本进行编码,并在此基础上引入多头注意力机制,以突出情感相关词汇的贡献,从而提升情绪分类的精度。系统还将设计一个多任务学习框架,将情绪识别与对话意图预测并行训练,以充分利用两者之间的互补信息。最终目标是使系统在公开中文对话语料库上达到或超过现有基准模型的F1值,并在真实环境中实现毫秒级响应时间。

关键问题主要包括以下几个方面。首先,数据不平衡是情绪识别中的常见难题,尤其在多轮对话中,正面情绪往往占据绝大多数,而负面或中性情绪则稀缺。为此,需要探索基于重采样、损失函数加权以及合成数据生成的多种策略,以提升模型对少数类情绪的识别能力。其次,讽刺、反语以及隐含情绪在自然对话中频繁出现,这些语言现象往往依赖于上下文信息和语境推理。如何让模型捕捉到跨句子甚至跨段落的情感线索,是提升系统鲁棒性的关键。再次,长文本中的长程依赖仍然是LSTM模型的瓶颈,尤其在对话跨度较大时,早期信息容易被遗忘。为此,需要研究改进型记忆单元、门控机制以及外部记忆模块,以增强对远程上下文的保持能力。

此外,跨域适应也是实现系统普适性的必要条件。不同应用场景(如客服、医疗咨询、社交聊天)中的语言风格、情绪表达方式以及话题分布均存在差异。研究计划通过对抗性训练、领域自适应层以及多源域联合学习等方法,使模型在新领域中保持较高的识别性能。最后,系统部署与实时推理的技术挑战不可忽视。为满足在线服务的低延迟需求,需要在模型压缩、量化以及硬件加速方面开展研究,以确保模型既不牺牲准确率,又能满足实际运算资源限制。

综上所述,本研究旨在通过改进LSTM架构、引入注意力机制与多任务学习,解决数据不平衡、讽刺识别、长程依赖与跨域适应等关键问题,最终实现一种高效、鲁棒的对话情绪识别系统,为自然语言交互技术的发展提供重要支撑。

五、研究内容

本研究围绕基于长短时记忆网络的对话情绪识别系统展开,整体内容可划分为数据准备、模型设计与实现、实验评估以及系统部署四大模块。首先,在数据准备阶段,将收集并整理国内外公开的多轮对话情绪标注语料库,包括DailyDialog-CH、MELD-CH以及自建的情绪标注数据集;随后进行文本清洗、分词、词向量初始化,并通过预训练中文BERT模型生成上下文嵌入,以提升语义表达的丰富度。其次,模型设计与实现阶段将构建双向长短时记忆网络作为主干网络,对每轮对话文本进行编码;在此基础上引入多头注意力机制,以动态聚焦情绪相关词汇;并通过门控机制与外部记忆单元强化对长程依赖的捕捉;此外,为解决类别不平衡问题,将采用重采样、损失加权以及合成数据生成等技术,确保模型对少数类情绪的识别能力。第三,实验评估阶段将采用准确率、召回率、F1值以及AUC等指标,对比传统支持向量机、卷积神经网络以及最新Transformer模型的表现;并在不同情绪强度、不同话题域以及跨语言场景下进行鲁棒性测试;进一步通过多任务学习框架,将情绪识别与对话意图预测并行训练,以挖掘两者之间的互补信息。最后,系统部署阶段将针对在线服务需求,对模型进行量化、剪枝以及知识蒸馏,以降低推理延迟;并结合边缘计算平台实现实时情绪识别,最终形成可嵌入客服机器人、智能问答系统以及心理健康监测平台的完整解决方案。通过上述研究内容,本项目旨在突破现有对话情绪识别技术在上下文建模、长程依赖捕捉以及跨域适应等方面的瓶颈,为自然语言交互系统提供更精准、更鲁棒的情感感知能力。

六、需求分析

用户需求方面,本研究的目标系统主要服务于智能客服、在线教育以及心理健康监测等应用场景,因而用户对情绪识别的需求呈现多维度特征。首先,用户期望系统能够在实时对话中准确捕捉说话者的情绪状态,以便及时调整交互策略,从而提升服务质量和用户满意度;其次,鉴于不同应用场景对情绪细粒度的要求差异,用户需要系统支持从基本的正面、负面、中性三类情绪到更细致的愤怒、悲伤、喜悦等多级情绪标签的识别;再次,用户关注系统在多轮对话中的上下文连续性,期望情绪识别结果能够反映情感随时间的演变趋势,以便实现动态情感跟踪;最后,用户对系统的鲁棒性与适应性有较高要求,尤其是在面对讽刺、反语以及不同文化背景下的情绪表达时,系统应保持稳定的识别性能。综上所述,用户需求主要集中在实时性、细粒度、多轮连续跟踪以及跨域鲁棒性等方面。

功能需求方面,为满足上述用户需求,系统必须具备一系列核心功能。首先,文本预处理模块应实现分词、去停用词、拼写纠错以及词向量初始化,以保证后续模型输入的质量;其次,情绪识别模块基于双向LSTM与多头注意力机制构建,可对每轮对话文本进行编码并聚焦情感相关信息,从而输出情绪类别及置信度;再次,长程依赖增强子模块通过门控记忆单元或外部记忆网络,提升对跨轮对话中远程情绪线索的捕捉能力;第四,类别不平衡处理子模块采用重采样、损失加权与合成数据生成技术,以提升少数类情绪的识别率;第五,多任务学习框架将情绪识别与对话意图预测联合训练,利用两者互补信息提升整体性能;最后,部署与推理优化模块通过模型量化、剪枝与知识蒸馏实现低延迟推理,并支持在边缘设备或云端服务器上高效运行。通过上述功能实现,系统能够在多轮对话环境中提供准确、实时且鲁棒的情绪识别服务。

七、可行性分析

经济可行性方面,本研究所需的主要成本包括数据采集与标注、模型训练与验证以及系统部署与运维。数据采集方面,公开对话情绪语料库已可直接使用,若需扩充数据则需投入人工标注人员,按每条对话平均标注时长约五分钟计算,总成本在数十万元人民币左右;模型训练方面,采用双向LSTM与多头注意力机制的网络规模中等,可在现有GPU集群上完成训练,单次训练耗时约两至三天,算力费用估计为数千元;系统部署则需考虑云服务或边缘设备的租赁费用,若以云端推理为主,则按每月推理请求量计费,预计在一万元左右。综合来看,项目初期投入在数十万元人民币范围内,而长期运营成本相对较低,尤其当系统被集成到客服机器人或在线教育平台后,可通过提升用户满意度与降低人工客服成本实现快速回本。社会可行性方面,情绪识别技术在提升人机交互体验、减轻客服人员压力以及支持心理健康监测等方面具有显著社会价值。然而,技术应用过程中必须严格遵守个人信息保护法规,确保对话内容的匿名化与加密存储,防止情绪数据被滥用;此外,需要在用户使用前提供透明的隐私声明与同意机制,以获得公众信任。若系统能够在多语言、多文化环境中保持公平性且不产生歧视性偏见,则将进一步提升社会接受度。技术可行性方面,现有中文预训练模型如BERT-Base-Chinese已可为本研究提供高质量词向量;双向LSTM与注意力机制的实现已在多轮情绪识别任务中得到验证,且所需计算资源仅为中等规模GPU即可满足训练与推理需求;同时,针对类别不平衡与长程依赖的技术方案已在相关文献中证明可行,可通过重采样、损失加权与外部记忆网络实现性能提升。综上所述,经济、社会与技术三方面均具备可行性,为本研究的顺利开展提供了坚实基础。

八、功能分析

系统功能模块设计基于需求分析结果,整体构架分为数据处理层、模型推理层、服务交互层以及运维管理层。数据处理层主要负责对输入对话文本进行清洗、分词、词向量映射与上下文嵌入生成;在此基础上构建双向长短时记忆网络编码器,并加入多头注意力机制以突出情感相关信息;随后通过情绪分类头输出情绪类别及置信度。为解决长程依赖问题,系统集成外部记忆单元或门控记忆机制,以在多轮对话中保持远程上下文信息;同时采用重采样、损失加权与合成数据生成技术处理类别不平衡。多任务学习模块将情绪识别与对话意图预测并行训练,利用两者互补信息提升整体性能。模型推理层在完成训练后进行量化、剪枝与知识蒸馏,以降低模型体积与推理延迟;随后部署至云端或边缘设备,提供低时延实时推理服务。服务交互层通过RESTful API或WebSocket接口向上层应用暴露情绪识别结果,支持批量请求与流式对话;同时提供结果可视化与日志回溯功能,以便业务监控与性能评估。运维管理层负责模型版本管理、滚动更新、异常监控与自动化回滚;并集成安全审计机制,确保数据加密传输与访问权限控制。通过上述模块的协同工作,系统能够实现对多轮对话情绪的实时、细粒度识别,并具备良好的可扩展性与可维护性。

九、数据库设计

字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
user_id | 用户唯一标识符 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 |
username | 用户名,唯一约束 | 50 | VARCHAR(50) NOT NULL UNIQUE | |
email | 电子邮件地址,唯一约束 | 100 | VARCHAR(100) NOT NULL UNIQUE | |
password_hash | 密码哈希值,用于登录验证 | 255 | VARCHAR(255) NOT NULL | |
created_at | 账户创建时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | |

字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
conv_id | 对话唯一标识符 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 |
user_id | 所属用户,外键关联 users.user_id | 11 | INT UNSIGNED NOT NULL | 外键 → users.user_id |
start_time | 对话开始时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | |
end_time | 对话结束时间戳,可为空,表示对话未结束 | 19 | DATETIME NULL | |

字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
msg_id | 消息唯一标识符 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 |
conv_id | 所属对话,外键关联 conversations.conv_id | 11 | INT UNSIGNED NOT NULL | 外键 → conversations.conv_id |
sender_type | 发送者类型,枚举值('user','system') | 10 | ENUM('user','system') NOT NULL |
content | 消息文本内容,支持长文本 | 65535 | TEXT NOT NULL |
timestamp | 消息发送时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP |

字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
emotion_id | 情绪类别唯一标识符 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 |
name | 情绪名称,如'愤怒'、'喜悦'等 | 50 | VARCHAR(50) NOT NULL UNIQUE |
description | 情绪描述信息,供后期扩展使用 | 255 | VARCHAR(255) NULL |

字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
id | 主键,自动递增 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 |
msg_id | 所属消息,外键关联 messages.msg_id | 11 | INT UNSIGNED NOT NULL | 外键 → messages.msg_id |
emotion_id | 情绪类别,外键关联 emotions.emotion_id | 11 | INT UNSIGNED NOT NULL | 外键 → emotions.emotion_id |
confidence | 模型给出的置信度,范围0-1 | 5,2 | DECIMAL(5,2) NOT NULL |

字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
intent_id | 意图类别唯一标识符 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 |
name | 意图名称,如'查询订单'、'投诉'等 | 50 | VARCHAR(50) NOT NULL UNIQUE |
description | 意图描述信息,供后期扩展使用 | 255 | VARCHAR(255) NULL |

字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
id | 主键,自动递增 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 |
msg_id | 所属消息,外键关联 messages.msg_id | 11 | INT UNSIGNED NOT NULL | 外键 → messages.msg_id |
intent_id | 意图类别,外键关联 intents.intent_id | 11 | INT UNSIGNED NOT NULL | 外键 → intents.intent_id |
confidence | 模型给出的置信度,范围0-1 | 5,2 | DECIMAL(5,2) NOT NULL |

字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
version_id | 模型版本唯一标识符 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 |
version_name | 模型版本名称,如'v1.0.3'等 | 20 | VARCHAR(20) NOT NULL UNIQUE |
trained_at | 训练完成时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP |
accuracy | 当前模型在验证集上的准确率,范围0-1 | 5,2 | DECIMAL(5,2) NOT NULL |

字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
log_id | 日志唯一标识符 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 |
conv_id | 所属对话,外键关联 conversations.conv_id,可为空,表示系统级日志 | 11 | INT UNSIGNED NULL | 外键 → conversations.conv_id |
event_type | 事件类型,如'情绪识别'、'意图识别'、'系统错误'等 | 50 | VARCHAR(50) NOT NULL |
event_time | 事件发生时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP |
details | 事件详细信息,JSON 或文本格式,供后期分析使用 | 65535 | TEXT NULL |

以上表结构遵循第一、第二范式,所有非主键字段均完全依赖于主键;外键约束保证数据完整性;字段大小与类型根据实际业务需求合理设置。

十、建表语句

CREATE TABLE users (
user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE conversations (
conv_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id INT UNSIGNED NOT NULL,
start_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
end_time DATETIME NULL,
PRIMARY KEY (conv_id),
KEY idx_conversations_user_id (user_id),
CONSTRAINT fk_conversations_user_id
FOREIGN KEY (user_id) REFERENCES users(user_id)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE messages (
msg_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
conv_id INT UNSIGNED NOT NULL,
sender_type ENUM('user','system') NOT NULL,
content TEXT NOT NULL,
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (msg_id),
KEY idx_messages_conv_id (conv_id),
CONSTRAINT fk_messages_conv_id
FOREIGN KEY (conv_id) REFERENCES conversations(conv_id)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE emotions (
emotion_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL UNIQUE,
description VARCHAR(255) NULL,
PRIMARY KEY (emotion_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE msg_emotions (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
msg_id INT UNSIGNED NOT NULL,
emotion_id INT UNSIGNED NOT NULL,
confidence DECIMAL(5,2) NOT NULL,
PRIMARY KEY (id),
KEY idx_msg_emotions_msg_id (msg_id),
KEY idx_msg_emotions_emotion_id (emotion_id),
CONSTRAINT fk_msg_emotions_msg_id
FOREIGN KEY (msg_id) REFERENCES messages(msg_id)
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT fk_msg_emotions_emotion_id
FOREIGN KEY (emotion_id) REFERENCES emotions(emotion_id)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE intents (
intent_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL UNIQUE,
description VARCHAR(255) NULL,
PRIMARY KEY (intent_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE msg_intents (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
msg_id INT UNSIGNED NOT NULL,
intent_id INT UNSIGNED NOT NULL,
confidence DECIMAL(5,2) NOT NULL,
PRIMARY KEY (id),
KEY idx_msg_intents_msg_id (msg_id),
KEY idx_msg_intents_intent_id (intent_id),
CONSTRAINT fk_msg_intents_msg_id
FOREIGN KEY (msg_id) REFERENCES messages(msg_id)
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT fk_msg_intents_intent_id
FOREIGN KEY (intent_id) REFERENCES intents(intent_id)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE models (
version_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
version_name VARCHAR(20) NOT NULL UNIQUE,
trained_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
accuracy DECIMAL(5,2) NOT NULL,
PRIMARY KEY (version_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE logs (
log_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
conv_id INT UNSIGNED NULL,
event_type VARCHAR(50) NOT NULL,
event_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
details TEXT NULL,
PRIMARY KEY (log_id),
KEY idx_logs_conv_id (conv_id),
CONSTRAINT fk_logs_conv_id
FOREIGN KEY (conv_id) REFERENCES conversations(conv_id)
ON UPDATE CASCADE ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

文章下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方👇🏻获取联系方式👇🏻

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

夜深了,心静了

又一次失眠,不知是不是喝茶的原因。戴上耳机,耳朵里又传来那些熟悉的老歌,时间也在这一刻停止。那个真实的我开始对自己独白。最近的生活,多了些忙碌,想把时间填满,希望少一些杂念。这两天又翻看了以前写的…

作者头像 李华
网站建设 2026/10/19 2:15:02

从软件到硬件:后端开发者的嵌入式入门踩坑手记

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/19 2:14:39

图片 RGB / A 通道批量拆分工具使用说明

1. 工具简介 本工具是一款面向 Windows 64 位系统的图片通道批量拆分工具,支持将 PNG、JPG、TGA 三种常见图片格式的 RGB 通道(红、绿、蓝)以及 Alpha 透明通道分别提取出来,并另存为 PNG、JPG、TGA 格式的独立灰度图。适用于游戏…

作者头像 李华
网站建设 2026/10/19 2:14:04

软件架构设计(第一篇)

概念、演进与设计目的一、程序员的架构师之梦几乎每个程序员内心,都拥有成为架构师的理想。但很多人在走向架构师的路上,会遇到重重困惑。很多技术能力扎实、业务理解到位的工程师,往往会卡在架构设计这一关。作者结合自身经历发现&#xff0…

作者头像 李华