一种基于深度学习的对话情绪自动识别方法

文档序号:30756038发布日期:2022-07-13 11:22阅读:342来源:国知局
一种基于深度学习的对话情绪自动识别方法

1.本发明涉及人工智能,特别是涉及一种基于深度学习的对话情绪自动识别方法。


背景技术:

2.智能对话系统中的情绪识别任务是智能对话系统语义理解的基础任务,其目的在于识别每轮对话语段中说话者所蕴含的情绪。有效而准确的用户情绪识别能够增强智能对话系统对于对话历史的理解能力,提升答复语句选择的准确性,是为用户提供合适答复反馈及后续个性化服务的基础任务。该任务上的现有研究工作主要基于图神经网络或预训练语言模型,其研究关注点主要集中于历史文本信息的建模,通过设计合理的网络结构,从历史对话语段的文本信息中提取出与单个说话者相关的情绪惯性特征以及说话者之间的情绪感染特征,并综合利用于最终的情绪自动化识别上。
3.然而,传统方法并没有充分利用历史对话语段中所提供的情绪标签信息。同时,现有的基于图神经网络或预训练语言模型虽然通过注意力机制解决了循环神经网络模型中存在的长距离依赖问题,但却也因为该机制不完善的时序建模,部分损失了循环神经网络模型中对时序信息的刻画。模型对于对话语句时序的感知是十分重要的,因为在对话中,交谈双方的话题很可能会随着对话的深入而发生改变,在时间上差距很大的两个语段可能在语义上是完全不相同的。因此,需要找到一种能够兼顾地解决对话中存在的长距离依赖以及感知对话时序特性的建模方式。
4.需要说明的是,在上述背景技术部分公开的信息仅用于对本技术的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本发明的主要目的在于提供一种基于深度学习的对话情绪自动识别方法,以解决传统的对话情绪识别技术无法有效利用历史对话语段中所提供的情绪标签信息的问题,以及基于图神经网络或预训练语言模型由于注意力机制不完善的时序建模而部分损失对话时序信息建模能力的问题。
6.为实现上述目的,本发明采用以下技术方案:
7.一种基于深度学习的对话情绪自动识别方法,包括如下步骤:
8.处理原始的对话文本与历史对话情绪标签;其中,根据预训练语言模型进行文本编码,获取每个对话语段的上下文相关的语段表示向量;
9.构建和训练基于关键历史语段感知的神经网络模型;其中,模型的误差建模包括:分类误差计算、语段情绪关联性损失计算以及情绪表示距离递减损失计算;
10.其中,所述分类误差计算包括:根据上下文相关的语段表示向量进行情绪分类,计算出与真实情绪标签之间的分类误差交叉熵值;
11.其中,所述语段情绪关联性损失计算包括:根据历史对话情绪标签信息,从历史对话语段中构造出具有相同情绪标签的语段对作为正语段对,以及具有不同情绪标签的语段
对作为负语段对,分别使用预训练语言模型提取上下文表示向量后,根据语段情绪关联性损失函数计算损失值;
12.其中,所述情绪表示距离递减损失计算包括:根据对话相邻语段的映射至情绪表示空间的上下文表示向量,按照情绪表示距离递减损失函数约束相邻语段的相似度差距并计算损失值;
13.将待预测的对话文本输入训练好的所述神经网络模型,由所述神经网络模型输出预测值,得到最终预测的情绪标签。
14.进一步地,所述处理原始的对话文本与历史对话情绪标签包括:根据所述原始的对话文本与历史对话情绪标签构造输入,将所述原始的对话文本与历史对话情绪标签处理为模型可以读取和识别的词例串形式,然后通过文本编码获得每个对话语段的每个词例的上下文感知的表示向量,从而获取上下文相关的语段表示向量。
15.进一步地,所述分类误差计算包括:将所述上下文相关的语段表示向量通过分类全连接层以及softmax函数归一化后得到待预测语段在各情绪类别上的输出概率,并将其与真实情绪标签进行对比,利用交叉熵损失函数计算出分类误差值。
16.进一步地,所述语段情绪关联性损失计算包括:根据历史对话情绪标签构造出正负语段对后,根据基于点积相似度的损失函数计算出模型的语段情绪关联性损失值;
17.优选地,设计的语段情绪关联性损失函数l
emo
如式(3)所示,其中f()用于衡量两个表示向量之间的相似度,选用进行指数运算后的点积相似度,如式(4)所示:
[0018][0019][0020]
其中,温度参数τ用于调节样本之间的相似度距离,其设置为一个可学习的参数,为语段的情绪表示向量,χ
neg
为与参照样本x有不同情绪标签的负语段集合;通过优化该损失函数,模型实现正语段对(x,x
+
)表示向量之间相似度的最大化以及负语段对(x,x-)表示向量相似度的最小化。
[0021]
进一步地,所述情绪表示距离递减损失计算包括:构造出对话邻近语段的情绪表示空间的表示向量后,通过基于hinge loss的损失函数约束相邻语段的相似度差距,计算不满足约束的惩罚项值作为情绪表示距离递减损失值;
[0022]
优选地,设计基于对话时序的情绪表示距离递减函数l
seq
如式(6)所示:
[0023][0024]
其中,为语段u在情绪表示空间内的表示向量,g()为两个语段在情绪表示空间内的距离,n
seq
为选取的语段个数;对于一对语段ui以及uj,j出现在ui之后,时间i<时间j<时间t,为可学习的距离缩放参数。
[0025]
进一步地,所述训练基于关键历史语段感知的神经网络模型包括:将分类误差、语段情绪关联性损失函数值以及情绪表示距离递减损失值相加得到模型训练损失值,并通过反向传播机制更新模型参数,迭代至模型收敛。
[0026]
进一步地,所述神经网络模型输出预测值,得到最终预测的情绪标签包括:模型的预测结果基于预训练语言模型产生的语段级别上下文表示向量,该向量利用全连接层投射至预定义好的情绪标签空间内,得到最终预测的情绪标签。
[0027]
进一步地,所述预训练语言模型为roberta。
[0028]
进一步地,所述语段情绪关联性损失计算包括:选取与待预测语段最邻近的语句作为参照样本x,构造和获取历史对话窗口长度为2的输入串,并通过roberta模型以及全连接映射层获得第一个词例处的表示向量,作为参照样本的情绪表示向量,对于正语段,按对话进行的时间顺序从后往前地找到与参照样本x有相同情绪标签的语句作为正语段x
+
,构造历史对话窗口长度同样为2的输入串,并使用相同的方法获得正语段的情绪表示向量;对于负语段,从历史语段中随机选取与参照样本x有不同情绪标签的语段作为负语段集合,并获得它们的情绪表示向量;根据基于点积相似度的损失函数计算出模型的语段情绪关联性损失值;
[0029]
进一步地,所述情绪表示距离递减损失计算包括:按照对话的时间顺序,从后往前地从历史对话信息中选取历史语段作为损失函数的优化目标,分别构造和获取历史对话窗口长度为2的输入串,并将其输入相同的roberta模型以及用于将向量映射至情绪表示空间的全连接层,获得语段在情绪表示空间内的表示向量;使用余弦相似度作为两个语段在情绪表示空间内的距离,通过基于hinge loss的损失函数约束相邻语段的相似度差距,并计算出模型的情绪表示距离递减损失值。
[0030]
一种计算机可读存储介质,存储有计算机程序,所述计算机程序由处理器运行时,实现所述的对话情绪自动识别方法。
[0031]
本发明具有如下有益效果:
[0032]
本发明提供一种基于深度学习的对话情绪自动识别方法,其中提出了一种基于关键历史语段感知的神经网络模型,使对话情绪识别的分析过程中能充分利用到历史对话情绪标签信息,有效解决了传统的对话情绪识别技术无法有效利用历史对话语段中所提供的情绪标签信息的问题,并使对话情绪识别的分析过程中合理地感知到对话的时序特性,解决了基于图神经网络或预训练语言模型由于注意力机制不完善的时序建模而部分损失对话时序信息建模能力的问题,实现了更高的情绪识别准确率。
[0033]
对于对话情绪自动化识别而言,本方法提出的语段情绪关联性损失以及情绪表示距离递减损失的建模方法是相辅相成的关系,其中语段情绪关联性损失的建模能够使模型感知到关键历史语段中的情绪特征,而情绪表示距离递减损失的建模侧重于对话时序特性的感知。相较于现有的方法,本方法在支持实时识别的基础上,拥有着更高的情绪识别准确率。
附图说明
[0034]
图1为本发明实施例的基于关键历史语段感知的对话情绪自动识别方法工作流程示意图。
[0035]
图2为本发明实施例的基于关键历史语段感知的对话情绪自动识别方法模型结构示意图。
[0036]
图3为本发明实施例的语段情绪关联性损失函数中正负语段对的构造示意图。
[0037]
图4为本发明实施例的情绪表示距离递减损失函数构造示意图。
具体实施方式
[0038]
以下对本发明的实施方式做详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
[0039]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多该特征。在本发明实施例的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0040]
我们认为,历史语段情绪标签信息能够增强模型的关键历史语段感知能力。相较于来自其他对话的语段情绪标注信息,同一对话内的情绪标注信息与所要预测的语句在话题关联性上更加接近,可以将其视作用户对于该话题的情绪历史,用于辅助预测用户此刻可能的情绪。直观地,如果同一对话中的两个语段拥有相同的情绪标签,那么它们大概率在情绪用词以及语句的表达方式上是接近的。因此,如果存在对话历史中的一个语段,它与正在进行情绪预测的语段在表达上高度匹配,则可以认为该历史语段是预测过程中的关键历史语段,这两个语段会具备相近的情绪特征。由此,该任务也可以被进一步建模为同一对话下的历史语段文本匹配问题。
[0041]
基于上述提到的没有充分利用历史语段情绪标签以及对话时序特性感知的问题,我们提出了关键历史语段感知的神经网络模型。这一模型基于预训练语言模型,通过设计语段情绪关联性损失函数以及情绪表示距离递减损失函数,增强了对话文本结构的感知能力。语段情绪关联性损失函数侧重于对关键历史语段的感知,首先通过历史对话情绪标签构造出正负语段对,然后尝试从一个批次的语段对中挑选出正语段对,在优化的过程中实现了正语段对相似度的最大化以及负语段对相似度的最小化,由此使模型能够感知到关键历史语段中的情绪特征。情绪表示距离递减损失函数侧重于对话时序的感知,可以使模型在训练过程将时间上邻近的一对语段在情绪表示空间中的距离拉近,且能够使这一对语段在情绪表示空间中的距离与它们在对话中出现的时间差相关。
[0042]
在一些优选实施例的对话情绪自动化识别方法中,根据对话文本以及历史对话情
绪标签构造输入并精调预训练模型获取上下文相关的语段表示向量;根据历史对话情绪标签构造出正负语段对,并根据基于点积相似度的损失函数算出模型的语段情绪关联性损失值;构造出对话邻近语段的情绪表示空间表示向量,通过基于hinge loss的损失函数约束相邻语段的相似度差距,计算不满足约束的惩罚项值作为情绪表示距离递减损失值。
[0043]
图1展示了本发明实施例一种基于深度学习的对话情绪自动识别方法的工作流程。模型的训练部分主要分为输入构造、文本编码、分类误差计算、语段情绪关联性损失函数计算以及情绪表示距离递减损失函数计算五个部分,其整体架构如图2所示。首先进行输入的预处理,需要将原始的对话文本与历史对话情绪标签处理为模型可以读取和识别的词例串形式,然后根据预训练语言模型进行文本编码,获取每个对话语段的语段级别上下文表示向量。该表示向量被用于进行情绪分类,计算出与真实情绪标签之间的分类误差交叉熵值。紧接着,依据历史对话情绪标签信息,从历史对话语段中构造出具有相同情绪标签的语段对作为正语段对,以及具有不同情绪标签的语段对作为负语段对,分别使用预训练语言模型提取出上下文表示向量后,根据语段情绪关联性损失函数计算误差值,正负样本的构造样本方式如图3所示。最后,根据相邻语段的映射至情绪表示空间的上下文表示向量,按照情绪表示距离递减损失函数约束它们的相似度差距并计算损失值,该损失值的计算方式如图4所示。最终的模型训练损失值由分类误差、语段情绪关联性损失函数值以及情绪表示距离递减损失值相加得到,并通过反向传播机制更新模型参数,迭代至模型收敛。模型的预测结果基于预训练语言模型产生的语段级别上下文表示向量,该向量利用全连接层投射至预定义好的情绪标签空间内,得到最终预测的情绪标签。输入构造:
[0044]
对于时刻t下的待预测语段u
t
,我们参照预训练语言模型roberta的标准方式来构造模型的输入串i
t
。对于对话历史语段的个数,我们考虑设置历史对话窗口长度w,并选取u
t
之前的w个语段u
t-w
,

,u
t-1
作为历史语段用于构建历史信息串h
t
。每个语段ui由它所包含的li个词例构成:而每个历史语段的末尾处被插入了一个[eou]词例,用于将不同的历史语段进行分隔。历史信息串h
t
可以被完整地表示为h
t
=u
t-w
[eou]
…ut-1
[eou]。为了进一步将历史信息串h
t
与待预测语段u
t
分隔开,我们在它们的末尾处各添加了一个[sep]词例。同时,在输入串i
t
的起始位置插入一个[cls]词例,其表示向量可以用于作为输入串的句粒度表示向量。最终,完整的输入串i
t
可以被表示为i
t
=[cls]h
t
[sep]u
t
[sep]。参照huggingface的实现,我们采用默认的《s》和《/s》来分别表示[cls]和[sep]词例,而将[eou]加入了模型的词汇表之中。对于语段情绪关联性损失函数计算以及情绪表示距离递减损失函数中的历史语段,我们也采用了相同的输入构造方式。
[0045]
文本编码:
[0046]
我们在语言模型层使用的预训练语言模型为roberta,它在bert的基础上了优化了预训练过程中的一些重要设置,从而实现了在下游精调任务中的更优结果。roberta模型的一个核心优化点在于舍弃了bert所提出的二分类预训练任务nsp,其原先的设计动机为推测两个文本段是否在原文中为承接的关系,但后续的一些相关研究发现nsp这一预训练任务会混淆两种不同类型的任务:判断两个文本段是否具有同一主题的话题预测任务,以及判断两个文本段是否逻辑连贯的连贯预测任务。nsp任务实际更多地侧重于话题预测,因为如果在采样时两个文本段来自于不同的文档,则很容易学习出它们在话题上并不相关,从而获得没有损失值的正确答案,而不是从逻辑连贯性这个角度去分辨的。舍弃nsp预训练
任务,也意味着不会再从词例嵌入层去分辨两个文本段各自的词例。因此,模型的嵌入层只会由位置嵌入向量和词例嵌入向量两种向量相加得到,而不会再保留原先bert词例嵌入层中的段嵌入向量,对话历史语段的词例与待预测语段的词例只能通过它们之间插入的[sep]词例加以分辨。
[0047]
分类误差计算:
[0048]
在进行文本编码的操作后,我们获得了每个词例的上下文感知的表示向量,我们选取第一个词例处的表示向量,将其通过分类全连接层以及softmax函数归一化后得到待预测语段在各情绪类别上的输出概率,并将其与真实情绪标签进行对比,利用交叉熵损失函数计算出分类误差值。
[0049]
语段情绪关联性损失计算:
[0050]
为了使模型能够感知关键历史语段并通过对比学习的方式获得到相关的情绪特征,我们首先需要根据历史对话情绪标签构造出与情绪相关的正负语段对。为了学习到与待预测语段尽可能接近的情绪特征,我们选取与待预测语段最邻近的语句作为参照样本x,构造和获取历史对话窗口长度为2的输入串,并通过正在精调的roberta模型以及全连接映射层获得第一个词例处的表示向量,作为参照样本的情绪表示向量。时序上的邻近能够使两个语段在话题以及语义上更接近,因此对于正语段,我们按对话进行的时间顺序从后往前地找到与参照样本x有相同情绪标签的语句作为正语段x
+
,构造历史对话窗口长度同样为2的输入串,并使用相同的方法获得正语段的情绪表示向量。在负语段的选取上,我们从历史语段中随机选取了与参照样本x有不同情绪标签的语段作为负语段集合,并获得它们的情绪表示向量。最后,根据基于点积相似度的损失函数计算出模型的语段情绪关联性损失值。
[0051]
情绪表示距离递减损失计算:
[0052]
我们按照对话的时间顺序,从后往前地从历史对话信息中选取历史语段作为损失函数的优化目标,分别构造和获取历史对话窗口长度为2的输入串,并将其输入相同的roberta模型以及用于将向量映射至情绪表示空间的全连接层,获得语段在情绪表示空间内的表示向量。我们使用余弦相似度作为两个语段在情绪表示空间内的距离,通过基于hinge loss的损失函数约束相邻语段的相似度差距,并计算出模型的情绪表示距离递减损失值。
[0053]
以下进一步描述本发明具体实施例。
[0054]
模型的误差建模主要分为三个部分:分类误差、语段情绪关联性损失以及情绪表示距离递减损失。分类误差函数l
cls
如式(1)所示,其中i{
·
}为指示函数,仅当大括号内的事件出现时取值为1,否则为0;p
t,i
为模型针对待预测语段u
t
在情绪类别i上的输出概率,它由语言模型输出层第一个词例处的表示向量通过分类全连接层fc
cls
以及softmax函数归一化后得到,如式(2)所示。
[0055]
[0056][0057]
语段情绪关联性损失函数:
[0058]
语段情绪关联性损失函数l
emo
的设计目的在于,使同一对话内拥有相同情绪标签的两个语段有相近的情绪表示向量,从而让模型能够感知到针对待预测语段u
t
的关键历史语段以及这些历史语段中的情绪特征。
[0059]
为了使模型能够感知关键历史语段并通过对比学习的方式获得到相关的情绪特征,我们首先需要根据历史对话情绪标签构造出与情绪相关的正负语段对。图3展示了我们所设计的正负语段对构造方法。我们考虑一个包含10个语段的对话样本,其中前9句为能够获取每个语段情绪标签的历史语段,而最后一个语段u9为需要进行情绪预测的语段。为了学习到与待预测语段u9尽可能接近的情绪特征,我们选取与待预测语段最邻近的语句u8作为参照样本x,构造和获取历史对话窗口长度为2的输入串,并通过正在精调的roberta模型以及全连接映射层fc
emo
获得[cls]词例处的表示向量作为参照样本的情绪表示向量。
[0060]
时序上的邻近能够使两个语段在话题以及语义上更接近,因此对于正语段,我们按对话进行的时间顺序从后往前地找到与参照样本x有相同情绪标签的语句u4作为正语段x
+
,构造历史对话窗口长度同样为2的输入串,并使用与编码x
+
相同的roberta模型以及fc
emo
层获得正语段的情绪表示向量
[0061]
在负语段的选取上,我们从历史语段中随机选取了n
neg
个与参照样本x有不同情绪标签的语段作为负语段集合χ
neg
,如图中的u3、u5、u6以及u7。同理,我们也用同一roberta模型以及fc
emo
层分别获取负语段集合中每一个语段的情绪表示向量由此,我们获得了正语段对(x,x
+
)和一组负语段集合χ
neg
,以及它们各自的情绪表示向量。
[0062]
我们设计的语段情绪关联性损失函数l
emo
如式(3)所示,其中f(
·
,
·
用于衡量两个表示向量之间的相似度,我们选用了进行指数运算后的点积相似度,如式(4)所示,温度参数τ用于调节样本之间的相似度距离,选取合适的温度参数有助于模型学习到来自困难负样本(hard negatives)的特征,实验中我们将其设置为了一个可学习的参数,使用0.07作为其初始化值。χ
neg
为与参照样本x有不同情绪标签的负语段集合。通过优化该损失函数,模型能够实现正语段对(x,x
+
)表示向量之间相似度的最大化以及负语段对(x,x-)表示向量相似度的最小化,从而更好的感知到拥有相同情绪标签的关键历史语段中的情绪特征,模型的文本结构感知能力得到了增强。
[0063][0064]
[0065]
情绪表示距离递减损失函数:
[0066]
由于我们采用了基于预训练语言模型的注意力机制来提取句子表达向量,其在功能上与图神经网络是等效的,因此其本身具备了建模长距离依赖的能力,但在对话的时序特性的刻画上是有缺陷的。为此,我们尝试通过规范语段对在情绪表示空间中的相对距离差异来体现对话的时序性。
[0067]
图4展示了一个包含5个语段的对话样本,我们需要预测最后一个语段u4的情绪。我们按照对话的时间顺序,从后往前地从历史对话信息中选取n
seq
个语段作为损失函数的优化目标,分别构造和获取历史对话窗口长度为2的输入串,并将其输入相同的roberta模型以及用于将向量映射至情绪表示空间的全连接层fc
seq
,获得语段ui在情绪表示空间内的表示向量我们使用余弦相似度作为两个语段在情绪表示空间内的距离g(
·
,
·
),如式(5)所示。接着,我们需要分别计算出待预测语段u4与n
seq
个历史对话语段在情绪表示空间中的距离。
[0068][0069]
为了优化待预测语段与历史对话语段在情绪表示空间中的距离,使对话语义差距随着时间间距增大,从而更好地让模型感知对话时序特性,我们设计了基于对话时序的情绪表示距离递减函数l
seq
,如式(6)所示。对于一对语段ui以及uj,且uj出现在ui之后(i<j<t),则ui与待预测语段u
t
在情绪表示空间中的距离应该比uj与u
t
之间的距离要大,且这个距离差应该与这两个语段在对话中出现的时间差j-i相关,即距离差至少应该为(j-i)λ。λ为可学习的距离缩放参数,我们将其初始化值设置为0.01。
[0070][0071]
最终,模型在训练时的损失函数由分类损失函数l
cls
、对比学习损失函数l
emo
、情绪表示距离递减函数l
seq
共同组成,如式(7)所示。
[0072]
l=l
cls
+l
emo
+l
seq
ꢀꢀ
(7)
[0073]
如表1所示,我们在四个对话情绪识别公开数据集上进行了测评,测试结果如表1所示。本发明实施例的模型相比于现有的基线模型,在四个数据集的按类加权f1指标上均有较大提升,说明本发明的模型在最大化利用历史对话语段信息的能力上更加出色,能够更好的建模并分析历史语段中的情绪动因,并获得更高的情绪识别准确率。
[0074]
表1
[0075][0076]
本发明的背景部分可以包含关于本发明的问题或环境的背景信息,而不一定是描述现有技术。因此,在背景技术部分中包含的内容并不是申请人对现有技术的承认。
[0077]
以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。在本说明书的描述中,参考术语“一种实施例”、“一些实施例”、“优选实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。尽管已经详细描述了本发明的实施例及其优点,但应当理解,在不脱离专利申请的保护范围的情况下,可以在本文中进行各种改变、替换和变更。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1