本发明涉及任务式对话系统技术领域,具体的来说是一种基于循环神经网络的用于聊天机器人带有主题感知的情感聊天式回复生成方法。
背景技术:
目前在对话系统中一种比较热的研究就是聊天型对话系统,此类系统不需要完成一个明确任务,它存在目的往往是为了陪伴用户闲聊,让机器最大程度去模拟人与人之间的闲聊。有研究表明,具备表达情感的聊天机器人能够提升用户的满意度。赋予聊天机器人以情绪感知和表达的能力,是人工智能在情感计算方面的一种重要表现。此外,我们通过分析语料也发现真人的对话不仅讨论话题丰富,而且语句之间往往具有较高的主题相关性和一致性。
当前聊天型对话系统,根据回复的来源又分为两种:第一种是检索式的,根据现有的对话语料库检索最相关的回复,通过检索得到的回复会受限于给定的语料库;第二种是生成式的,生成的回复相对比较灵活,可以生成语料库中没有的,并且可以得到与输入的会话最相关的回复。因此本发明所提供的是一种应用于聊天型对话机器人的,生成特定情感回复的方法。
早期的获取带情感的回复的方法要么是基于规则的,要么是基于检索的,又或者是受限于小规模的数据集,难以得到各种情感类别的回复。现阶段大多数生成式对话系统常用的模型都是基于循环神经网络的序列到序列(seq2seq)模型,由于该系统的输入是一句话,输出也是一句话,满足序列到序列的特性。目前基于seq2seq模型的带情感的回复的生成方法,由于情感因素的加入,很多都会倾向于生成琐碎的或普遍相关的响应,几乎没有任何实际意义,比如“哈哈”,“我爱你”,“我恨你”。另外当前的方法往往容易忽略生成的回复和输入会话之间的主题相关性,导致答非所问的情况。当前很多回复生成的方法都是仅仅只关注于一种会话属性,要么是只关注于情感方面,要么是只关注于会话主题属性。
针对现有技术的不足,在本发明中我们提出了一种既能够准确的生成某种指定情感的回复,又能够很好的兼顾到会话主题一致性的方法。
技术实现要素:
本发明的目的是针对现有技术的不足而设计的一种带有主题感知的情感聊天式回复生成方法,采用引入了外部主题常识,通过多种注意力机制相融合的方法,将主题常识引入生成模型中,利用变分自编码器框架下的隐变量有效地捕捉会话的语义和情感信息,使得系统能够生成更加符合预先设定情感类别的回复,不但能够更准确的带情感的回复之外,还能够保证生成的回复与输入的会话在同一个会话主题之下,同时满足了对话系统的两种属性要求,而且设计简单,方便使用,生成的会话与输入的会话在主题相关性上表现很好,具有更广泛的实用意义。
本发明的目的是这样实现的:一种带有主题感知的情感聊天式回复生成方法,其特点是采用编码器、主题感知模块、情绪感知模块和解码器组成的生成模型,将引入生成模型中的外部主题常识与两种注意力机制相融合,利用变分自编码器框架下的隐变量有效地捕捉会话的语义和情感信息,生成带有主题感知的情感回复,其具体回复的生成包括如下步骤:
步骤一:对输入的会话进行编码从中获取语义信息,同时根据当前会话获取对应的主题常识。
步骤二:将会话的语义信息和指定的情感标签拼接输入到训练好的神经网络中,并进行重要性采样得到含有情感和语义信息的隐变量。
步骤三:将循环神经网络gru作为解码器,利用得到的隐变量和两种注意力机制,以及情感标签进行解码。
所述两种注意力机制分别为上下文注意力和主题词注意力。
所述步骤一中,根据当前会话获取对应的主题常识是利用训练好的适用于短文本的主题模型,以及关键词和实体抽取工具对当前会话进行主题常识的动态获取,所述主题模型为btm(abitermtopicmodelforshorttexts)外部的模型工具。
所述步骤二中,将会话的语义信息和指定的情感标签拼接输入到训练好的神经网络中是将目标回复编码所产生的向量输入到训练好的神经网络中得到目标回复中的情感信息和语义信息隐变量。
所述步骤三中,利用得到的隐变量和两种注意力机制,以及情感标签进行解码是将目标回复的情感标签向量、隐变量以及两种注意力进行向量拼接后输入到解码器中,解码后得到隐变量来显示的影响最终词表的分布。
本发明与现有技术相比具有以下优点:
1)实用性:通过引入了外部主题常识与多种注意力机制相融合的方法将主题常识引入生成模型中,使得生成的会话与输入的会话在主题相关性上表现很好。
2)正确性:利用变分自编码器框架下的隐变量有效地捕捉会话的语义和情感信息,使得系统能够生成更加符合预先设定情感类别的回复。
3)易用性:不但能够更准确的带情感的回复,还能够保证生成的回复与输入的会话在同一个会话主题之下,同时满足了对话系统的两种属性要求。
4)设计简单,使用方便,具有更广泛的实用意义。
附图说明
图1为本发明的生成模型示意图。
具体实施方式
下面以具体实施例对本发明作进一步的详细说明。
实施例1
参阅附图1,本发明主要包括以下步骤:
步骤一:对输入的会话进行编码,同时动态获取外部主题常识。
使用双向门控循环神经网络(bi-gru)作为编码器对输入的会话x=x1,x2,...,xn进行编码,在生成模型的训练阶段需对目标回复y=y1,y2,...,ym用同样的方式进行编码,得到如下编码后的隐状态向量h=h1,h2,...,hm:
其中:
步骤二:利用情绪感知模块和主题感知模块获取相关主题和情感信息。
在主题感知模块中,对步骤一中的获得的主题词t=t1,t2,...,tl通过查询现有的词语向量表来获得对应词语的向量表示。由于这一步骤的计算是伴随着解码一步步计算得到的,假定当前解码到第t步,其解码器上一个得到的隐状态为st-1,并按下述a~c式计算当前步的两种注意力机制、上下文注意向量c和主题注意向量tc:
式中:
在情绪感知模块中利用条件变分自编码器,在模型训练阶段将输入的会话和目标回复拼接后输入到q神经网络中,利用重要性采样得到隐变量z,但是在模型测试阶段没有目标回复的信息,因此需要使用另一个只有输入会话的p神经网络。并假定q和p两神经网络的输出都是一种正态分布的均值和标准差,通过均值和标准差进行采样得到隐变量z,并认为隐变量z中含有目标回复的语义信息。但是由于生成模型在使用的时候用到的是p神经网络,而p神经网络的输入并没有目标回复,因此在p神经网络的模型训练过程中,通过将两个网络模型输出的kl散度作为训练目标函数的一部分,使得两个网络模型得到的两种分布越来越接近,这样在使用p神经网络产生的分布采样后得到的隐变量会有目标回复的语义和句式信息。
所述情绪感知模块中设有情感监督器,通过将隐变量输入到另一个神经网络中,该神经网络对应的监督标签是目标回复的情感类型,通过大规模数据集的训练使得隐变量包含有不同类型的情感信息。
步骤三:解码生成目标回复
使用单向一层gru作为解码器,每一步解码都需要将前一步解码产生的单词
式中:gru表示解码单元;st-1为上一个解码单元得到的输出向量,通过把前一步的输出向量输入到当前步的迭代更新过程;z为句子的消息语义以及句式信息的隐变量;mt为融合了两种注意力向量之后得到的向量;
mt=g*(ct;tct)(d);
所述情感语句中的词语主要有关键词、情感词和普通词三个类型,所述关键词为句子中一些表达核心意义的名词或者动词;所述情感词是句子中含有明显情感倾向的一些词,比如喜欢,讨厌,难受等;所述普通词是除了这两类词语之外的一些词,负责连接句子,使得句子表达通顺,完整。所以一个情感句子中不同类型的词语是有一个分布模式的,比如情感词通常在关键词前后。使用步骤二中得到的隐变量,以及当前解码得到的隐状态拼接输入到多层感知器中得到三类词语的类型分布,最后将词表类型分布和词语概率分布做加权求和得到最终词语的分布,其具体生成的回复见下述表1:
表1生成样例表
本发明采用有效的闲聊式对话生成方法,生成某种特定情感类别的对话,同时也要保证生成的回复和输入的会话是在同一个会话主题之下,是一种通过在大规模带有情感标签的对话语料上训练的一种生成模型。该方法利用条件变分自编码器中的隐变量来学习情感语句的语义信息以及分布特征来影响句子的生成,同时在模型中引入了外部主题常识来提升生成回复的主题一致性。
以上只是对本发明作进一步的说明,并非用以限制本专利,凡为本发明等效实施,均应包含于本专利的权利要求范围之内。