一种基于记忆网络的多轮对话下的意图识别方法与流程

文档序号:15981744发布日期:2018-11-17 00:24阅读:251来源:国知局

本发明属于自然语言处理的对话领域,涉及一种记忆网络的神经网络学习方法。

背景技术

随着人们生活水平不断的提高,人工智能设备的出现其实满足了大众心理的“小刚需”,如人工智能设备之一的智能音响。通过语音控制播放音乐,或者躺在冬天的被窝里关灯等等智能服务,其都在一定程度上大大的便捷了人们的生活。2017年国内智能音箱市场的爆发式增长惊人,2017年的销售数据足以表明智能音箱在国内的受欢迎程度。这一年是智能音箱市场增长最快的一年,不少品牌通过自身的软件或者硬件优势快速赢得市场。当然成功的背后,这个市场并非看起来那么顺利,还有很多技术还未成熟。单轮对话下的任务处理还存在诸多的瓶颈,而多轮对话下的服务和需要克服的问题还没有引起广大研究人员的重视。

对话系统最早被提出是在1950年,艾伦·图灵(alanturing)提出了一种方法来测试一台机器的智能水平,这个机器被普遍称为图灵测试或模仿游戏。在图灵测试中,一台机器被要求与人交谈。机器的智能水平取决于机器如何能够欺骗人类评估者,使其相信机器是基于文本响应的人类。目前主要有以下三种对话系统:1)闲聊系统2)基于框架的目标导向系统3)交互式问答系统(qa)。由于人类交流时,酝酿语言的过程较短,句法结构比较简单,多用短句和省略形式等习惯,对话的内容很难单轮对话中交代清楚。这就导致上述的三大对话系统都必须满足多轮对话的刚性需要。

记忆网络是一类神经网络模型,可以通过操作内存中的内容(存储、取回、过滤和重用)来进行自然语言推理。记忆网络已被成功地应用于很多自然语言任务中了,例如问答系统,语言建模以及对话。记忆网络中的存储器部分可以嵌入长期记忆(例如,关于真实世界的常识)和短期上下文(例如,最近的几段对话)。而短期上下文的记忆可以采用内部记忆方式和外部记忆方式。循环神经网络的记忆是内部记忆方式,其依靠rnncell或者lstmcell实现,但是rnn和lstm的记忆能力实在有限,最多也就记忆十几个时间步长。而外部的记忆方式可以任意增加加入模型的知识量,同时对模型本身做出最小限度改变。



技术实现要素:

技术问题:本发明提供一种可以引入历史信息实现多轮对话的意图识别,也考虑拒绝历史信息的引入实现单轮对话的意图识别,实现合理对话场景下意图分类的基于记忆网络的多轮对话下的意图识别方法,在考虑多轮对话的意图识别的同时,兼顾单轮对话的意图识别。

技术方案:本发明的基于记忆网络的多轮对话下的意图识别方法,包括以下步骤:

a、利用公开文本数据库提供的接口获取用于训练词向量模型的语料库,对所述语料库经过文本预处理后,训练词向量模型,得到文本数据中词语对应的词向量集合v,每个词向量表示为vi,所述词向量模型采用共现矩阵和glove模型学习词向量,具体过程如下:

1)基于语料库构建词的共现矩阵x,:使用窗口将整个语料库遍历一遍,将整个语料库中,单词i和单词j共同出现在一个窗口中的次数作为共现矩阵x的元素xij,即可得到共现矩阵x;

2)根据下式构建训练词向量模型的目标函数:

其中j为目标函数的值,f(x)是权重函数,x表示词频,xmax为自定义的最大词频,f(xi,j)为元素xi,j的权重,vi,vj分别是单词i和单词j的词向量,bi,bj是单词i和单词j的偏置参数,元素xij表示为整个语料库中,单词i和单词j共同出现在一个窗口中的次数,n为语料库的词汇表的大小,t为矩阵转置;

b、读取文本数据,并将其处理成网络模型能够接受的量化数据,具体步骤如下:

1)读入对话文本数据,给每个词编号,建立包含编号-词语映射的词典d,编号从1开始;

2)根据训练好的词向量模型,对应词典d,找到每个编号下对应的词语在词向量模型中的词向量vi,建立词向量矩阵p,词向量矩阵p的每一行p[i]存储词向量vi,词向量矩阵p的第一行p[0]存储一个元素全为零的词向量;

3)按照词序生成每轮对话文本ui的编号向量bi,编号向量bi的元素为词语的编号,编号向量bi采用固定长度l,不足长度的位置补零;

4)根据编号向量bi构建编号矩阵b,编号矩阵b的每一行b[i]采用one-hotrepresentation表示向量,这个向量的维度是词典d的大小,其中只有一个维度的值为1,其他元素为0,这个值为1的维度就是编号向量bi的对应编号;

5)生成输入矩阵i,即网络模型能够接受的量化数据如下:

i=b*p;

c、将每轮对话的文本内容利用长短时记忆网络lstm编码成对应的编码向量,遍历对话集合,每轮对话ui都作为一个输入,生成每轮对话ui的对应编码向量si;

si=lstm(ui)

d、构建每个对话的编码向量si的历史记忆信息矩阵mi,具体过程如下:

1)原始对话文本数据中包含多个对话片段{t1,t2,t3,…,ta},对于每一个对话片段ti中包含多轮对话[u0,…,ub],其中a表示文本数据中的对话片段个数,b表示每个对话片段中对话信息的轮数;设置一个历史信息保留窗口,窗口大小为k,对于每个对话片段ti的每轮对话ui保留其前面的k轮对话作为历史信息[ui-k,…,ui-1],如果ui之前的轮数少于窗口大小k,则前向补零,历史信息为[0,…,0,u0,…,ui-1];

2)对于每轮对话ui的历史信息[ui-k,…,ui-1]的每个元素利用步骤c中的长短时记忆网络lstm生成每个元素对应的编码向量[si-k,…,si-1],构建成每轮对话ui的历史记忆信息矩阵mi:

e、通过注意力机制,从每轮对话ui的历史记忆信息矩阵mi抽取与当前对话意图相关的信息,然后根据下式计算当前对话的对应编码向量si和其历史记忆信息矩阵mi中第j个历史信息的权重pj:

通过pj和历史记忆信息矩阵mi的加权和得到历史信息的向量表示hi:

f、根据下式计算控制门的权重ai:

ai=sigmoid(w[hi,si])

其中,sigmoid函数为激活函数,w为控制门的网络参数,hi为历史信息的向量表示,si为当前对话的编码向量;

g、根据下式计算最终用于分类的编码向量oi:

oi=sigmoid(wkg(aihi+si))

其中,sigmoid函数为激活函数,wkg为分类器的网络参数,ai为控制门的权重,hi为历史信息的向量表示,si为当前对话的编码向量。

h、采用多层感知机(mlp)作为分类器:

label=mlp(oi)

其中,oi为步骤g中生成的编码向量,label为每个标签对应的概率分布向量,向量维度为标签集合的大小/()。

进一步的,本发明方法中,步骤a中的词向量是用实数向量将文本映射到量化空间的一种表示方法,采用distributedrepresentation的编码方式,向量的距离用欧氏距离或余弦夹角来衡量。

进一步的,本发明方法中,步骤b的3)中不足长度的位置补零采用前向补零或后向补零,且所有编号向量补零方式必须一致。

进一步的,本发明方法中,步骤c中编码成对应的向量是用实数向量将序列文本映射到量化空间的一种表示方法。

进一步的,本发明方法中,步骤h中分类器采用能够同时预测多个意图的多标签分类器,将编码向量oi作为分类器的输入,分类器为全链接的单层神经网络,输出为一个一维的向量,向量的维度为数据集的标签集合的元素个数。

本发明主要采用循环神经网络,记忆网络和注意力机制结合的神经网络模型。本发明首先需要将语言数学化处理,可以采用常用的词向量表示方法,然后利用循环神经网络对每轮的对话进行编码,得到对话的编码向量,再利用外部存储器保存历史对话信息,通过注意力机制从记忆中选择与该轮对话意图相关的历史对话信息,从而得到历史信息的编码向量,对于当前的对话编码向量和历史的对话编码向量,利用一个控制门,判断是否在分类器中引入历史信息,得到最终用于分类的编码信息,利用多标签的分类器,得到每轮对话的意图。

本发明基于对多轮对话的历史信息的处理的必然性,并将其实际应用于意图识别问题,通过在传统的模型中添加独立存储器,作为一种神经网络能够按需读写的知识库,来增强模型。该方法通过记忆网络和控制门,不仅仅可以引入历史信息实现多轮对话的意图识别,也考虑拒绝历史信息的引入实现单轮对话的意图识别,实现合理对话场景下的意图分类。

有益效果:本发明与现有技术相比,具有以下优点:

本发明创造性的提出了基于记忆网络的多轮对话下的意图识别方法,有效的利用多轮对话的历史信息,更好的实现了对话意图的识别。多轮对话系统中的意图分类是典型的多标签文本分类问题,对话数据的特点包括:短文本、带有上下文信息、不均衡和标签之间存在依赖关系。目前现有的处理意图识别的模型是就是采用记忆网络框架实现意图识别的。针对短文本,模型利用lstm网络编码,lstm既能捕捉文本的时序特征,又能捕捉文本的语义特征,是目前最常采用的文本编码器。针对上下文信息的抽取,现有模型采用内积式注意力机制,但是仅能从上下文中抽取到相近信息用于辅助分类。通过分析注意力机制的抽取原理,提出利用参数式注意力机制替换内积式注意力机制。参数式注意力机制既能从上下文信息中抽取到相近的信息,又能抽取到更多关联的信息。而针对抽取后的信息,现有模型直接将其与当前文本的编码信息简单地拼接,作为特征输入分类器分类。然而对话系统中一些对话不需要依赖上下文信息,能够独立地进行意图识别,如对话内容切换时,上下文信息的引入反而会干扰意图识别。通过在模型中添加forgetgate来控制上下文信息的引入量,从而避免上下文信息变成噪声干扰分类。实现表明,改进后的模型在意图识别的效果上提升显著。

附图说明

图1是生成词向量模型的流程图

图2是系统模型编码过程的流程图

图3是系统模型的记忆信息抽取过程的流程图

图4是系统模型的控制门的流程图

图5是系统模型的多标签分类器的流程图

图6是系统模型的总体流程图

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。

参考图1,下面说明本发明方法的具体步骤:

a1.输入从维基百科网站下载的英文维基百科语料库,对语料库进行处理,仅仅保留有效的文本。

a2.基于语料库构建词的共现矩阵,设共现矩阵为x,其元素为xij。xij表示的意义为:在整个语料库中,单词i和单词j共同出现在一个窗口中的次数。使用窗口将整个语料库遍历一遍,即可得到共现矩阵x。

a3.结合共现矩阵x,利用glove模型训练词向量模型。

a4.生成词向量模型。

参考图2,下面详细叙述系统模型的编码过程的具体步骤:

b1.输入对话数据集u。

b2.给对话数据集u中每个词编号,建立包含编号-词语映射的词典d,编号从1开始。

b3.根据a4训练好的词向量模型,对应词典d,找到每个编号下对应的词语在词向量模型中的词向量vi。建立词向量矩阵p,词向量矩阵p的每一行p[i]存储对应词典d的编号对应的词语的词向量vi,词向量矩阵v的第一行p[0]存储一个元素全为零的词向量。

b4.按照词序生成每轮对话文本ui的编号向量bi,编号向量bi的元素为词语的编号,编号向量采用固定长度l,不足长度的位置补零。构建编号矩阵b,编号矩阵的每一行b[i]采用one-hotrepresentation表示向量。这个向量的维度是词典d大小,其中绝大多数元素为0,只有一个维度的值为1,这个维度就是编号向量bi的对应编号。

b5.根据b3得到的词向量矩阵p和b4得到的编号矩阵b,将其点乘后,输入到lstm中进行编码。

b6.输出编码向量si。

参考图3,下面详细阐述系统模型的记忆信息抽取过程的实施步骤:

c1.输入对话数据集u。

c2.设置一个历史信息保留窗口,窗口大小为k,历史信息仅仅保留当前对话之前一个窗口大小的对话轮数。历史信息的截取从每个对话片段的开端开始,如果历史轮数少于窗口大小,则前向补零。如多轮对话片段ui中,包含对话{u1,u2,u3,…,um},对于u1的历史信息为[0,0,…,]k,对于u2的历史信息为[0,0,…,u1]k,对于ui的历史信息为[ui-k,…,ui-1]k。将历史信息[ui-k,…,ui-1]k的每个元素通过c步骤编码成编码向量,构建每个对话ui的历史记忆信息矩阵mi

c3.根据c2生成的历史记忆信息矩阵mi,利用如下公式计算得到注意力权重。

c4.根据c2生成的历史记忆信息矩阵mi和c3计算得到的权重,按照如下公式求加权和,得到历史信息编码向量hi。

c5.输出历史信息编码向量hi。

参考图4,下面详细叙述系统模型的控制门的具体步骤:

d1.输入对话数据集u。

d2.根据b6得到对话的编码向量si。

d3.根据c5得到历史信息编码向量hi。

d4.利用如下的公式计算一个引入历史信息的比例。比例值被限制在(0,1)之间,历史意图与当前意图无关时,比例值靠近0,历史意图和当前意图相关时,比例值接近于1。

ai=sigmoid(w[hi,si])

d5.根据如下公式计算得到最终用于分类的编码向量oi。

oi=wkg(aihi+si)

参考图5,下面详细阐述系统模型的多标签分类器的实施流程。

e1.输入d5中得到的用于分类的编码向量oi。

e2.设置目前函数为crossentropy算法,优化函数设置为rmsprop,输出节点设置为标签集合大小。

e3.输出预测的对话的意图结果。

上述步骤为本发明的基于记忆网络的多轮对话下的意图识别方法的基本流程,在这些步骤中,尚有一些步骤根据实际情况需要补充,下面详细介绍。

在步骤a训练词向量模型的过程中,考虑训练本发明的对话数据集是英文的,所以采用英文的维基百科语料库,然而如果要将模型应用于中文或者其他语言,则需要根据具体的对话数据集的语种来选择预训练的词向量模型的训练预料。针对语言语法方面的差异性,需对原步骤进行一些补充。

本发明的词向量训练算法,在步骤a中,选择了glove算法,也可以采用其他的合适的词向量训练方法,如采用word2vec中的cbow(continuousbagofwords)和skip-gram两种模式。

在步骤b中,建立词典的时候,可以选择对话数据集中出现的所有词语,但如果数据集较大,词语集合将很大,也可以选择出现频率高的一部分词语建立词典。

在步骤c中,编码部分可以选择lstm,也可以选择普通rnn模型或者改进的gru,甚至可以选择cnn作为编码器。具体的模型可以根据数据集和最后的结果做出适当调整。

在步骤h中,本发明中分类器选择的是多标签的分类器,如果实际应用中,仅仅需要单标签的分类,则可以将其替换成单标签的分类,目标函数需要做出相应的变化,单标签分类器需要选择softmax_cross_entropy_with_logits,通过softmax将输出概率变成和为1的概率预测值,选择最大的概率作为结果。

本发明中,网络使用循环神经网络lstm构成编码器,使用记忆网络保存历史信息,用注意力机制提取历史信息中相关信息,利用控制门控制历史信息的引入量。

本发明创造性的提出了基于记忆网络的多轮对话下的意图识别方法,有效的利用多轮对话的历史信息,更好的实现了对话意图的识别;同时,通过注意力机制,控制门来抽取历史信息中相关的信息;此外,根据多标签的分类器,满足多个意图的识别。特别地,本发明采用外部记忆存储方式,更方便的实现历史信息的抽取和读写,使得多轮中对历史信息的利用率大大提高。

上述实施例仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和等同替换,这些对本发明权利要求进行改进和等同替换后的技术方案,均落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1