应用于智能交互的知识推理方法及装置与流程

文档序号:17399076发布日期:2019-04-13 01:03阅读:204来源:国知局
应用于智能交互的知识推理方法及装置与流程

本发明涉及智能问答和知识推理领域,具体涉及一种应用于智能交互的知识推理方法及装置。



背景技术:

在智能问答领域,不是所有的问题都可以利用现有知识库来进行回答。这主要是因为知识库本身覆盖度有限。具体来说,语料中包含的信息包括两部分,一部分是它本身直接表达的信息,另一部分是隐含的信息。在构建知识库时,语料直接表达的信息大多被编码收录进知识库中,而隐含信息大多并未被编码收录。故而,当问题中所涉及的概念和事实尚未收录到知识库中时,就无法得到较为准确的答案。

知识推理是利用语料来推理出语料中的隐含信息的技术。智能问答中的知识推理是根据用户提出的问题,利用现有的语料进行推理,以寻找出答案的过程。传统的基于统计的知识推理方法主要是依赖知识图谱来推理出新的实体之间的关系。由于基于知识图谱的推理是推理预测实体间潜在的关系,这就导致其只能针对固定的关系类型进行推理,而对于弱相关的零散语句的推理能力不足。例如,语料1为“小明走进厨房”,语料2为“小明拿起牛奶”,语料3为“小明走到客厅”,语料4为“小明把牛奶放下”;而问题是“牛奶现在在那里?”。在这个例子中,4个语料之间的关系比较松散,故而利用基于统计的知识推理方法来推理问题的答案时,很难推理出“在客厅”这一答案,反而会得到其他一些不准确或完全不相关的答案。



技术实现要素:

为解决上述技术问题,本申请提供一种新的知识推理方法,将零散的非结构化信息以及结构化的三元组信息都引入到记忆网络中作为输入信息,共同来推理出问题的答案,从而给出更加准确、令人满意的答案。

第一方面,提供一种应用于智能交互的知识推理方法,包括:

获取问题文本以及推理语料,所述推理语料包括非结构化信息和三元组信息;

将所述非结构化信息和所述三元组信息存储到第一记忆模块和第二记忆模块中;

计算所述问题文本与第一记忆模块中非结构化信息和三元组信息的相关度;

将第二记忆模块中的非结构化信息和三元组信息与所述相关度进行加权求和,得到输出值;

根据所述输出值生成答案。

结合第一方面,在第一方面第一种可能的实现方式中,将所述非结构化信息和所述三元组信息存储到第一记忆模块和第二记忆模块中的步骤,包括:

编码所述非结构化信息,得到第一词嵌入向量;

编码所述三元组信息,得到第二词嵌入向量;

将所述第一词嵌入向量和第二词嵌入向量存储至第一记忆模块中;

编码所述非结构化信息,得到第三词嵌入向量;

编码所述三元组信息,得到第四词嵌入向量;

将所述第三词嵌入向量和第四词嵌入向量存储至第二记忆模块中。

结合第一方面及上述可能的实现方式,在第一方面第二种可能的实现方式中,计算所述问题文本与第一记忆模块中非结构化信息和三元组信息的相关度的步骤,包括:

将所述问题文本向量化表示为问题词嵌入向量u;

将第一词嵌入向量和第二词嵌入向量水平拼接,得到第五词嵌入向量;

利用问题词嵌入向量u和第五词嵌入向量计算所述相关度。

结合第一方面及上述可能的实现方式,在第一方面第三种可能的实现方式中,利用问题词嵌入向量u和第五词嵌入向量计算所述相关度,具体包括:

使用点积注意力的方式,根据问题词嵌入向量u和第五词嵌入向量计算所述相关度p,

pk=softmax(fatt(hk,u)),

p=(p1,p2,……pk,……p(n1+n2));

其中,

fatt()表示点积注意力函数;

hk为第一记忆模块中第k个推理语料的向量化表示,k取1,2……(n1+n2);

为hk矩阵的转置;

wa为注意力参数;

pk表示问题文本与第一记忆模块中第k个非结构化信息或三元组信息之间的相关度值;

softmax为归一化指数函数。

结合第一方面及上述可能的实现方式,在第一方面第四种可能的实现方式中,将第二记忆模块中的非结构化信息和三元组信息与所述相关度进行加权求和,得到输出值的步骤,包括:

将第三词嵌入向量和第四词嵌入向量水平拼接,得到第六词嵌入向量;

将所述第六词嵌入向量和所述相关度进行加权求和,得到输出向量o:

其中,yj为第二记忆模块中第j个推理语料的向量化表示,j取1,2……(n1+n2),k与j的取值相同;

pk表示问题文本与第一记忆模块中第k个非结构化信息或三元组信息之间的相关度值。

结合第一方面及上述可能的实现方式,在第一方面第五种可能的实现方式中,根据所述输出值生成答案的步骤,包括:

将输出矩阵w乘以所述输出向量o与所述问题词嵌入向量u之和,得到第七向量;

使用归一化指数函数softmax将所述第七向量归一化,生成答案:

a=softmax(w(o+u)+b),

其中,a为预测答案的概率分布值,w为输出矩阵,b为偏置量。

结合第一方面及上述可能的实现方式,在第一方面第六种可能的实现方式中,计算所述问题文本与第一记忆模块中非结构化信息和三元组信息的相关度,以及,将第二记忆模块中的非结构化信息和三元组信息与所述相关度进行加权求和,得到输出值的步骤,包括:

计算所述问题文本与第一记忆模块中非结构化信息和三元组信息的第一相关度;

将第二记忆模块中的非结构化信息和三元组信息与所述第一相关度进行加权求和,得到第一输出值;

将所述第一输出值与所述问题文本加和,得到第一输入值;

计算所述第一输入值与第一记忆模块中非结构化信息和三元组信息的第二相关度;

将第二记忆模块中的非结构化信息和三元组信息与所述第二相关度进行加权求和,得到第二输出值;

将所述第二输出值确定为输出值。

第二方面,提供一种应用于智能交互的知识推理装置,包括:

获取单元,用于获取问题文本以及推理语料,所述推理语料包括非结构化信息和三元组信息;

处理单元,用于将所述非结构化信息和所述三元组信息存储到第一记忆模块和第二记忆模块中;计算所述问题文本与第一记忆模块中非结构化信息和三元组信息的相关度;将第二记忆模块中的非结构化信息和三元组信息与所述相关度进行加权求和,得到输出值;以及,根据所述输出值生成答案。

结合第二方面,在第二方面第一种可能的实现方式中,所述处理单元还用于编码所述非结构化信息,得到第一词嵌入向量;编码所述三元组信息,得到第二词嵌入向量;将所述第一词嵌入向量和第二词嵌入向量存储至第一记忆模块中;编码所述非结构化信息,得到第三词嵌入向量;编码所述三元组信息,得到第四词嵌入向量;将所述第三词嵌入向量和第四词嵌入向量存储至第二记忆模块中。

结合第二方面的第一种实现方式,在第二方面第二种可能的实现方式中,所述处理单元还用于计算所述问题文本与第一记忆模块中非结构化信息和三元组信息的第一相关度;将第二记忆模块中的非结构化信息和三元组信息与所述第一相关度进行加权求和,得到第一输出值;将所述第一输出值与所述问题文本加和,得到第一输入值;计算所述第一输入值与第一记忆模块中非结构化信息和三元组信息的第二相关度;将第二记忆模块中的非结构化信息和三元组信息与所述第二相关度进行加权求和,得到第二输出值;以及,将所述第二输出值确定为输出值。

本申请中的应用于智能交互的知识推理方法及装置,首先获取问题文本以及推理语料,所述推理语料包括非结构化信息和三元组信息,然后将所述非结构化信息和所述三元组信息存储到记忆网络模型的第一记忆模块和第二记忆模块中,再计算所述问题文本与第一记忆模块中非结构化信息和三元组信息的相关度;将第二记忆模块中的非结构化信息和三元组信息与所述相关度进行加权求和,得到输出值;最后根据所述输出值生成答案。该方法中,将零散的非结构化信息以及结构化的三元组信息都引入进来,作为记忆网络的输入信息,然后利用非结构化信息和三元组信息共同来推理出问题的答案,从而给出更加准确、令人满意的答案。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为常规记忆网络的数据处理过程示意图;

图2为执行本申请的知识推理方法的记忆网络的数据处理过程示意图;

图3为本申请的知识推理方法的具体实施方式之一的流程图;

图4为本申请的知识推理方法的具体实施方式之一中,s200步骤的其中一种实现方式的流程图;

图5为本申请的知识推理方法的具体实施方式之一中,s300步骤的其中一种实现方式的流程图;

图6为本申请的知识推理方法的具体实施方式之一中,s400步骤的其中一种实现方式的流程图;

图7为本申请的知识推理方法的具体实施方式之一中,s500步骤的其中一种实现方式的流程图;

图8为本申请的知识推理方法的具体实施方式之二的流程图;

图9为本申请的知识推理装置的具体实施方式之一的结构示意图。

具体实施方式

下面对本申请的实施例作详细说明。

记忆网络(memorynetworks,简称为memnn)是深度学习模型的一种,包括记忆模块(memory),以及4个组件i、g、o、r。请结合图1,记忆模块是一个对象的数组(用mi、ci索引的数组,其中i为输入信息在记忆模块中的索引号);组件i用于将输入信息(sentences)转化为记忆网络里内部特征表示;组件g用于利用输入信息更新记忆模块;组件o用于根据给定的新的输入信息(questionq)从记忆模块里把合适的记忆抽取出来,返回一个输出向量(o);组件r用于将该输出向量转化回所需的格式,例如文字或者预测的答案(predictedanswer)等。记忆网络在使用之前需要先采用语料对模型进行训练,以计算出合适的模型参数。请参考图1的记忆网络,其中,词嵌入矩阵a(embeddinga)、词嵌入矩阵b(embeddingb)、词嵌入矩阵c(embeddingc)、输出矩阵w四个矩阵就是主要的模型参数,它们都可以通过模型训练得到。另外,记忆网络中的组件都采用端到端的深度学习模型(例如rnn等)来实现。

相比于lstm、rnn等传统的深度学习模型,记忆网络模型增加了记忆模块,解决了一般深度学习模型的长期依赖的问题,并且可以多次与记忆模块中的信息进行交互,更新输出结果。因此,将记忆网络应用于从零散语句中推理出问题的答案上,可以获得不错的效果。

本申请在记忆网络的基础上,将零散的非结构化信息以及结构化的三元组信息都引入进来作为输入信息,然后利用非结构化信息和三元组信息共同来推理出问题的答案,从而给出更加准确、令人满意的答案。

具体地,在本申请的第一个实施例中,请参考图2和图3,提供一种应用于智能交互的知识推理方法,包括以下s100-s400的步骤。

s100:获取问题文本以及推理语料,所述推理语料包括非结构化信息和三元组信息。

在s100的步骤中,非结构化信息与结构化的三元组信息二者是相对的。在非结构化信息中,实体及其关系并没有被明确的提取和结构化保存起来,例如,“姚明的身高是2.26m”就是一个非结构化信息。知识的结构可以用结构化的三元组来表示,即主词-谓词-宾词的结构,主词主语通常是一个实体,宾词可能是另一个实体或属性,谓词表明两者的关系。例如,“姚明-身高-2.26m”,这就是一个结构化的三元组信息。

在智能问答中,问题文本可以是由用户输入的文字、语音、视频、图片等信息转换得到。例如在智能问答系统中,用户输入语音信息,则可以将语音信息转换得到问题文本。又例如,用户输入图片信息,则可以从图片信息中提取出问题文本。本申请对用户输入的信息的具体形式不做限定。

s200:将所述非结构化信息和所述三元组信息存储到第一记忆模块和第二记忆模块中。

在s200的步骤中,将非结构化信息和三元组信息存储到第一记忆模块和第二记忆模块中,可以通过记忆网络中的i组件和g组件来完成。首先由i组件将非结构化信息和三元组信息分别进行向量化表示,然后由g组件将向量化表示的两类信息储存到两个记忆模块中,以更新两个记忆模块。

更具体地,请参考图4,将所述非结构化信息和所述三元组信息存储到第一记忆模块和第二记忆模块中的步骤,可以包括:

s210:编码所述非结构化信息,得到第一词嵌入向量;

s220:编码所述三元组信息,得到第二词嵌入向量;

s230:编码所述非结构化信息,得到第三词嵌入向量;

s240:编码所述三元组信息,得到第四词嵌入向量;

s250:将所述第一词嵌入向量和第二词嵌入向量存储至第一记忆模块中;

s260:将所述第三词嵌入向量和第四词嵌入向量存储至第二记忆模块中。

在本申请中,词嵌入向量是指利用分布式向量来表示词的语义信息。通过将自然语言中的词汇映射成低维、稠密的向量,使词处于同一个向量空间中,由此引入“距离”的概念对词汇间的语义相似性进行衡量,有助于获得语义信息更为充分表达的向量表示。词嵌入模型可以将词典中的每个词映射成对应的词向量,例如google开发的word2vec等。

在s210-s240的步骤中,非结构化信息或三元组信息均可以通过现有的编码方法,例如wcd(wordcentroiddistance)算法等,来进行向量化表示,将信息映射到同一个空间,得到前述的第一词嵌入向量、第二词嵌入向量、第三词嵌入向量或第四词嵌入向量。

以下以编码非结构化信息为例来对编码过程进行说明。请参考图2,对一条非结构化信息而言,可以先进行分词,每一个词语采用现有的向量化表示方法,例如采用word2vec等,表示为一个词向量,然后将所有词向量求和,根据词语的个数来进行归一化,得到该条非结构化信息的向量xi。然后利用词嵌入矩阵将该条非结构化信息的向量映射到同一个空间,即mi=embeddinga×xi。每一条非结构化信息对应一个词嵌入向量,将所有的非结构化信息对应的词嵌入向量按顺序组合起来,就得到了第一词嵌入向量,将其存储在第一记忆模块上,也就是将所有的非结构化信息存储到了第一记忆模块上。编码非结构化信息的得到第三词嵌入向量、分别编码三元组信息得到第二词嵌入向量和第四词嵌入向量的方法与此类似,即ci=embeddingc×xi,di=embeddingd×ti,fi=embeddingf×ti,其中,ti是第i条三元组信息的向量表示,ci是第二记忆模块上存储的第i条向量化表示的非结构化信息,di是第一记忆模块上存储的第i条向量化表示的三元组信息,fi是第二记忆模块上存储的第i条向量化表示的三元组信息。

假设mi、ci、di、fi均是d×1的矩阵,n1为非结构化信息的条数,n2为三元组信息的条数,则第一词嵌入向量、第三词嵌入向量均为d×n1的矩阵,第二词嵌入向量、第四词嵌入向量均为d×n2的矩阵,其中,d为词嵌入的维度。

在s210和s230的步骤中,编码非结构化信息,可以采用相同的编码方法,也可以采用不同的编码方法,其中词嵌入矩阵a(embeddinga)和词嵌入矩阵c(embeddingc)可以相同,也可以不同,本申请对此不做限定。如果对同一批非结构化信息的语料而言,两个步骤中采用相同的编码方法,则得到的第一词嵌入向量和第三词嵌入向量相同;如果采用不同的编码方法,则得到的第一词嵌入向量和第三词嵌入向量不同。

类似地,在s220和s240的步骤中,编码三元组信息,也可以采用相同的编码方法,或采用不同的编码方法,其中词嵌入矩阵d(embeddingd)和词嵌入矩阵f(embeddingf)可以相同,也可以不同,本申请对此也不做限定。

在本申请中,词嵌入矩阵a、b、c、d、f,以及后续的输出矩阵w、注意力参数wa,都可以在训练记忆网络模型的过程中来确定,对于已经训练好的记忆网络模型来说,这些参数都是确定的。

s250和s260的步骤都可以通过记忆网络中的g组件来完成。在一种实现方式中,还可以将第一记忆模块分为两个区域,一个用来存储第一词嵌入向量,另一个用来存储第二词嵌入向量。类似地,第二记忆模块也可以划分为两个区域,一个用来存储第三词嵌入向量,另一个用来存储第四词嵌入向量。

s300:计算所述问题文本与第一记忆模块中非结构化信息和三元组信息的相关度。

在s300的步骤中,计算所述问题文本与第一记忆模块中非结构化信息和三元组信息的相关度的步骤,也可以理解为是计算问题文本在第一记忆模块中的每一条非结构化信息和每一条三元组信息上的权重,以得到一个矩阵,再使用softmax函数对该矩阵进行归一化,即得到相关度。

更具体地,请参考图5,在一种实现方式中,s300的步骤可以包括:

s310:将所述问题文本向量化表示为问题词嵌入向量u;

s320:将第一词嵌入向量和第二词嵌入向量水平拼接,得到第五词嵌入向量;

s330:利用问题词嵌入向量u和第五词嵌入向量计算相关度。

在s310的步骤中,将问题文本向量化表示为问题词嵌入向量u的方法与编码非结构化信息的方法类似,可以采用现有的算法,例如wcd算法等。其中,词嵌入矩阵b(embeddingb)用以将问题文本的向量映射到与推理语料的向量处于同一个空间,得到问题词嵌入向量u,u也是一个d×1的矩阵,其中,d为词嵌入的维度。

在s320的步骤中,将第一词嵌入向量和第二词嵌入向量水平拼接,得到第五词嵌入向量。例如,第一词嵌入向量为一个d×n1的矩阵,第二词嵌入向量为一个d×n2的矩阵,则水平拼接以后得到的第五词嵌入向量为一个d×(n1+n2)的矩阵。

在s330的步骤中,可以采用现有的注意力机制来计算问题词嵌入向量u与第五词嵌入向量的相关度,例如,可以采用加性注意力(additiveattention)、点积注意力(multiplicativeattention)、自注意力(self-attention)或关键值注意力(key-valueattention)等。

更具体地,在一种实现方式中,s330的步骤可以包括:使用点积注意力的方式,根据问题词嵌入向量u和第五词嵌入向量计算所述相关度p:

pk=softmax(fatt(hk,u)),

p=(p1,p2,……pk,……p(n1+n2));

其中,

fatt()表示点积注意力函数;

hk为第一记忆模块中第k个推理语料的向量化表示,k取1,2……(n1+n2);

为hk矩阵的转置;

wa为注意力参数;

pk表示问题文本与第一记忆模块中第k个非结构化信息或三元组信息之间的相关度值;

softmax为归一化指数函数。

如此,可以计算得到问题文本与第一记忆模块中每一个非结构化信息和每一个三元组信息之间的相关度值,则问题文本与第一记忆模块中非结构化信息和三元组信息的相关度p可以表示为一个1×(n1+n2)的矩阵,即(p1,p2,……pk,……p(n1+n2))。

s400:将第二记忆模块中的非结构化信息和三元组信息与所述相关度进行加权求和,得到输出值。

具体地,请参考图6,在一种实现方式中,s400的步骤可以包括:

s410:将第三词嵌入向量和第四词嵌入向量水平拼接,得到第六词嵌入向量;

s420:将所述第六词嵌入向量和所述相关度进行加权求和,得到输出向量o:

其中,yj为第二记忆模块中第j个推理语料的向量化表示,j取1,2……(n1+n2),k与j的取值相同。

在s410的步骤中,第三词嵌入向量和第四词嵌入向量水平拼接的方法与第一词嵌入向量和第二词嵌入向量水平拼接的方法相同,可参考步骤s320中的相关描述。如果s210和s230的步骤中编码非结构化信息的方法相同,并且s220和s240的步骤中编码三元组信息的方法也相同,则得到的第六词嵌入向量与第五词嵌入向量也相同。也就是说,第六词嵌入向量可以与第五词嵌入向量相同,也可以不同,由各自采用的编码方法及词嵌入矩阵决定。在本申请的应用场景中,各自采用的编码方法及词嵌入矩阵相同,使第五词嵌入向量和第六词嵌入向量相同,可以减小记忆网络模型的复杂性。而如果采用不同的编码方法及词嵌入矩阵,在训练记忆网络模型的时候对数据的依赖非常大,相对较难训练得到较为理想的模型参数值,提高了模型的复杂性。

在s420的步骤中,oj=pkyj,如果yj是d×1的矩阵,那么计算得到的oj也是一个d×1的矩阵。将o1,o2,……oj,……o(n1+n2)这(n1+n2)个矩阵相加,得到输出向量o,也是一个d×1的矩阵。

s500:根据所述输出值生成答案。

在s500的步骤中,根据输出值,也就是输出向量o来生成答案,可以采用现有的记忆网络中的转化方法来生成答案,也可以采用可行的其他方法。

在一种实现方式中,请参考图7,s500的步骤包括:

s510:将输出矩阵w乘以所述输出向量o与所述问题词嵌入向量u之和,得到第七向量;

s520:使用归一化指数函数softmax将所述第七向量归一化,生成答案;

a=softmax(w(o+u)+b),

其中,a为预测答案的概率分布值,w为输出矩阵,b为偏置量。

在s510的步骤中,输出向量o是一个d×1的矩阵,问题词嵌入向量u是一个d×1的矩阵,二者之和也是一个d×1的矩阵。输出矩阵w可以通过训练记忆网络模型得到,w为一个(n1+n2)×d的矩阵,其中,(n1+n2)为推理语料的总数量,d为词嵌入的维度。因而,第七向量=w(o+u),为一个(n1+n2)×1的矩阵。通过将输出向量o与问题词嵌入向量u相加,从而添加更多来自问题文本的原始信息。

在s520的步骤中,w为输出矩阵,b为偏置量,这两个参数值均可在模型训练阶段通过训练得到。其中,b可以为0,表示在拟合数据时得到的拟合函数通过原点;b也可以为其他非零的值,表示拟合函数中原点发生了偏置。使用归一化指数函数softmax将所述第七向量归一化成一个概率分布值a,概率分布值a仍然是一个(n1+n2)×1的矩阵,其中每一个数值表示答案来自对应的推理语料的概率大小。利用该概率分布值a,就可以生成最终的答案。

以下以餐饮业智能问答场景来举例说明。用户输入问题文本q1“附近评分高的西餐厅”

获取到的推理语料包括:

三条来自附近餐厅的评论信息:

非结构化信息1:x餐厅很好吃。

非结构化信息2:y餐厅环境很好,食物也非常可口。

非结构化信息3:z餐厅的装修非常有情调。

两条来自知识库的的三元组信息:

三元组信息1:x餐厅-是-西餐厅。

三元组信息2:y餐厅-是-中餐厅。

将三条非结构化信息进行编码,得到m1、m2、m3和c1、c2、c3;将两条三元组信息也进行编码,得到d1、d2和f1、f2。然后将m1、m2、m3、d1和d2存储到第一记忆模块上,将c1、c2、c3、f1和f2存储到第二记忆模块上。

将问题文本q1也进行编码,得到问题词嵌入向量u1。

再计算u1在第一记忆模块中每一条非结构化信息和每一条三元组信息上的权重,从而得到问题文本与每一条非结构化信息和每一条三元组信息的相关度的值pk,其中,k=1,2,3,4,5。然后将第二记忆模块中的所有非结构化信息和三元组信息(即c1、c2、c3、f1和f2)与对应的相关度pk进行加权求和,得到输出向量o1,即o=p1×c1+p2×c2+p3×c3+p4×f1+p5×f2。最后将输出向量o1转化为答案,得到“x餐厅”。

而如果仅以非结构化信息来推理答案,智能问答系统很有可能得到“y餐厅”,甚至是“z餐厅”的答案,实际上y餐厅是中餐厅,z餐厅的类型未知,这些都并不是用户想找的西餐厅,故而这样的答案的准确率相对较低,无法满足用户需求。

可选地,请参考图8,s300和s400的步骤可以包括:

s301:计算所述问题文本与第一记忆模块中非结构化信息和三元组信息的第一相关度;

s401:将第二记忆模块中的非结构化信息和三元组信息与所述第一相关度进行加权求和,得到第一输出值;

s302:将所述第一输出值与所述问题文本加和,得到第一输入值;

s303:计算所述第一输入值与第一记忆模块中非结构化信息和三元组信息的第二相关度;

s402:将第二记忆模块中的非结构化信息和三元组信息与所述第二相关度进行加权求和,得到第二输出值;

s403:将所述第二输出值确定为输出值。

上述的步骤对计算相关度和输出值的步骤做了两次循环,并以上一次的循环得到的输出值与问题文本进行加和得到的结果,来作为下一次循环的输入值,从而利用了三元组信息和非结构化信息来共同进行多跳推理。这里,循环次数为两次仅是一个举例,具体循环次数还可以根据应用场景的不同而不同。例如,当循环次数为三次时,则s402的步骤之后还包括:

s304:将所述第二输出值与所述问题文本加和,得到第二输入值;

s305:计算所述第二输入值与第一记忆模块中非结构化信息和三元组信息的第三相关度;

s404:将第二记忆模块中的非结构化信息和三元组信息与所述第二相关度进行加权求和,得到第三输出值;

s403的步骤替换为s405:将所述第三输出值确定为输出值。

这里,步骤s301、s303、s305具体可以参考步骤s300中的相关描述,步骤s401、s402、s404具体可以参考步骤s400中的相关描述,此处不再赘述。

在步骤s302中,第一输出值的向量化表示为第一输出向量o1,问题文本的向量化表示为u,将二者加和,得到第一输入值为d×1的矩阵。步骤s304与步骤s302的情况类似。

对于零散语句数量较多的推理语料,每一条三元组信息和非结构化信息可能只能提供小部分用于推理的信息,整个推理的过程需要根据多个三元组信息和非结构化信息之间的关联关系进行多跳推理,从而推理出更有深度的隐含信息,以生成更加准确、令人满意的答案。

仍然以餐饮业智能问答场景来举例说明。用户输入问题文本q2“万达商场附近好吃的西餐厅”。

获取到的推理语料包括:

五条来自附近餐厅的评论信息:

非结构化信息1:x餐厅很好吃。

非结构化信息2:y餐厅环境很好,食物也非常可口。

非结构化信息3:z餐厅的装修非常有情调。

非结构化信息4:西二旗地铁那有家万达商场。

非结构化信息5:x餐厅位于西二旗地铁那。

两条来自知识库的的三元组信息:

三元组信息1:x餐厅-是-西餐厅。

三元组信息3:y餐厅-是-西餐厅。

将五条非结构化信息进行编码,得到m1、m2、m3、m4、m5和c1、c2、c3、c4、c5;将两条三元组信息也进行编码,得到d1、d3和f1、f3。然后将m1、m2、m3、m4、m5、d1、d3和存储到第一记忆模块上,将c1、c2、c3、c4、c5、f1和f3存储到第二记忆模块上。

将问题文本q2也进行编码,得到问题词嵌入向量u2。

再计算u2在第一记忆模块中每一条非结构化信息和每一条三元组信息上的权重,从而得到问题文本与每一条非结构化信息和每一条三元组信息的相关度的值pk,其中,k=1,2,…,6,7。然后将第二记忆模块中的所有非结构化信息和三元组信息与所述相关度进行加权求和,得到输出向量o2。

再将输出向量o2和u2加和,得到u3,计算u3与第一记忆模块中非结构化信息和三元组信息的相关度,然后将第二记忆模块中的非结构化信息和三元组信息与所述相关度进行加权求和,得到输出向量o3。如此重复上述步骤2次,得到输出向量o4。最后将输出向量o4转化为答案,得到“x餐厅”。而如果仅将输出向量o2转化为答案,则可能得到答案“y餐厅”,实际上y餐厅的地点未知,并不一定在万达商场附近,并不是用户想要找的好吃的西餐厅。

在第二个实施例中,与第一个实施例中的知识推理方法对应地,请参考图9,提供一种应用于智能交互的知识推理装置,包括:

获取单元1,用于获取问题文本以及推理语料,所述推理语料包括非结构化信息和三元组信息;

处理单元2,用于将所述非结构化信息和所述三元组信息存储到第一记忆模块和第二记忆模块中;计算所述问题文本与第一记忆模块中非结构化信息和三元组信息的相关度;将第二记忆模块中的非结构化信息和三元组信息与所述相关度进行加权求和,得到输出值;以及,根据所述输出值生成答案。

可选地,所述处理单元2还用于编码所述非结构化信息,得到第一词嵌入向量;编码所述三元组信息,得到第二词嵌入向量;将所述第一词嵌入向量和第二词嵌入向量存储至第一记忆模块中;编码所述非结构化信息,得到第三词嵌入向量;编码所述三元组信息,得到第四词嵌入向量;以及,将所述第三词嵌入向量和第四词嵌入向量存储至第二记忆模块中。

可选地,所述处理单元2还用于将所述问题文本向量化表示为问题词嵌入向量u;将第一词嵌入向量和第二词嵌入向量水平拼接,得到第五词嵌入向量;以及,利用问题词嵌入向量u和第五词嵌入向量计算所述相关度。

可选地,所述处理单元2还用于使用点积注意力的方式,根据问题词嵌入向量u和第五词嵌入向量计算所述相关度p,

pk=softmax(fatt(hk,u)),

p=(p1,p2,……pk,……p(n1+n2));

其中,

fatt()表示点积注意力函数;

hk为第一记忆模块中第k个推理语料的向量化表示,k取1,2……(n1+n2);

为hk矩阵的转置;

wa为注意力参数;

pk表示问题文本与第一记忆模块中第k个非结构化信息或三元组信息之间的相关度值;

softmax为归一化指数函数。

可选地,所述处理单元2还用于将第三词嵌入向量和第四词嵌入向量水平拼接,得到第六词嵌入向量;以及,将所述第六词嵌入向量和所述相关度进行加权求和,得到输出向量o:

其中,yj为第二记忆模块中第j个推理语料的向量化表示,j取1,2……(n1+n2),k与j的取值相同;

pk表示问题文本与第一记忆模块中第k个非结构化信息或三元组信息之间的相关度值。

可选地,所述处理单元2还用于将输出矩阵w乘以所述输出向量o与所述问题词嵌入向量u之和,得到第七向量;以及,使用归一化指数函数softmax将所述第七向量归一化,生成答案:

a=softmax(w(o+u)+b),

其中,a为预测答案的概率分布值,w为输出矩阵,b为偏置量。

可选地,所述处理单元2还用于计算所述问题文本与第一记忆模块中非结构化信息和三元组信息的第一相关度;将第二记忆模块中的非结构化信息和三元组信息与所述第一相关度进行加权求和,得到第一输出值;将所述第一输出值与所述问题文本加和,得到第一输入值;计算所述第一输入值与第一记忆模块中非结构化信息和三元组信息的第二相关度;将第二记忆模块中的非结构化信息和三元组信息与所述第二相关度进行加权求和,得到第二输出值;以及,将所述第二输出值确定为输出值。

本实施例中的知识推理装置与第一个实施例中的知识推理方法对应地,故而也具有与知识推理方法对应的有益效果,此处不再赘述。

本说明书中各个实施例之间相同相似的部分互相参见即可。以上所述的本发明实施方式并不构成对本发明保护范围的限定。

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