用于人机对话的方法、神经网络系统和用户设备与流程

文档序号:12666110阅读:297来源:国知局
用于人机对话的方法、神经网络系统和用户设备与流程
本发明实施例涉及计算机领域,并且更具体地,涉及一种用于人机对话的方法、神经网络系统和用户设备。
背景技术
:随着移动互联网和智能终端的快速发展,人机对话的应用越来越广泛。各大互联网公司也推出各自的智能助手,例如AppleSiri、GoogleNow、微软小娜(MicrosoftCortana)、FacebookM、百度度秘和微软小冰等等。目前的智能助手能够与人进行简单的对话,并且完成一些基本的任务。智能助手的相关技术还需要不断发展和改进,朝着更加拟人化、博学化、并且能够完成更加复杂的任务的方向发展。人机对话涉及一系列技术,例如:语音识别、自然语言理解、自然语言对话、自动问答、搜索、推荐、语音合成等技术。其中,自动问答技术是指自动问答系统能够直接对用户用自然语言提出的问题给出答案。评价自动问答的质量的主要指标是回答的正确性。自动问答系统涉及多个方向不同的技术,例如自然语言处理、信息检索、知识库等技术。根据问题的类型,自动问答系统中有一类我们所关注的问答是回答事实型问题(factoidquestion)。工业界的自动问答系统的例子包括IBMWatson、Google、Baidu和WolframAlpha等。知识库技术是与自动问答系统有着紧密联系的技术。它涉及从数据中获取结构化的知识并对其进行整理和融合,并在其基础上进行查询和推理。在自动问答技术中,语义解析过程是一个尚未完全解决的问题,自动问答的答案通常面临着自然语言多义性和歧义性的问题。自然语言对话技术是指自然语言对话系统能够跟用户进行语义相关的对话,其评价指标主要在于对话(回复)的语义相关性和语言正确性(包括语言连贯和语法正确等)。自然语言对话系统的例子包括微软小冰和百度百小度等。自然语言对话技术是自然语言处理领域一个很有挑战的方向。近年来随着深度学习技术的发展和应用,发明了基于深度神经网络的自然语言对话系统,其效果在一些数据上被证明显著优于传统的技术。基于深度神经网络的自然语言对话系统能够产生语义相关的回复,但由于模型本身的限制,无法保证回复语句的正确性。例如,对于“姚明有多高?”这一问题,其回复可能是“姚明身高1.7m。”,这个回复单从语言角度来讲是合适的,但是从知识的角度来讲是错误的。因此,现有的技术或系统只考虑自动问答,或只考虑自然语言对话,对对话中问题的回复的准确率低。技术实现要素:本发明提供一种用于人机对话的方法、神经网络系统和用户设备,可以与用户进行自然语言交互,并且依据知识库作出基于事实的正确的自然语言答案。第一方面,本发明提供了一种用于人机对话的方法,包括:神经网络系统获取用户输入的自然语言问题;所述神经网络系统将所述自然语言问题转化为问题向量;所述神经网络系统从知识库中通过文本检索,获得与所述自然语言问题相关的至少一个知识答案,每个所述知识答案与一个知识答案向量对应;所述神经网络系统根据所述问题向量和至少一个所述知识答案向量,计算获得基于所述知识库的中间结果向量,所述中间结果向量用于指示所述问题向量和每个所述知识答案向量的相似度;所述神经网络系统将所述问题向量和所述中间结果向量作为输入,通过计算输出序列的概率,生成所述自然语言问题的自然语言答案。其中,所述根据所述问题向量和至少一个所述知识答案向量,计算获得基于所述知识库的中间结果向量,包括:将所述问题向量和至少一个所述知识答案向量作为所述神经网络系统的第二神经网络模块的输入,通过所述第二神经网络模块计算所述问题向量与每个所述知识答案向量的相似度,其中,所述相似度构成所述中间结果向量的元素。上述过程是神经网络系统的使用过程。可以在使用过程中,选择出至少一个知识答案后计算知识答案向量。此外,也可以在神经网络系统的训练过程,提前将知识答案向量训练好。在一个例子中,所述知识答案为三元组,所述知识答案向量为三元组向量,所述三元组向量是将所述三元组作为所述神经网络系统的第四神经网络模块的输入计算获得的。具体地,所述三元组向量可以是根据以下步骤确定的:将所述三元组的主语、谓语和宾语分别用第一独热向量、第二独热向量和第三独热向量表示;将所述第一独热向量、所述第二独热向量和所述第三独热向量分别与投影矩阵运算,获得第一低维向量、第二低维向量和第三低维向量,其中,所述投影矩阵为所述第四神经网络模块的参数;根据所述第一低维向量、所述第二低维向量和所述第三低维向量,计算获得所述三元组向量。在训练过程中,所述神经网络系统的参数,即所述第一神经网络模块、所述第二神经网络模块、所述第三神经网络模块和所述第四神经网络模块的参数,可以是通过最大化训练数据上的似然函数的结果得到的,其中,所述训练数据包括多组所述自然语言问题和所述自然语言答案。其中,优选地,可以采用随机梯度下降算法来进行训练。在第一方面的一种可选的实现方式中,将所述自然语言问题转化为问题向量,可以包括:将所述自然语言问题作为所述神经网络系统的第一神经网络模块的输入,将所述自然语言问题的词序列表示为低维向量序列;通过所述第一神经网络模块的递归神经网络模型或卷积神经网络模型,对所述低维向量序列进行运算,获得所述问题向量。在第一方面的一种可选的实现方式中,所述将所述问题向量和所述中间结果向量作为输入,通过计算输出序列的概率,生成所述自然语言问题的自然语言答案,可以包括:将所述问题向量和所述中间结果向量作为所述神经网络系统的第三神经网络模块的输入,通过所述第三神经网络模块的递归神经网络模型或卷积神经网络模型,计算以所述问题向量和所述中间结果向量作为条件的输出序列的联合概率,生成所述自然语言答案。在第一方面的一种可选的实现方式中,所述将所述问题向量和所述中间结果向量作为输入,通过计算输出序列的概率,生成所述自然语言问题的自然语言答案,包括:将所述问题向量和所述中间结果向量作为输入,通过所述第三神经网络模块的基于注意attention向量技术的递归神经网络模型,计算输出序列的概率,生成所述自然语言答案。第二方面,提供了一种用于人机对话的神经网络系统,包括获取模块、第一神经网络模块、检索模块、第二神经网络模块和第三神经网络模块,用于执行第一方面相应的实现方式。其中,获取模块,用于获取用户输入的自然语言问题;第一神经网络模块,用于将所述获取模块获取的所述自然语言问题转化为问题向量;检索模块,用于从知识库中通过文本检索,获得与所述获取模块获取的所述自然语言问题相关的至少一个知识答案,每个所述知识答案与一个知识答案向量对应;第二神经网络模块,用于根据所述第一神经网络模块获得的所述问题向量和所述检索模块获得的至少一个所述知识答案向量,计算获得基于所述知识库的中间结果向量,所述中间结果向量用于指示所述问题向量和每个所述知识答案向量的相似度;第三神经网络模块,用于将所述第一神经网络模块获得的所述问题向量和所述第二神经网络模块获得的所述中间结果向量作为作为输入,通过计算输出序列的概率,生成所述自然语言问题的自然语言答案。在第二方面的一种可选的实现方式中,所述第二神经网络模块具体用于:将所述问题向量和至少一个所述知识答案向量作为输入,计算所述问题向量与每个所述知识答案向量的相似度,其中,所述相似度构成所述中间结果向量的元素。在第二方面的一种可选的实现方式中,所述知识答案为三元组,所述知识答案向量为三元组向量,所述神经网络系统还包括:第四神经网络模块,用于将所述三元组作为输入,计算获得所述三元组向量。在第二方面的一种可选的实现方式中,所述第四神经网络模块具体用于:将所述三元组的主语、谓语和宾语分别用第一独热向量、第二独热向量和第三独热向量表示;将所述第一独热向量、所述第二独热向量和所述第三独热向量分别与投影矩阵运算,获得第一低维向量、第二低维向量和第三低维向量,其中,所述投影矩阵为所述第四神经网络模块的参数;根据所述第一低维向量、所述第二低维向量和所述第三低维向量,计算获得所述三元组向量。在第二方面的一种可选的实现方式中,所述第一神经网络模块具体用于:将所述自然语言问题作为输入,将所述自然语言问题的词序列表示为低维向量序列;通过递归神经网络模型或卷积神经网络模型,对所述低维向量序列进行运算,获得所述问题向量。在第二方面的一种可选的实现方式中,所述第三神经网络模块具体用于:将所述问题向量和所述中间结果向量作为输入,通过递归神经网络模型或卷积神经网络模型,计算以所述问题向量和所述中间结果向量作为条件的输出序列的联合概率,生成所述自然语言答案。在第二方面的一种可选的实现方式中,所述第三神经网络模块具体用于:将所述问题向量和所述中间结果向量作为输入,通过基于注意attention向量技术的递归神经网络模型,计算输出序列的概率,生成所述自然语言答案。在第二方面的一种可选的实现方式中,所述第一神经网络模块、所述第二神经网络模块、所述第三神经网络模块和所述第四神经网络模块的参数是通过最大化训练数据上的似然函数结果得到的,其中,所述训练数据包括多组所述自然语言问题和所述自然语言答案。第三方面,提供了一种具有人机对话功能的用户设备,包括输入设备、处理器和存储器,所述输入设备用于获取用户的输入,所述存储器用于存储指令,所述处理器用于执行所述存储器存储的指令,以用于完成第一方面的相应的实现方式,并且第三方面的用户设备的各器件可以与第二方面的神经网络系统的相应模块对应。优选地,第三方面的用户设备还可以包括输出设备,以用于用于输出所述神经网络系统生成的自然语言答案。本发明实施例提供的用于人机对话的方法、神经网络系统和用户设备,通过将自然语言问题和知识库向量化,通过向量计算,将对话和基于知识库的问答结合,使之能够与用户进行自然语言交互,并且依据知识库作出基于事实的正确的自然语言答案。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是一种短文本对话模型的架构的示意图。图2是本发明一个实施例的用于人机对话的训练过程的示意图。图3是第三神经网络模块的计算流程的示意图。图4是本发明一个实施例的用于人机对话的方法的示意性流程图。图5是本发明一个实施例的用于人机对话的神经网络系统的示意性框图。图6是本发明一个实施例的具有人机对话功能的用户设备的示意性框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面首先简单介绍现有的几种自动问答系统和自然语言对话系统。基于信息检索的自动问答系统:基于信息检索的自动问答技术通常分为三个步骤:问题分析、文档检索和答案抽取。其中,问题分析:利用自然语言处理技术对用户提出的问题进行分析,包括问题类型识别、中心词提取、同义词扩展和问题转述等。文档检索:根据问题分析步骤的输出,对索引的文档库进行检索并排序,并从相关文档中找出与问题相关的段落。答案抽取:从文档检索步骤返回的相关段落中,根据问题的类型,对可能的答案片段进行抽取和打分、排序,最后返回最相关的答案。上述三个步骤均存在一些技术挑战(例如,问题类型识别、排序、答案抽取等),可能会导致问答系统的准确率偏低。同时,传统的检索系统无法处理字面失配的问题,例如问题为“姚明的老婆是谁?”,而文档中的叙述为“姚明的太太…”,则此时由于“老婆”和“太太”的字面不匹配,可能会导致答案无法召回或错误。基于结构化知识库的自动问答系统:基于结构化知识库的自动问答技术首先从大量数据(通常是非结构化或半结构化的数据)中获取或挖掘结构化的知识,并构建结构化的知识库。知识的结构通常用三元组来表示:(主语(subject),谓词(predicate),宾语(object))。主语通常是一个实体,宾语可能是另一个实体或属性,谓词表明两者的关系。例如,(姚明,妻子,叶莉)就是一个三元组。知识库由多个三元组构成,通常可以用图的结构表示(实体为图的节点,关系为边)。类似的概念包括语义网(semanticweb),本体库(ontology),关系数据(linkeddata)和知识图谱(knowledgegraph)等。由于知识库通常从多个数据源获取,那么知识的融合和消歧也是构建知识库的工作之一。上述自动化构建的知识库的过程可能存在准确率的问题,因此必要的情况下,会加入人力来进行校准。知识库构建好后,则可以在其上进行查询和推理。由于知识库是结构化数据,因此可以使用关系数据库或图数据库存储,并在其上通过结构化数据的查询语句(例如结构化查询语言(StructuredQueryLanguage,SQL)和简单协议和RDF查询语言(SimpleProtocolandRDFQueryLanguage,SparQL)等,其中,RDF是指资源描述框架(ResourceDescriptionFramework))进行查询。对于用户输入的自然语言,需要将其转化为特定的查询语言,这一过程通常称为语义解析(semanticparsing)。语义解析是自然语言处理中一个很有挑战的问题。上述技术面临两方面的挑战:一方面,大规模知识库的建立是一个复杂的过程,目前的自然语言处理技术还不能做到完全的自动化,往往需要人工的干预来校准;另一方面,语义解析同样是一个尚未完全解决的问题,也面临着自然语言多义性和歧义性的问题。在当前的现有技术中,工业界的自动问答系统,可以采用现有技术一和现有技术二两种技术(基于信息检索和基于知识库)的混合技术。基于信息检索的自然语言对话系统:基于信息检索的自然语言对话技术将大规模的对话语料以“原文-回复”对的方式进行索引。在线对话时,通过搜索找到与用户输入相似的原文,并将其对应的回复返回给用户。然而,当用户输入与库中语料匹配度较低时,无法保证系统返回语义相关的对话。简单来讲,该系统没有可扩展性,也无法产生语料从没有的回复。基于机器翻译模型的自然语言对话系统:将原文或回复类比为机器翻译中的源语言(例如英语)和目标语言(例如汉语)。然后套用统计机器翻译的方法(例如,基于短语的机器翻译)来训练。测试(即使用系统)时,以用户输入作为统计翻译模型的源语言输入,经过翻译模型,生成目标语言序列,即给用户的回复。机器翻译模型在实际短文本对话数据上的表现并不好,其主要原因是对话数据中的数据分布不同于机器翻译中的双语“平行语料”。对话数据中,对于同一个原文,可能有很多不同的回复。机器翻译模型中主要考虑词和词之间的线性映射关系,这种复杂的映射关系可能是导致机器翻译模型失败的原因。基于深度神经网络的自然语言对话系统:随着深度学习的发展,学术界提出了一种基于深度神经网络架构的“序列到序列”学习(sequence-to-sequencelearning)模型。基于深度神经网络的自然语言对话技术被用于在大规模的对话语料训练得到自然语言对话系统。该系统接受用户的输入序列,然后通过多层神经网络的计算,逐词的输出回复的序列。图1是一种短文本对话模型的架构的示意图。具体地,输入的自然语言序列经过编码器(Encoder),被转化为中间表示向量,再经过解码器(Decoder)顺序生成输出序列。其中,解码器和编码器分别通过递归神经网络(RecurrentNeuralNetwork,RNN)实现,并且在解码的每一个步骤中,都通过一种attention向量技术来更加有目的确定下一步输出。基于深度神经网络的自然语言对话系统在效果上由于基于检索和基于机器翻译的对话系统。虽然能够产生语义相关的回复,但由于模型本身的限制,无法保证回复语句的正确性。例如对于“姚明有多高?”这一问题,其回复可能是“姚明身高1.7m。”,这个回复单从语言角度来讲是合适的,但是从知识的角度来讲是错误的。因此如何让基于深度神经网络的自然语言对话系统返回知识正确的对话,是一个有实际意义的问题,也是本发明所关注的问题。注意(attention)向量技术:attention向量技术能够起到对齐原问题和已输出的答案部分,从而帮助神经网络系统更加准确的输出下一个词,其效果在机器翻译和短文本对话中都得到了验证。attention向量通常如下计算:其中,是编码器的状态向量集合,αj,i是动态的加权系数。αj,i通常如下计算:其中,aj,i=f(sj-1,hi)。这里,sj-1表示解码器(Decoder)的第j-1个状态向量,f是一个带参数的神经网络模型。f的一种常用的形式是:其中,va,Wa,Ua为参数向量或矩阵。利用这种计算方式,每次解码器产生一个词时,都会动态的参考编码器的状态向量,而这种动态的权重是由解码器的上一个状态向量和编码器所有的状态向量的函数决定的。综上所述,现有的技术或系统只考虑自动问答,或只考虑自然语言对话,对对话中问题的回复的准确率低。本发明以基于深度神经网络的自然语言对话系统为部分基础,通过深度学习技术,将自然语言对话和基于知识库的问答相结合,使得系统能够在对话中对用户的提问作出知识上正确的自然语言回复。应理解,本发明实施例所提供的用于人机对话的方法是一种基于神经网络模型的自然语言对话式问答的方法,所提供的用于人机对话的神经网络系统是一种基于神经网络模型的自然语言对话式问答系统。作为一个机器学习模型,基于神经网络模型的自然语言对话式问答系统可以分为训练和使用两个阶段。训练阶段是根据训练数据,通过反向传播算法或者随机梯度下降算法等,最大化训练数据上的似然函数来确定神经网络系统中各模块的参数。在本发明实施例中,所使用的训练数据可以由这样的实例构成:(问题,答案,匹配的三元组)。例如:问题:姚明有多高?答案:他有2.29m,非常非常高。匹配的三元组:(姚明,身高,2.29m)或者:问题:红楼梦是谁写的?答案:是清代的曹雪芹。匹配的三元组:(红楼梦,作者,曹雪芹)使用阶段是基于已经构建的知识库,以用户的自然语言问题为输入,通过神经网络系统中各个模型的计算,产生自然语言答案返回给用户。为了便于理解,下面从训练阶段开始进行介绍。首先构建结构化知识库(本文中也可以简称为知识库)和训练数据。知识库基于一些“事实”(facts)组成。结构化的知识库中包括记录(records)或者“元组(tuple)”。具体地,可以从互联网获取结构化知识库。在本发明实施例中,知识库具体可以由多个三元组构成,也可以由包括多条结构化的记录的数据库构成,本发明实施例对此不作限定。以知识库由多个三元组构成为例,可以从百度百科、互动百科、豆瓣等百科知识网站抓取网页,并通过对网页中的表格解析得到结构化的三元组。经过进一步的处理,例如可以包括去噪、合并等处理。最终抽取得到多个三元组,构成结构化知识库。可以从互联网获取训练数据,该训练数据可以是自然语言问答对话数据。在本发明实施例中,可以从百度知道、搜搜问问等社区问答网站抓取网页,并解析其中的“问题-答案”对,抽取出多个“问题-答案”对。在训练过程中,可以逐一扫描上述“问题-答案”对数据,检查是否与知识库中的某个或多个三元组“匹配”,其中,“匹配”的定义可以是:1、三元组的subject出现在问题中;2、三元组的object出现在答案中;3、三元组的object不出现在问题中。应理解,本发明实施例中,知识库的大小和训练数据的大小可以根据训练需要进行调整。在一个具体的例子中,结构化知识库中可以包括5.5M个三元组,“问题-答案”对可以包括132M个,从中选取出696K个“问题-答案”对作为训练数据。在本发明实施例中,每个词可以对应一个独热(one-hot)向量。所谓独热向量是指,例如,对于某种语言而言,共有A个词,对每一个词进行编号,任一个词对应一个独热向量,该独热向量具有M维,其中该词的编号对应的元素为1,其余的元素为零。独热向量为高维向量。设输入的自然语言问题为序列x=(x1,x2,...,xT),即将自然语言问题分解为T个词,分别对应x1,x2,...,xT。xi为独热向量。设输出的自然语言答案为y=(y1,y2,...,yT′),即自然语言答案为T′个词组合而成的,T′个词分别对应y1,y2,...,yT′。yi为独热向量。三元组为t=(ts,tp,to),ts/p/o均为独热向量,分别表示三元组中的主语、谓词和宾语。图2是本发明一个实施例的用于人机对话的训练过程的示意图。如图2所示,其主要包括以下步骤:S210,将结构化知识库的三元组作为神经网络系统的第四神经网络模块的输入,计算得到三元组向量。应理解,本实施例是以三元组为例进行说明的,但知识库不限于三元组形式,也可以是其它的结构化的形式。具体地,结构化知识库由N个三元组组成,每个三元组由主语、谓词、宾语三项组成,不同三元组的项可能存在重复。因此,知识库中包含有限个项。通过第一投影矩阵Wt,将知识库中所有的项(即词)映射为下列低维向量:即为ts/p/o的低维向量的表示。根据词的低维向量的表示,可以进一步得到三元组向量。其中,一种可选的方式是求平均,即:应理解,求平均只是一种可实现的方式,还可以通过其它的方式根据词的低维向量得到三元组向量,本发明实施例对此不作限定。综上,三元组向量是根据以下步骤确定的:将该三元组的主语、谓语和宾语分别用第一独热向量、第二独热向量和第三独热向量表示;将该第一独热向量、该第二独热向量和该第三独热向量分别与投影矩阵运算,获得第一低维向量、第二低维向量和第三低维向量,其中,该投影矩阵为该第四神经网络模块的参数;根据该第一低维向量、该第二低维向量和该第三低维向量,计算获得该三元组向量。知识库中所有的三元组向量的集合可以构成知识库的低维向量的表示。其中,第一投影矩阵Wt即为第四神经网络模块的参数,后续在训练过程中需要训练的即包括该参数。应理解,第四神经网络模块中还可以包括其它的参数,本发明实施例对此不作限定。S220,获取用户输入的自然语言问题。这里,自然语言问题可以由用户通过麦克风等进行语音输入,也可以通过键盘、鼠标等进行文字或图形的输入,还可以是其它的一些输入形式,系统根据用户输入的自然语言问题能够转化为序列x=(x1,x2,...,xT)即可,本发明实施例对具体的输入形式不作限定。S230,将自然语言问题转化为问题向量。可以将自然语言问题作为神经网络系统的第一神经网络模块的输入,计算获得该自然语言问题对应的问题向量。具体地,用户输入的多个自然语言问题可以看作是多个长度变化的词序列x=(x1,x2,...,xT)(例如“姚明有多高?”是三个词,“红楼梦的作者是谁?”是五个词)。将该词序列映射为低维向量序列。再将低维向量序列通过第一神经网络模块(第一神经网络模块可以基于递归神经网络模型或卷积神经网络模型等,下面的描述以递归神经网络模型为例进行展开)计算得到一组长度固定(即不管是多长多短的问题,都可以转化为一个定长的向量,比如一个1000维的向量)的向量集合,可以称这些向量为问题向量。这些问题向量构成了自然语言问题在低维空间上的表示。换而言之,可以将自然语言问题中的词分别映射为高维的独热向量x1,x2,...,xT。继而,将各词映射为低维向量,表示为其中,Wx为第二投影矩阵。之后,可以再通过递归神经网络模型对输入序列进行编码,获得问题向量。递归神经网络模型的每个隐藏状态(hiddenstate)变量通过如下方式递归计算:其中,h0可以为任意向量,例如可以是一个零向量;fh是多层神经网络函数。在本发明实施例中,一种简单的实现的方式是其中,是sigmoid函数在本发明实施例中,还可以使用更复杂的长短期记忆(LongShort-TermMemory,LSTM)神经网络模型或者门控递归单元(GatedRecurrentUnit,GRU)模型来对fh进行建模。由此得到的递归神经网络模型的隐藏状态变量,隐藏状态变量和词的向量的表示共同构成了输入问题的向量表示其中,第二投影矩阵Wx为第一神经网络模块的参数,fh中还可以包括一些参数,后续在训练过程中需要训练的即包括这些参数。应理解,第一神经网络模块中还可以包括其它的参数,本发明实施例对此不作限定。应理解,本发明实施例中,第一神经网络模块将自然语言问题转化为问题向量的方法可以有多种。例如,通过RNN的编码器(即基于递归神经网络模型)将自然语言问题转化为问题向量,或者通过卷积神经网络(ConvolutionalNeuralNetwork,CNN)的编码器(即基于卷积神经网络模型)将自然语言问题转化为问题向量,等等,本发明实施例对此不作限定。综上,将该自然语言问题转化为问题向量,可以包括:将该自然语言问题作为该神经网络系统的第一神经网络模块的输入,将该自然语言问题的词序列表示为低维向量序列;通过该第一神经网络模块的递归神经网络模型或卷积神经网络模型,对该低维向量序列进行运算,获得该问题向量。S240,从知识库中通过文本检索(textretrieval),获得与该自然语言问题相关的至少一个知识答案,每个该知识答案与一个知识答案向量对应。以知识答案为三元组为例,则是获得与自然语言问题相关的至少一个三元组,其中,至少一个三元组与至少一个三元组向量对应。即,对于每个自然语言问题,可以通过文本检索的方式找到相关的候选三元组集合,进而得到候选的三元组向量集合。S250,该神经网络系统根据该问题向量和至少一个该知识答案向量,计算获得基于该知识库的中间结果向量,该中间结果向量用于指示该问题向量和每个该知识答案向量的相似度。仍以知识答案向量为三元组向量为例,可以将问题向量和至少一个三元组向量作为神经网络系统的第二神经网络模块的输入,计算获得基于结构化知识库的中间结果向量。具体而言,第二神经网络模块的作用为将问题向量和从知识库中搜索出的相关的三元组的向量进行结合与匹配,输出匹配结果的向量作为中间结果向量。计算问题向量与至少一个三元组中每个三元组的三元组向量表示的相似度,然后输出以相似度作为元素的中间结果向量。该中间结果向量构成了问题与知识库中候选三元组匹配结果的表示。更具体地,对于候选的三元组向量集合中的每个三元组向量t,其与问题向量的相似度通过如下方式计算:S(x,t)=qTMut其中,上式中q为问题的向量表示H的分量,即q可以从H中得到。一种可选的计算方式是另一种可选的计算方式是q=hT,当然还可以通过其它方式从H中得到q,本发明实施例对此不作限定。上式中M为匹配参数矩阵。设有K个候选三元组向量此时令r=(r1,...,rK),其中,向量r构成了问题与知识库的匹配结果的表示,即中间结果向量。综上,根据该问题向量和至少一个该知识答案向量,计算获得基于该知识库的中间结果向量,可以包括:将该问题向量和至少一个该知识答案向量作为该神经网络系统的第二神经网络模块的输入,通过该第二神经网络模块计算该问题向量与每个该知识答案向量的相似度,其中,该相似度构成该中间结果向量的元素。S260,将该问题向量和该中间结果向量作为输入,通过计算输出序列的概率,生成该自然语言问题的自然语言答案。换而言之,将问题向量和中间结果向量作为神经网络系统的第三神经网络模块的输入,计算获得自然语言问题的自然语言答案。第三神经网络模块的作用为将问题向量与匹配结果的中间结果向量进行综合,并输出自然语言答案。具体地,以问题向量和中间结果向量为输入,通过第三神经网络模块(如,可以基于递归神经网络模型或卷积神经网络模型等)产生一组自然语言的符号序列,此符号序列即为输出的自然语言答案。具体而言,以H和r作为输入,逐词产生自然语言的答案序列y=(y1,y2,...,yT′),计算时依据下列公式:p(yj|y1,...,yj-1,x,r)=p(yj|sj,H,r)其中,sj为递归神经网络模型的状态变量。由于产生的答案中包含两类词:第一类是辅助性的自然语言,第二类是真实的答案。用二元变量zj来表示这两种类型(为0表示第一类,为1表示第二类),则:p(yj|yj-1,sj,H,r)=p(zj=0|yj-1,sj)p(yj|yj-1,sj,z=0)+p(zj=1|yj-1,sj)p(yj|z=1,r)其中,p()为联合概率函数,以问题向量H和中间结果向量r作为条件,用于计算输出序列的概率。作为一种优选地实施例,对于p(zj|yj-1,sj)=fz(yj-1,sj),其中,状态变量sj=fs(sj-1,yj-1,cj)。在本发明实施例中,可以使用LSTM神经网络模型或者GRU模型来对fz和fs进行建模。注意,其中的cj是随位置动态变化的attention向量,αj,i∝a(sj-1,hi)。这种attention向量技术能够起到对齐原问题和已输出的答案部分,从而帮助更加准确的输出下一个词。p(yj|yj-1,sj,z=0)是产生下一个自然语言词语的概率,其建模方式与zj相仿。而对于答案类型的词语,p(yj=k|z=1,r)=rk。图3示出了第三神经网络模块的计算流程的示意图。应理解,在使用阶段,生成答案序列的下一词时,应使得联合概率结果最大。在训练阶段,可以通过使用优化算法(例如随机梯度下降算法等),不断调整第一神经网络模块、第二神经网络模块、第三神经网络模块和第四神经网络模块的参数,使得训练数据上的似然函数maxθ∑ilogp(y(i)|x(i))的结果最大化。综上,将该问题向量和该中间结果向量作为输入,通过计算输出序列的概率,生成该自然语言问题的自然语言答案,可以包括:将该问题向量和该中间结果向量作为该神经网络系统的第三神经网络模块的输入,通过该第三神经网络模块的递归神经网络模型或卷积神经网络模型,计算以该问题向量和该中间结果向量作为条件的输出序列的联合概率,生成该自然语言答案。优选地,将该问题向量和该中间结果向量作为输入,通过计算输出序列的概率,生成该自然语言问题的自然语言答案,可以包括:将该问题向量和该中间结果向量作为输入,通过该第三神经网络模块的基于注意(attention)向量技术的递归神经网络模型,计算输出序列的概率,生成该自然语言答案。以上详细介绍了神经网络系统中各神经网络模块的算法,以及训练阶段。使用阶段与训练阶段的原理相似,如图4所示的用于人机对话的方法300,其可以包括:S310,神经网络系统获取用户输入的自然语言问题。S320,该神经网络系统将该自然语言问题转化为问题向量。S330,该神经网络系统从知识库中通过文本检索,获得与该自然语言问题相关的至少一个知识答案,每个该知识答案与一个知识答案向量对应。S340,该神经网络系统根据该问题向量和至少一个该知识答案向量,计算获得基于该知识库的中间结果向量,该中间结果向量用于指示该问题向量和每个该知识答案向量的相似度。S350,该神经网络系统将该问题向量和该中间结果向量作为输入,通过计算输出序列的概率,生成该自然语言问题的自然语言答案。应理解。三元组向量可以是在训练阶段是已经计算好的,在使用阶段确定三元组向量不是必需的。本发明实施例提供了一种用于人机对话的方法,该方法通过将自然语言问题和知识库向量化,通过向量计算,将对话和基于知识库的问答结合,能够与用户进行自然语言交互,并且依据知识库作出基于事实的正确的自然语言答案。实现本发明实施例中的模型后,在训练数据采样300个例子,以及在“问题-答案”对再选取出300个“问题-答案”对作为测试数据。人工过滤掉其中错误的例子,对模型的问答准确率(答对的问题占问题总数的比例)进行评估。选择了两种系统作为比较:1)基于知识库的信息检索问答系统(现有技术一);2)基于深度神经网络的对话系统(现有技术五)。问答准确率的评估结果如表1.表1模型训练数据测试数据基于知识库的信息检索问答系统40%36%基于深度神经网络的对话系统15%19%本发明实施例46%47%从评估结果可以看出,本发明实施例的方案优于已有的两个方案,说明本发明实施例的系统能够一定程度的捕捉到自然语言问题的语义,与知识库中的知识做到语义上的匹配,并给出答案。同时,本发明实施例的方案能够产生自然语言的答案,而基于检索的问答系统无法保证做到这一点。上面详细介绍了本发明实施例的用于人机对话的方法,下面介绍本发明实施例的用于人机对话的神经网络系统。图5是本发明实施例的用于人机对话的神经网络系统400的示意性框图。如图5所示,用于人机对话的神经网络系统400包括:获取模块410,用于获取用户输入的自然语言问题;第一神经网络模块420,用于将该获取模块410获取的该自然语言问题转化为问题向量;检索模块430,用于从知识库中通过文本检索,获得与该获取模块410获取的该自然语言问题相关的至少一个知识答案,每个该知识答案与一个知识答案向量对应;第二神经网络模块440,用于根据该第一神经网络模块420获得的该问题向量和该检索模块430获得的至少一个该知识答案向量,计算获得基于该知识库的中间结果向量,该中间结果向量用于指示该问题向量和每个该知识答案向量的相似度;第三神经网络模块450,用于将该第一神经网络模块420获得的该问题向量和该第二神经网络模块440获得的该中间结果向量作为作为输入,通过计算输出序列的概率,生成该自然语言问题的自然语言答案。本发明实施例提供了一种用于人机对话的神经网络系统,该神经网络系统通过将自然语言问题和知识库向量化,通过向量计算得到基于知识库的,表示自然语言问题和知识库答案相似度的中间结果向量,再根据问题向量和中间结果向量计算得到基于事实的正确的自然语言答案。可选地,作为一个实施例,该知识答案为三元组,该知识答案向量为三元组向量,该神经网络系统400还可以包括:第四神经网络模块,用于将该三元组作为输入,计算获得该三元组向量。在本发明实施例中,可选地,该第四神经网络模块具体可以用于:将该三元组的主语、谓语和宾语分别用第一独热向量、第二独热向量和第三独热向量表示;将该第一独热向量、该第二独热向量和该第三独热向量分别与投影矩阵运算,获得第一低维向量、第二低维向量和第三低维向量,其中,该投影矩阵为该第四神经网络模块的参数;根据该第一低维向量、该第二低维向量和该第三低维向量,计算获得该三元组向量。可选地,作为一个实施例,该第一神经网络模块420、该第二神经网络模块440、该第三神经网络模块450和该第四神经网络模块的参数可以是通过最大化训练数据上的似然函数结果得到的,其中,该训练数据包括多组该自然语言问题和该自然语言答案。在本发明实施例中,可选地,该第一神经网络模块420具体可以用于:将该自然语言问题作为输入,将该自然语言问题的词序列表示为低维向量序列;通过递归神经网络模型或卷积神经网络模型,对该低维向量序列进行运算,获得该问题向量。在本发明实施例中,可选地,该第二神经网络模块440具体可以用于:将所述问题向量和至少一个所述知识答案向量作为输入,计算所述问题向量与每个所述知识答案向量的相似度,其中,所述相似度构成所述中间结果向量的元素。在本发明实施例中,可选地,该第三神经网络模块450具体可以用于:将该问题向量和该中间结果向量作为输入,通过递归神经网络模型或卷积神经网络模型,计算以该问题向量和该中间结果向量作为条件的输出序列的联合概率,生成该自然语言答案。在本发明实施例中,可选地,该第三神经网络模块450具体可以用于:将该问题向量和该中间结果向量作为输入,通过基于注意attention向量技术的递归神经网络模型,计算输出序列的概率,生成该自然语言答案。应注意,本发明实施例中,获取模块410可以由输入设备实现,第一神经网络模块420、检索模块430、第二神经网络模块440、第三神经网络模块450和第四神经网络模块可以由处理器实现。如图6所示,神经网络系统可以部署于具有人机对话功能的用户设备500中,该用户设备可以包括处理器510、输入设备520和存储器530,其中,存储器530可以用于存储处理器510执行的代码等。自然语言答案的输出可以通过输出设备540实现。其中,输入设备520用于获取用户输入的自然语言问题,所述存储器530用于存储由所述处理器510执行的指令,所述指令可以包括:将所述自然语言问题转化为问题向量;从知识库中通过文本检索,获得与所述自然语言问题相关的至少一个知识答案,每个所述知识答案与一个知识答案向量对应;根据所述问题向量和至少一个所述知识答案向量,计算获得基于所述知识库的中间结果向量,所述中间结果向量用于指示所述问题向量和每个所述知识答案向量的相似度;将所述问题向量和所述中间结果向量作为输入,通过计算输出序列的概率,生成所述自然语言问题的自然语言答案。可选地,作为一个实施例,所述处理器510用于:将所述问题向量和至少一个所述知识答案向量作为输入,计算所述问题向量与每个所述知识答案向量的相似度,其中,所述相似度构成所述中间结果向量的元素。可选地,作为一个实施例,所述知识答案为三元组,所述知识答案向量为三元组向量,所述处理器510还用于:将所述三元组的主语、谓语和宾语分别用第一独热向量、第二独热向量和第三独热向量表示;将所述第一独热向量、所述第二独热向量和所述第三独热向量分别与投影矩阵运算,获得第一低维向量、第二低维向量和第三低维向量;根据所述第一低维向量、所述第二低维向量和所述第三低维向量,计算获得所述三元组向量。可选地,作为一个实施例,所述处理器510用于:将所述自然语言问题作为输入,将所述自然语言问题的词序列表示为低维向量序列;通过递归神经网络模型或卷积神经网络模型,对所述低维向量序列进行运算,获得所述问题向量。可选地,作为一个实施例,所述处理器510用于:将所述问题向量和所述中间结果向量作为输入,通过递归神经网络模型或卷积神经网络模型,计算以所述问题向量和所述中间结果向量作为条件的输出序列的联合概率,生成所述自然语言答案。可选地,作为一个实施例,所述处理器510用于:将所述问题向量和所述中间结果向量作为输入,通过基于注意attention向量技术的递归神经网络模型,计算输出序列的概率,生成所述自然语言答案。用户设备500中的各个组件通过总线系统550耦合在一起,其中总线系统550除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。图5所示的神经网络系统400或图6所示的用户设备500能够实现前述图2至图4的实施例中所实现的各个过程,为避免重复,这里不再赘述。应注意,本发明上述方法实施例可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(FieldProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。可以理解,本发明实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(ProgrammableROM,PROM)、可擦除可编程只读存储器(ErasablePROM,EPROM)、电可擦除可编程只读存储器(ElectricallyEPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(RandomAccessMemory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(StaticRAM,SRAM)、动态随机存取存储器(DynamicRAM,DRAM)、同步动态随机存取存储器(SynchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(DoubleDataRateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(EnhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(SynchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambusRAM,DRRAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1