基于感知情绪倾向的共情人机对话系统

文档序号:33649845发布日期:2023-03-29 07:17阅读:105来源:国知局

1.本发明涉及人机对话技术领域,尤其涉及一种基于感知情绪倾向的共情人机对话系统。


背景技术:

2.共情是一种复杂的社会情感行为,是情感和认知机制相互作用的结果。人机对话旨在研究如何使计算机来理解和运用人类社会的自然语言。共情对话系统通过整合情感相关因素,有利于对话系统加强与人类用户的情感联系,以提升用户的满意度以及参与度,其在对话领域有着重要作用。
3.由于大量对话数据的可用性以及对话ai的神经方法的发展,人们对开发智能的开放域对话系统产生了浓厚的兴趣,闲聊型对话应运而生。与传统的面向任务的机器人不同,开放域对话系统旨在通过满足人类对沟通,情感和社会归属感的需求与用户建立长期联系,致力于解决三种开发这样的系统所面临的挑战:语义,一致性和交互性。语义要求对话系统不仅要了解对话的内容,还要识别对话过程中用户的情感和社交需求。一致性要求该系统表现出一致的个性以赢得用户的信任并获得他们的长期信任。互动性是指系统产生人际反应以实现特定社会目标(例如娱乐和顺应性)的能力。
4.闲聊型对话的解决方法主要有三种:
5.(1)基于生成式的对话
6.使用语言模型生成目标句子,缺点是往往会生成一些泛泛无意义的回复,学术界称之为“安全回复”。生成式对话也很容易出现前后回复不一致或者句子不通顺的问题,但优点在于生成式对话生成的句子更加灵活和丰富。生成式对话对数据集质量要求往往较高。
7.(2)基于检索式的对话
8.工业上颇爱使用,其基本思想是假设收集现实已有对话范例,在出现相似对话时候,只要从范例中匹配出相应回复即可。
9.具体而言,假定现实对话中存在一个匹配关系(c,r),对话范例中存在匹配关系(c*,r*)。通过检索算法,根据c找c*,得到几个候选的r*,再从中选择最合适的r。这种方法缺点在于极其依赖检索算法的性能,可能出现最佳回复不在检索算法选取的候选回复中,以及不能够根据场景生成多样的回复。
10.(3)基于生成及检索式对话
11.将生成式和检索式结合使用,核心思想是:先检索,后改写。
12.具体而言,与检索式对话类似地,根据c匹配c*,找到候选的r*,提取r*的骨架(模板回复格式),通过编辑向量对r*进行改写,最终生成回复r。
13.总而言之,开放域对话系统在当下任务中需要考虑如何将现实世界的实体和知识嵌入到对话中去。外部知识库对于系统提供人际反应是至关重要的。系统回复的语气也需要根据用户的情绪状态和情感进行调整。闲聊型对话相比于任务型对话,往往没有固定的
回复标准,但其对回复的丰富性要求也更高,对于相应情感是否充分表达也是重要的参考指标。同时由于网络的遗忘性,历史输入信息容易丢失,上下文回复存在矛盾性也是令人头疼的问题,这都是未来需要解决的问题。


技术实现要素:

14.本发明的目的在于提供一种基于感知情绪倾向的共情人机对话系统,该系统有利于感知词语的情绪倾向性,获得更好的对话回复。
15.为实现上述目的,本发明采用的技术方案是:一种基于感知情绪倾向的共情人机对话系统,包括:
16.外部知识模块,用于对输入语句,通过概念网络和vad情感向量,构建情感上下文向量;
17.情感上下文编码器模块,用于基于transformer编码器对情感上下文向量进行编码,然后输入多头注意力网络,得到情绪信号;
18.情感倾向编码器模块,用于计算输入语句中词语与情感之间的情绪倾向性,以更好地表示出词语与相应情感之间的相关性信息;
19.共享注意力模块,用于共享情感上下文编码器模块中多头注意力网络不同层的注意力参数,获得多个注意力特征,并采用多元残差网络融合多个注意力特征,得到融合注意力特征向量,以提高语义信息丰富程度;
20.情感依赖解码器模块,用于整合情绪信号和融合注意力特征向量,基于transformer解码器,利用多头交叉注意力网络,输出预测的对话回复。
21.进一步地,所述外部知识模块将输入语句与外部知识图谱概念网络和vad情感向量匹配,计算情感强度和候选概念词组中的置信度得分,通过选择得分较高的概念词组,得到一个四元组,所述四元组包括与输入语句中词汇相关联的头部概念、关系、尾部概念以及相应的置信度得分,并将所述四元组组合为一个情感上下文。
22.进一步地,所述情感上下文编码器模块基于transformer编码器结构,包括词嵌入层、多头注意力网络和情感信号层;
23.所述词嵌入层通过预训练glove向量,将情感上下文中每一个词语转化为多维的嵌入向量,组合所有词语的嵌入向量,输入到多头注意力网络中;
24.所述多头注意力网络将词嵌入层编码后的向量作为输入,通过以下公式提取输入语句的语义信息,并将提取后的向量通过残差连接和标准化层,以进行后续处理和系统优化:
25.mutihead(q,k,v)=concat(head1,...,headh)wo[0026][0027]
其中,q,k,v分别表示在注意力机制中将输入向量线性变换为查询向量q、键向量k和值向量v,mutihead(q,k,v)表示计算三个向量分为多头后再拼接的结果,headi表示第i个头的注意力值,h表示注意力头的数量,concat(head1,...,headh)表示将多个注意力头的结果进行拼接,wo表示多头拼接时的初始权重矩阵,分别表示将查询向量q、键向量k和值向量v分别与其权重矩阵相乘的结果,表示利用
三个向量与其权重矩阵相乘后的结果计算注意力值;
[0028]
所述情感信号层将多头注意力网络的输出作为输入,并计算出情感信号;所述情感信号包括经过精炼的语义信息和用于情感分类的信息,其计算公式如下:
[0029][0030][0031][0032]
其中,表示情感上下文变量,表示多头注意力网络的输出,e为外部知识图谱中概念网络的顶点数量;exp(ηi)表示以自然常数e为底的指数函数,ηi表示对应的情感强度,ce是一个d维大小的向量;we为[32,d]大小的权重矩阵,d为嵌入层的维度大小;softmax(w
ece
)表示使用softmax线性层将ce向量投影到情绪信号pe。
[0033]
进一步地,所述情感倾向编码器模块包括词嵌入层、情绪倾向计算层和编码器层,所述情感倾向编码器模块的词嵌入层与情感上下文编码器模块的词嵌入层相同,所述情绪倾向计算层用于获得每一个词语与32种情绪的关联性,这种关联性即为情绪倾向性;
[0034]
首先将输入语句通过词嵌入层转化为向量表示,若输入语句的词嵌入表示为[w1,w2,,...,wd],d为句子中的单词个数,则语句中的第i个单词wi∈[w1,w2,,...,wd],i∈[1,d];若32个情感向量的词嵌入用[e1,e2,,...,e
32
]来表示,则每个情感词ej∈[e1,e2,,...,e
32
],j∈[1,32];那么,wi与ej的情绪相关性为:
[0035][0036]
其中,o
ij
表示情绪相关性,即计算出来的余弦相似度;cosine(wi,ej)表示计算wi和ej两个向量的余弦相似度,||wi||表示向量模长;
[0037]
对每一类情感在余弦相似度上的均值执行去平均操作,以使词语的整体情感表达趋于稳定;即对某一类情感ej在整个数据集中单词的余弦相似度取均值:
[0038][0039]
其中,n为整个数据集中的单词个数;
[0040]
再执行去平均操作,得到wi与ej的去平均后最终的情绪相关性o
ij

[0041]oij
=o
ij-avg(w,ej)
[0042]
在使用余弦相似度时,还通过idf计算词语权重,以减少高频词的影响;
[0043][0044]
其中,idfi表示第i个词语的idf值,即词语权重wi,|d|表示语料库中的文档总数,|n|表示包含该词语的文档数;
[0045]
所述编码器层的输入为情绪倾向度;对于情绪倾向度et
i,j
,通过对去平均的情绪相关性与词语的权重进行融合得到,即:
[0046]
et
i,j
=o
ij
×wi,j
[0047]
其中,eti表示词语i的所有情绪倾向度,eti=[et
i,1
,et
i,2
...et
i,64
];将eti输入到与transformer结构相同的情绪倾向编码器模块中,并将该输出与情感上下文编码器模块的输出进行拼接:
[0048]
out
emo
=emo_encoder(eti)
[0049]
out
ece
=emo_contextx_encoder(wi)
[0050][0051]
其中,emo_encoder(eti)表示将eti作为情感倾向编码器模块的输入,得到输出out
emo
;emo_contextx_encoder(wi)表示将第i个词语的嵌入向量wi作为情感倾向编码器模块的输入,得到输出out
ece
,表示将两个输出进行拼接,得到输出out
ei
,out
ei
为一个d+64维大小的向量。
[0052]
将所有输入词语的oute综合并输出到情感上下文编码器模块的情感信号层,其中oute=[out
e1
,out
e2
,....out
en
],n为输入词语总数;计算出包含上下文语义信息和词语情绪倾向性的情感信号,用于解码器模块产生丰富的回复。
[0053]
进一步地,所述共享注意力模块采用两个共享注意力网络分别共享情感上下文编码器中多头注意力网络的第2层和第3层的注意力参数,两个共享注意力网络的最后一层输出的注意力特征输入到特征融合层;
[0054]
特征融合层采用多元残差网络进行特征融合,融合两个共享注意力网络输出的语义信息;所述多元残差网络包括投影部分和关联部分;所述投影部分首先将两个注意力特征a
s1
和a
s2
映射到同一对象空间,a
s1
映射为h
s1
,a
s2
映射为h
s2
,则:
[0055]hs1
=a
s1
+relu(w
ms1as1
)
[0056]hs2
=a
s2
+relu(w
ms2as2
)
[0057][0058]
然后,采用双线性策略来关联不同注意力特征的关系;首先对a
s1
和a
s2
分别与权重矩阵w进行拼接,得到x1与x2,然后将得到的x1和x2进行乘积运算,得到z:
[0059][0060]
w=uv
t
[0061][0062]
再通过池化层得到输出r:
[0063]
r=avgpool(z)
[0064]
所述多元残差网络得到的输出结果为r与h两部分的输出拼接,即:
[0065]
m=r+h
[0066]
其中,m为输出的融合注意力特征后的向量。
[0067]
进一步地,所述情感依赖解码器模块首先通过情感信号得到分类器相应的情感分类,明确所述输入语句属于哪一种情感,该情感信号为情感上下文编码器模块和情感倾向编码器模块输出拼接计算后的结果,即包含上下文语义信息和每个词语的情绪倾向信息;然后将融合注意力特征向量与情感信号同时输入到多头交叉注意力网络中,提取其中包含的所有语义信息,再经过前馈神经网络,得到输出向量;最后经过标准化层,得到最终预测的对话回复。
[0068]
进一步地,所述系统在模型的训练阶段,根据预测和实际结果信息的前向传播以及误差的后向传播,不断对模型参数进行调整,从而优化目标损失函数。
[0069]
与现有技术相比,本发明具有以下有益效果:本发明提供了一种基于感知情绪倾向的共情人机对话系统,该系统通过编码器学习词语的情绪倾向性,并通过共享注意力网络保留部分原始语义信息,提高系统对于情绪的感知度和回复多样性,最后通过解码器得到最终的回复,从而可以获得更好的对话回复。
附图说明
[0070]
图1是本发明实施例的模型架构图。
具体实施方式
[0071]
下面结合附图及实施例对本发明做进一步说明。
[0072]
应该指出,以下详细说明都是示例性的,旨在对本技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本技术所属技术领域的普通技术人员通常理解的相同含义。
[0073]
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本技术的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
[0074]
如图1所示,本实施例提供了一种基于感知情绪倾向的共情人机对话系统,包括:外部知识模块、情感上下文编码器模块、情感倾向编码器模块、共享注意力模块和情感依赖解码器模块。
[0075]
所述外部知识模块用于对输入语句,通过概念网络和vad情感向量,构建情感上下文向量。
[0076]
所述情感上下文编码器模块用于基于transformer编码器对情感上下文向量进行编码,然后输入多头注意力网络,得到情绪信号。
[0077]
所述情感倾向编码器模块用于计算输入语句中词语与情感之间的情绪倾向性,以更好地表示出词语与相应情感之间的相关性信息。
[0078]
所述共享注意力模块用于共享情感上下文编码器模块中多头注意力网络不同层的注意力参数,获得多个注意力特征,并采用多元残差网络融合多个注意力特征,得到融合注意力特征向量,以提高语义信息丰富程度。
[0079]
所述情感依赖解码器模块用于整合情绪信号和融合注意力特征向量,基于transformer解码器,利用多头交叉注意力网络,输出预测的对话回复。
[0080]
下面分别对各模块的配置功能作进一步的详细描述。
[0081]
1)外部知识模块
[0082]
外部知识模块主要用于关联输入内容和外部知识。所述外部知识模块将输入语句与外部知识图谱conceptnet和vad情感向量匹配,计算情感强度和候选概念词组中的置信度得分,通过选择得分较高的概念词组,得到一个四元组。所述四元组包括与输入语句中词汇相关联的头部概念、关系、尾部概念以及相应的置信度得分,并将所述四元组组合为一个
情感上下文。
[0083]
2)情感上下文编码器模块
[0084]
所述情感上下文编码器模块基于transformer编码器结构,包括词嵌入层、多头注意力网络和情感信号层。
[0085]
所述词嵌入层通过预训练glove向量,将情感上下文中每一个词语转化为300维向量,组合所有词语的嵌入向量,输入到多头注意力网络中。
[0086]
所述多头注意力网络将词嵌入层编码后的向量作为输入,通过以下公式提取输入语句的语义信息,并将提取后的向量通过残差连接和标准化层,以进行后续处理和系统优化:
[0087]
mutihead(q,k,v)=concat(head1,...,headh)wo[0088][0089]
其中,q,k,v分别表示在注意力机制中将输入向量线性变换为查询向量q、键向量k和值向量v,mutihead(q,k,v)表示计算三个向量分为多头后再拼接的结果,headi表示第i个头的注意力值,h表示注意力头的数量,concat(head1,...,headh)表示将多个注意力头的结果进行拼接,wo表示多头拼接时的初始权重矩阵,分别表示将查询向量q、键向量k和值向量v分别与其权重矩阵相乘的结果,表示利用三个向量与其权重矩阵相乘后的结果计算注意力值。
[0090]
所述情感信号层将多头注意力网络的输出作为输入,并计算出情感信号;所述情感信号包括经过精炼的语义信息和用于情感分类的信息,其计算公式如下:
[0091][0092][0093][0094]
其中,表示情感上下文变量,表示多头注意力网络的输出,e为外部知识图谱中概念网络的顶点数量;exp(ηi)表示以自然常数e为底的指数函数,ηi表示对应的情感强度,ce是一个d维大小的向量;we为[32,d]大小的权重矩阵,d为嵌入层的维度大小;softmax(w
ece
)表示使用softmax线性层将ce向量投影到情绪信号pe。
[0095]
3)情感倾向编码器模块
[0096]
情感倾向编码器模块主要用于通过情感上下文计算情绪倾向值。所述情感倾向编码器模块包括词嵌入层、情绪倾向计算层和编码器层。
[0097]
所述情感倾向编码器模块的词嵌入层与情感上下文编码器模块的词嵌入层相同。所述情绪倾向计算层用于获得每一个词语与32种情绪的关联性,我们将这种关联性称为情绪倾向性。
[0098]
首先将输入语句通过词嵌入层转化为向量表示,若输入语句的词嵌入表示为[w1,w2,,...,wd],d为句子中的单词个数,则语句中的第i个单词wi∈[w1,w2,,...,wd],i∈[1,d];若32个情感向量的词嵌入用[e1,e2,,...,e
32
]来表示,则每个情感词ej∈[e1,e2,,...,e32
],j∈[1,32];那么,wi与ej的情绪相关性为:
[0099][0100]
其中,o
ij
表示情绪相关性,即计算出来的余弦相似度;cosine(wi,ej)表示计算wi和ej两个向量的余弦相似度,||wi||表示向量模长;
[0101]
由于词嵌入层本身具有一定缺陷,对于某些情绪计算出的值较小,不能明显地体现出情绪的相关性,对情绪向量的计算造成干扰。为了显著体现词语对情绪的相关性,通过对每一类情感在余弦相似度上的均值执行去平均操作,使得词语的整体情感表达趋于稳定。即对某一类情感ej在整个数据集中单词的余弦相似度取均值:
[0102][0103]
其中,n为整个数据集中的单词个数。
[0104]
再执行去平均操作,得到wi与ej的去平均后最终的情绪相关性o
ij

[0105]oij
=o
ij-avg(w,ej)
[0106]
在使用余弦相似度时,还通过idf计算词语权重,以减少高频词的影响。
[0107]
对于数据集中的所有词语,每一个词都有对应的词频,即词语出现的次数。分析实例可以发现,“我”、“你”和“他”等高频词汇虽然在对话中占到了很大的比例,但其和情感的相关性不高。而另一些如“喜欢”、“恶心”、“讨厌”等词语却往往可以表达出用户的特定情感。因此,为了减少停用词和高频词对情绪倾向判断的影响,我们将idf算法引入,以区分不同的词在对话中的重要性,即得到词语的权重w
i,j

[0108][0109]
其中,idfi表示第i个词语的idf值,即词语权重wi,|d|表示语料库中的文档总数,|n|表示包含该词语的文档数。
[0110]
从上式我们可以看到,得到的权重w
i,j
会随着词语在语料库中出现的频率成反比。
[0111]
所述编码器层的输入为情绪倾向度。对于情绪倾向度et
i,j
,通过对去平均的情绪相关性与词语的权重进行融合得到,即:
[0112]
et
i,j
=o
ij
×wi,j
[0113]
其中,eti表示词语i的所有情绪倾向度,eti=[et
i,1
,et
i,2
...et
i,64
];将eti输入到与transformer结构相同的情绪倾向编码器模块中,并将该输出与情感上下文编码器模块的输出进行拼接:
[0114]
out
emo
=emo_encoder(eti)
[0115]
out
ece
=emo_contextx_encoder(wi)
[0116][0117]
其中,emo_encoder(eti)表示将eti作为情感倾向编码器模块的输入,得到输出out
emo
;emo_contextx_encoder(wi)表示将第i个词语的嵌入向量wi作为情感倾向编码器模块的输入,得到输出out
ece
,表示将两个输出进行拼接,得到输出out
ei
,out
ei
为一个d+64维大小的向量。
[0118]
将所有输入词语的oute综合并输出到情感上下文编码器模块的情感信号层,其中oute=[out
e1
,out
e2
,....out
en
],n为输入词语总数;计算出包含上下文语义信息和词语情绪倾向性的情感信号,用于解码器模块产生丰富的回复。
[0119]
所述情感信号层将多头注意力网络的输出和情感倾向编码器的输入拼接后作为总体输入,并计算出情感信号;所述情感信号包括经过情感倾向信息,精炼的语义信息和用于情感分类的信息。
[0120]
4)共享注意力模块
[0121]
在本系统中,多头注意力网络通过层层堆叠实现语义信息提取,上一层的输出作为下一层的输入。多头自注意力网络中的参数携带了一定的语义信息,因此,我们将编码器中自注意力层的参数共享到解码器中。如将编码器中的第二层注意力的参数共享到解码器,则可以表示为:
[0122]
[mhatt
d1
,mhatt
d2
,mhatt
d3
...mhatt
dn
]
[0123]
=[mhatt
e2
,mhatt
e2
,mhatt
e2
...mhatt
e2
]
[0124]
其中,mhatt
di
,i∈(1,n)表示解码器中多头注意力层的参数,n为多头注意力层的最大层数。mhatt
e2
则表示编码器中多头注意力网络中第二层的参数。
[0125]
并且,为了使解码器中注意力层的信息多样化,我们共享了两个不同参数的自注意力网络到解码器的注意力层中,则该层的自注意力可表示为:
[0126][0127]
其中,表示上一层的自注意力,表示来自上一层结构的输入,即情感信号模块和标准输出的词嵌入向量,mhatt表示是由h个注意头组成的多头自注意子层,layernorm表示网络层的标准化。
[0128]
在本实施例中,所述共享注意力模块采用两个共享注意力网络分别共享情感上下文编码器中多头注意力网络的第2层和第3层的注意力参数,两个共享注意力网络的最后一层输出的注意力特征输入到特征融合层。
[0129]
特征融合层采用多元残差网络进行特征融合,融合两个共享注意力网络输出的语义信息;所述多元残差网络包括投影部分和关联部分。所述投影部分首先将两个注意力特征a
s1
和a
s2
映射到同一对象空间,a
s1
映射为h
s1
,a
s2
映射为h
s2
,则:
[0130]hs1
=a
s1
+relu(w
ms1as1
)
[0131]hs2
=a
s2
+relu(w
ms2as2
)
[0132][0133]
然后,采用双线性策略来关联不同注意力特征的关系。
[0134]
首先对a
s1
和a
s2
分别与权重矩阵w进行拼接,得到x1与x2,然后将得到的x1和x2进行乘积运算,得到z:
[0135][0136]
w=uv
t
[0137][0138]
再通过池化层得到输出r:
[0139]
r=avgpool(z)
[0140]
所述多元残差网络得到的输出结果为r与h两部分的输出拼接,即:
[0141]
m=r+h
[0142]
其中,m为输出的融合注意力特征后的向量。
[0143]
5)情感依赖解码器模块
[0144]
所述情感依赖解码器模块首先通过情感信号得到分类器相应的情感分类,明确所述输入语句属于哪一种情感,该情感信号为情感上下文编码器模块和情感倾向编码器模块输出拼接计算后的结果,即包含上下文语义信息和每个词语的情绪倾向信息,添加情绪倾向信息能更明显地表达输入语句的情感特征;然后将融合注意力特征向量与情感信号同时输入到多头交叉注意力网络中,提取其中包含的所有语义信息,再经过前馈神经网络,得到输出向量;最后经过标准化层,得到最终预测的对话回复。
[0145]
在本实施例中,所述系统在模型的训练阶段,根据预测和实际结果信息的前向传播以及误差的后向传播,不断对模型参数进行调整,从而优化目标损失函数。
[0146]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0147]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0148]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0149]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0150]
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1