本发明公开了一种自然语言问答技术中的问句意图识别方法,涉及自然语言处理、问答系统与人工智能领域。
背景技术:
随着移动互联网的发展,诸如智能手机、语音机器人以及智能音箱等语音设备不断普及,对基于人工智能回答用户提问的问答技术的需求日益增长。近年来,基于机器阅读理解的问题解答引起了特别的关注,机器阅读理解是一种问答技术,使得系统能够阅读与理解自然语言文档或段落,并从段落中查找与提取答案的信息,从而能够进行问题回答。
虽然目前基于机器阅读理解的问题解答能够达到较高回答精度,但在实际使用时仍然存在问题。在实际的问答系统中,当提问者输入了意图模棱两可的问题或者是系统所需要信息不足的简短问题时,就很难达到较高的回答准确性。例如在实际场景,机器客服与提问者之间的交互,一个不熟悉相关业务知识的提问者有时会问机器客服一些意图不明确的问题。因此将带有推测与识别确认提问者意图的机制引入当前基于机器阅读的问答系统,实现对模糊问题的精准回答十分必要。
技术实现要素:
为了克服现有机器阅读理解问答技术存在的上述不足,本发明的目的在于提供一种自然语言问答技术中的问句意图识别方法。
为实现上述目的,本发明采用如下的技术方案:
一种自然语言问答技术中的问句意图识别方法,所述方法采用一种端到端的可执行修正问题生成模型,该模型通过结合句子生成模型、机器阅读模型以及复制机制,所述方法包括以下步骤:
步骤1,当输入的问题与其相对应的提问段落被输入到生成模型中时,该模型会使用机器阅读模型读取并提取输入的问题与段落的内容中的相关信息;
步骤2,该模型基于注意力观察监督机制,提取信息的同时由句子生成模型生成修正的问题集合;
步骤3,接着,复制机制会将输入的问题以及段落中的重要单词与表达方式复制到修正后的问题集合当中,从而根据段落的内容生成修订后的最终问题;
所述修正问题生成模型结构包括如下四部分:
输入层:将输入的问题句子与提问段落表示为单热编码的序列矢量模型;
编码层:使用单词嵌入模型将输入层的段落标记序列与问题句子转换为连续值的向量,并同时考虑到段落与问题句子的上下文关系来创建向量序列;
匹配层:捕获段落中的单词与输入问题句子之间的相互关系,对段落的向量序列进行建模;
解码层:使用具有注意力机制与两个复制机制的gru-rnn门控循环单元递归神经网络,生成构成修正问题的单词标记序列。
进一步,所述解码层当中,gru-rnn门控循环单元递归神经网络结构如下:
激活函数:gru-rnn中选择prelu作为激活函数,该函数作为修正线性单元,可以将输入向量当中的所有负值的斜率根据具体训练数据作出改变,其余值不变,增加区分对比度,提高模型学习效率;
神经元选择:门控循环单元gru是rnn当中的一种神经元,在隐藏层中通过两个门结构来控制信息的留存,可以筛选出重要与不重要的信息;
其它参数:模型采用一层带有注意力机制的gru与softmax层构成,自适应梯度下降法,学习率为0.0007。
再进一步,采用一种段落句子压缩自动生成训练数据的方法,通过句子压缩,从机器阅读语料问题库中产生意图模糊的简短提问句,从而自动修正提问模型。
本发明的有益效果为:将带有推测提问者意图的机制引入当前基于机器阅读的问答系统,可以在现有问答系统输入问题太短而无法识别答案时提高机器阅读回答准确性,同时,即使在输入问题足够长的情况下通过给出修正问题候选集合,能够在候选集合中选择与提问者问句意图相匹配的问题,从而在问答系统中获得较高精度的答案。
附图说明
图1为融入修正问题生成模型的机器阅读问答系统结构示意图;
图2为本发明修正问题生成模型结构示意图;
图3为残差公路网络核心结构图;
图4为gru-rnn单层结构展开图。
图5为本发明所属gru单元基本结构图
具体实施方式
应指明,以下说明都是示例性的,旨在对本发明申请提供进一步的说明。除另有指明,本文使用的所有科学与技术术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
另外需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方案,下面结合附图与实施例对本发明作进一步说明。
参照图1~图4,一种自然语言问答技术中的问句意图识别方法,所述方法采用一种端到端的可执行修正问题生成模型,该模型通过结合段落生成模型、机器阅读模型以及复制机制,该模型的任务是将输入问题与相应段落作为输入并输出相关意图修正后的问题,提问者可以从多个修正问题候选集合中选择符合自身正确意图的修正问题,所述方法包括以下步骤:
步骤1,如图1所示当输入的问题与其相对应的提问段落被输入到生成模型中时,该模型会使用机器阅读模型读取并提取输入的问题与段落的内容中的相关答案信息;
该模型会将输入问题的单词标记序列与段落的单词标记序列作为输入,并从段落中估计答案可能存在的起点与终点的位置,其输出为带有从段落中提取估计答案范围的单词标记序列。其中输入的问题句子会首先通过形态与语法分析进行分词与词性标注,并表示为单热向量编码序列q={q1,q2,…qj},单热向量为v维向量,其中与单词词典的索引相对应的维度值为1,其它维度值为0;段落处理与输入问题类似,段落中单词数量较多,由一个单热向量x={x1,x2,…,xt},段落中应包含将要回答问题的相关信息。
步骤2,该模型基于注意力观察监督机制,提取信息的同时由段落生成模型生成修正的问题集合;
步骤3,接着,复制机制会将输入的问题以及段落中的重要单词与表达方式复制到修正后的问题集合当中,从而根据段落的内容生成修订后的最终问题。修订后的最终问题是一个句子,其中输入问题的内容具体化为y={y1,y2,…,yk}。
进一步地,如图2,所述修正问题生成模型结构具体包括:
输入层:将输入的问题句子与提问段落表示为单热编码的序列矢量模型;
编码层:使用单词嵌入模型将输入层的段落标记序列与问题句子转换为连续值的向量,并同时考虑到段落与问题句子的上下文关系来创建向量序列;
输入层的x与q成为编码层的输入,表示为v维的单热编码向量,首先将单热编码向量转换为以v维表示的连续值向量。为了转换单词,使用训练后的向量变换矩阵
接着将转换为连续值向量序列的段落与问题输入到gru-rnn网络中,本发明当中,使用一层gru单元,其中gru的修正线性单元值会在训练过程中随段落与输入问题动态改变,另外,为了防止输入向量在训练过程中影响变小,使用双向gru,获得段落的上下文矩阵
编码层中的rnn状态还用于确定解码层中rnn的初始状态,解码层的初始状态计算公式如下:
此计算公式将注意力放在输入问题的上下文矩阵上,其中
匹配层:捕获段落中的单词与输入问题句子之间的相互关系,对段落的向量序列进行建模;
在匹配层中,将使用编码层中的段落与输入问题进行匹配,并从段落中找到与输入问题相关的区域,在匹配层使用双向注意力流(bidaf)模型来获取段落与输入问题之间的关系,双向注意力流会从段落与输入问题两个方向计算注意力值,最后根据输入问题为段落创建上下文矩阵。
在bidaf中,首先使用用于传递的上下文矩阵h和用于输入问题的上下文矩阵u,根据下式计算出相似度矩阵
其中,ωs为学习参数,[;]表示行向量级联运算。接下来,基于相似度矩阵,在两个方向上计算从段落到输入问题的双向注意力值。从段落到输入问题的注意力值当中,针对段落当中的单词,用输入问题中的单词计算加权向量,段落中第t个单词的注意力向量
at=softmaxj(st)
从输入问题到段落的过程中,矩阵
接着计算段落中每个单词与输入问题间的双向注意力向量;
最后将双向注意力向量g输入到第一层双向gru当中,并且获得上下文矩阵m。
解码层:使用具有注意力机制与两个复制机制的gru-rnn门控循环单元递归神经网络,生成构成修正问题的单词标记序列。
该层中,会根据编码层与匹配层中的信息生成修正后的问题。最终整合为一个网络,该网络结合了基于rnn语言生成模型和用于段落和输入问题的复制机制。
进一步地,所述rnn语言生成模型,包括:
生成模型由具有注意力机制的一层gru和softmax层组成,当输入修订单词序列y={y1,…,ys}时,由生成模型输出的修正问题的下一个单词概率分布pg可表示为:
其中wg与bg表示学习参数,vg表示由生成模型生成的单词数,并且v>vg。通过生成模型生成的单词只是高频单词,低频单词通过复制机制提取,这样可以减小生成模型的大小并提高学习速度,hs+1是gru的隐藏层,并由
根据生成模型输出的先前单词ys,按照如下方法确定gru的输入向量
接着计算段落的注意力值αst与输入问题的注意力值βsj:
最终,gru的输入值
其中,
进一步地,所述复制机制,包括:
该机制是一种在句子和对话的上下文中,通过在句子生成过程中复制输入词的一部分来生成具有一致性句子的机制,目的在于根据输入的问题或段落的内容生成修正的问题,其中输入的问题和段落均被用作复制源,通过复制机制计算获得单词的生成概率分布:
pcp(ys+1|y≤s,x,q)=∑tf(ys+1=xt)α(s+1)t;
pcq(ys+1|y≤s,x,q)=∑jf(ys+1=qj)β(s+1)q;
其中,f(ys+1=xt)是一个函数,当ys=xt时值为1,否则为0,f(ys+1=qj)同理。
进一步地,所述解码层的基于rnn语言生成模型和用于段落和输入问题的复制机制网络,包括:
通过生成模型计算出的每个单词的生成概率的加权和可以用于确定最终输出单词的单词概率分布p:
p(ys+1|y≤s,x,q)=λspg(ys+1|y≤s,x,q)
+μspcp(ys+1|y≤s,x,q)
+υspcq(ys+1|y≤s,x,q);
其中λsμsυs是权重参数,λsμsυs∈[0,1]且λs+μs+υs=1,权重参数的值由下式所示的softmax层输出
λs=γs0,μs=γs1,υs=γs2
其中,highway2()表示两层残差公路网络,wc与bc表示学习参数中的权重与偏置。接着根据解码层生成的概率分布,在生成的过程中引入集束搜索,并且通过集束宽度b搜索生成范围来生成多个修正问题候选集。
修正问题生成模型训练过程中,使用负对数似然损失计算误差l,并通过更新参数的方式最小化误差函数,不断优化生成模型,误差函数定义为:
进一步地,解码层所述gru-rnn门控循环单元递归神经网络结构包括:
激活函数:gru-rnn中选择prelu作为激活函数,该函数作为修正线性单元,可以将输入向量当中的所有负值的斜率根据具体训练数据作出改变,其余值不变,增加区分对比度,提高模型学习效率;
神经元选择:如图4所示,为gru-rnn单层结构展开图,其基于一种时间序列长度模型,能够有效捕捉上下文之间的关联信息,门控循环单元gru是rnn当中的一种神经元,在隐藏层中通过两个门结构来控制信息的留存,可以筛选出重要与不重要的信息,如图5所示,gru单元结构如下:
序列t的输入为xt,隐藏层的上一层输入为ht-1,表示前一数据中不太重要的信息,这两个输入通过重置门rt,更新门zt与输出门ht的处理,形成单元的输出ht与隐层输出
更新门:zt=σ(wz·[ht-1,xt])
重置门:rt=σ(wr·[ht-1,xt])
隐藏层:
输出门:
其它参数:模型采用一层带有注意力机制的gru与softmax层构成,自适应梯度下降法,学习率为0.0007。
进一步地,一种段落句子压缩自动生成训练数据的方法,包括:
该压缩方法是一种基于句法依赖结构与整数规划的无监督句子压缩方法,首先获得输入句子的语法依存结构,接着从句子的开头按顺序给句子中的单词分配索引号,并基于索引号制定整数规划问题,整数规划表达式定义如下:
当ai=1时,选择句子中的第i个单词,当ai=0时,即该单词未被选中,通过句子压缩将其删除。l是压缩之前句子的长度,l是压缩之后句子的最大单词数,parent(i)在句法依赖上显示与第i个单词的父节点相对应的单词,wi表示单词权重,由
上述内容虽结合附图对本发明的具体实施方法进行了描述,但仅为本发明的优选实施例而已,所属领域的技术人员应该明确,凡在本发明的技术方案基础之上,所做出的任何篡改,等同以及无需付出创造性劳动即可做出的变形或修改,均应包含在本发明的权利要求保护范围以内。