基于循环神经网络的对话数据交互处理方法及装置与流程

文档序号:13210139阅读:175来源:国知局
技术领域本发明涉及智能机器人领域,具体地说,涉及一种基于循环神经网络的对话数据交互处理方法及装置。

背景技术:
聊天机器人(chatterbot)是一个用来模拟人类对话或聊天的程序。聊天机器人产生的原因是,研发者把自己感兴趣的回答放到数据库中,当一个问题被抛给聊天机器人时,它通过相似度匹配算法,从数据库中找到最相近的问题,然后根据问题与答案的对应关系,给出最贴切的答案,回复给它的聊伴。然而,在当前机器人聊天的场景中,当在机器人知识库中并不能找到与用户请求的问题相匹配的相同或类似问题时,机器人就不能够给用户返回正确的或者说合适的答案。现有技术这方面的局限除了导致机器人知识库有限的问题之外,还会导致语义理解的错误,从而使用户与机器人沟通过程的体验较差。此外,在知识推理上现有技术的知识推理过程也有一定局限性,传统的知识推理都是靠程序开发人员写一些规则来解决知识推理问题。但是,要穷举并制定这些规则对于开发人员来说无法想象。因为在自然语言处理领域中永远有写不完的规则。这时就需要机器人有自己的学习能力,并进行推理。综上,在对话数据交互的技术领域中,需要提供一种能够训练机器人对话生成模型的方法,利用训练得到的模型,机器人可以自如地跟用户交谈,从而提高用户的使用体验。

技术实现要素:
为解决现有技术的上述问题,本发明提供了一种基于循环神经网络的对话数据交互处理方法,所述处理方法包括以下步骤:接收用户的对话输入语句;进行知识库匹配计算,判断知识库中是否存在与所述对话输入语句的匹配度达到预定值的问题语句;如果不存在,则请求对话生成模型给出针对所述对话输入语句的答案,其中:所述对话生成模型的编码层构建为第一循环神经网络,在所述第一循环神经网络中对所述对话输入语句进行解析,得到表示问题语义的中间向量;所述对话生成模型的解码层构建为第二循环神经网络,在所述第二循环神经网络中对所述中间向量进行解析,得到表示答案语义的答案向量群;将所述答案向量群作为答案输出语句进行输出。根据本发明的一个实施例,在所述第一循环神经网络中对所述对话输入语句进行解析时,所述方法还包括以下步骤:在编码层将输入的对话语句拆分成具有语义的最小单词元,并将其以向量的形式作为问题向量群输入到所述第一循环神经网络的输入层;在所述第一循环神经网络的隐藏层对所述第一循环神经网络的输入层输出的向量和前一时刻所述第一循环神经网络的隐藏层的输出进行语义解析,并进行线性加权组合,形成代表句义的所述中间向量;以及在所述第一循环神经网络的输出层将所述中间向量进行输出。根据本发明的一个实施例,在所述第二循环神经网络中对所述中间向量进行解析时,所述对话数据交互处理方法还包括以下步骤:在解码层接收所述中间向量,并将所述中间向量作为所述第二循环神经网络的输入层的输入;在所述第二循环神经网络的隐藏层对来自输入层的所述中间向量和前一时刻所述第二循环神经网络的隐藏层的输出进行语义解析,依次生成若干单个的向量,以形成所述答案向量群,其中所述答案向量群中的各单个的向量的语义对应于答案输出语句中最小单词元的语义;以及在所述第二循环神经网络的输出层将所述答案向量群进行输出。根据本发明的对话数据交互处理方法,系统在将所述答案向量群作为答案输出语句进行输出之后,将该答案输出语句与对话输入语句对应地保存到知识库中,以对知识库进行更新和扩充。根据本发明的一个实施例,在进行知识库匹配计算后,系统根据知识库中是否存在与所述对话输入语句的匹配度达到预定值的对话语句来设置请求标志信号位,并依据请求标志信号位的有效性来决定是否需要请求对话生成模型给出答案。根据本发明的另一个方面,还提供了一种基于循环神经网络的对话数据交互处理装置,该装置包括以下模块:接收模块,其用于接收用户的对话输入语句;匹配计算模块,其用于进行知识库匹配计算,以知识库中是否存在与所述对话输入语句的匹配度达到预定值的问题语句;对话生成模型调用模块,其用于在不存在匹配的问题语句时,用于请求对话生成模型给出针对所述对话输入语句的答案,其中,在该模块中:所述对话生成模型的编码层构建为第一循环神经网络,在所述第一循环神经网络中对所述对话输入语句进行解析,得到表示问题语义的中间向量;所述对话生成模型的解码层构建为第二循环神经网络,在所述第二循环神经网络中对所述中间向量进行解析,得到表示答案语义的答案向量群;以及答案输出模块,其用于将所述答案向量群作为答案输出语句进行输出。根据本发明的优选实施例,在所述第一循环神经网络中对所述对话输入语句进行解析时,所述装置还包括以下模块:第一循环神经网络输入模块,其用于在编码层将输入的对话语句拆分成具有语义的最小单词元,并将其以向量的形式输入到所述第一循环神经网络的输入层;第一循环神经网络隐藏模块,其用于在所述第一循环神经网络的隐藏层对所述第一循环神经网络的输入层输出的向量和前一时刻所述第一循环神经网络的隐藏层的输出进行语义解析,并进行线性加权组合,形成代表句义的所述中间向量;以及第一循环神经网络输出模块,在所述第一循环神经网络的输出层输出所述中间向量。根据本发明的一个实施例,在所述第二循环神经网络中对所述中间向量进行解析时,所述装置还包括以下模块:第二循环神经网络输入模块,其用于在解码层接收所述中间向量,并将所述中间向量作为所述第二循环神经网络的输入层的输入;第二循环神经网络隐藏模块,其用于在所述第二循环神经网络的隐藏层对来自输入层的所述中间向量和前一时刻所述第二循环神经网络的隐藏层的输出进行语义解析,依次生成若干单个的向量,以形成所述答案向量群,其中所述答案向量群中的各单个的向量的语义对应于答案输出语句中最小单词元的语义;以及第二循环神经网络输出模块,其用于在所述第二循环神经网络的输出层将所述答案向量群进行输出。根据本发明的一个实施例,所述装置还包括更新模块,其用于在通过输出模块将所述答案向量群作为答案输出语句进行输出之后,将该答案输出语句与对话输入语句对应地保存到知识库中,以对知识库进行更新和扩充。根据本发明的一个实施例,在进行知识库匹配计算后,根据知识库中是否存在与所述对话输入语句的匹配度达到预定值的问题语句来设置请求标志信号位,并依据请求标志信号位的有效性来决定是否需要请求对话生成模型给出答案。根据本发明的对话数据交互方法,由于可以在知识库中没有找到匹配的问题语句时,还可以通过训练好的对话生成模型的方式提供答案,使得人与机器交互更为顺利。通过对话生成模型给出的答案还能进一步对知识库进行扩充和更新,从而进一步提高机器的智能水平。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:图1为现有技术中聊天机器人的聊天模块处理用户提出的问题的流程图;图2是显示了典型的循环神经网络的原理图;图3是根据本发明的一个实施例在编码层和解码层均应用循环神经网络算法的流程图;图4显示了根据本发明的用于训练对话生成模型的原理框图;以及图5显示了应用本发明训练的对话生成模型的聊天模块与其它模块交互的实例。具体实施方式为使本发明的目的、技术方案和优点更加清楚,以下结合附图对本发明实施例作进一步地详细说明。如图1所示,其中显示了现有技术中采用问题匹配计算方法来到知识库中寻找答案的流程图。在图1中,首先,机器人的聊天模块接收用户的对话输入语句,步骤S101。在一个实施例中,该对话输入语句其实就是用户主动发起的提问或者说是问题。接下来,交互系统将按照匹配度计算方法在机器人的知识库中寻找与用户提出的问题相匹配的问题语句,参见步骤S102。在寻找的过程中,可以预先设定一个关于匹配度的阈值。当计算出的匹配度小于该阈值时,表明在数据库中未找到匹配的问题语句。也即是说,数据库的问题语句与用户输入的语句不完全匹配。那么,系统就会进行相似度计算,将输入的语句进行相似变换,然后在数据库中寻找与之对应的相似的几个问题,参见步骤S103。在找到了相似的问题之后,系统就会输出与这几个相似问题语句对应的几个答案,参见步骤S105。如果进行相似度计算后,经过相似变换的问题在数据库中仍然不存在,则在步骤S106中直接输出“不能输出答案”的结果。当计算出的匹配度大于或等于该阈值时,表明在数据库中有与用户提出的问题语句完全匹配的问题语句。在这种情况下,系统直接输出数据库中存储的完全匹配的问题语句对应的答案。例如,如果知识库里存储了类似于“你叫什么名字”的问题和对应的答案,那么当用户提问的问题是“你叫啥”时,机器人按照上述相似度计算方法就有可能在已有的知识库中找不到匹配的合适问题。因此,也就不能给用户返回正确的答案。在这种情况下,虽然用户提出了两个从字面上看完全不同但意思相同的问题,但按照现有技术的机器人却不能正确理解语义。因此针对这个问题就不能够回答正确,导致聊天的过程会不尽人意。显然,这是不希望的。本发明提出了一种设计方法,将对话生成模型的方法作为知识库匹配方法的辅助方式,在知识库匹配方法不适应的情况下采用结合对话生成模型的方式来提供答案,从而提高用户的交互体验。根据本发明,当用户提问时,如果知识库中不能找到满意答案,系统会根据用户的问题通过训练好的对话生成模型向用户提供答案。本发明所说的对话生成模型的方式,意指:当用户提问问题时,该模型可以根据用户的问题基于训练好的模型生成答案。而不像原来的问答系统是基于知识库匹配的方法返回答案。并且,在对话模型生成的过程中基于提问的问题逐字或者逐词地生成答案。这种方式主要解决了当知识库中的问题有限而无答案返回的技术问题。一般而言,对话生成模型的结构为编码-解码框架。在该框架中,模型主要由编码层和解码层两部分组成。其中编码层主要负责对问题达到语义理解的目的,并把问题表示一个向量,该向量就是问题的语义表示。而解码层主要负责基于编码层生成的向量生成答案。由于本发明的对话模型的训练生成基于的是循环神经网络(RecurrentNeuralNetworks,RNNs)算法,因此,根据本发明,可以将对话模型的编码层和解码层均构建为循环神经网络的形式。众所周知,RNNs的目的是用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。RNNs之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNNs能够对任何长度的序列数据进行处理。但在实践中,为了降低网络的复杂性往往假设当前的状态只与前面的几个状态相关。如图2便是一个典型的循环神经网络RNNs的示意图。在图2中,循环神经网络从下到上包括三层:输入层、隐藏层和输出层。输入层用于接收初始数据序列,针对对话而言,该初始数据序列为按照最小语义单元进行拆分的逐个的词。隐藏层完成最主要的工作,其用于接收这些词构成的向量,并在训练好的模型下根据其中的记忆单元提供的之前的隐藏层的输出和当前接收的输入层的向量对这些逐个的词进行语义解析,得到另一个向量。输出层用于输出这个向量。因此,基于循环神经网络的对话生成模型的训练很重要。训练的好,它所反映的就是客观的数据。然而,为了不模糊本发明起见,这里将对训练的过程不进行详细说明。如图3所示,其中显示了根据本发明的一种基于循环神经网络的对话数据交互处理方法。其中由于部分步骤与现有技术中的知识库匹配方法重复,因此,图中并未显示。在图3中,方法开始于步骤S301,如前所述,系统需要首先接收用户的对话输入语句。由于本发明的方法是作为知识库匹配方法的辅助,因此在利用对话模型给出答案之前,需要进行匹配度的判断,进行知识库匹配计算,判断知识库中是否存在与对话输入语句的匹配度达到预定值的问题语句。在进行知识库匹配计算后,系统根据知识库中是否存在与对话输入语句的匹配度达到预定值的对话语句来设置请求标志信号位,并依据请求标志信号位的有效性来决定是否需要请求对话生成模型给出答案。如果不存在,即请求标志信号位有效,则请求对话生成模型给出针对对话输入语句的答案,其中:对话生成模型的编码层构建为第一循环神经网络,如图4的编码层RNN。在第一循环神经网络中对对话输入语句(ABC)进行解析,并进行线性加权组合,形成代表问题句义的中间向量V。同时,对话生成模型的解码层也构建为第二循环神经网络,如图4所示的解码层RNN。在第二循环神经网络中对中间向量V进行解析,依次得到表示答案语义的答案向量群(“D”,“E”,“F”)。最后将答案向量群作为答案输出语句(DEF)进行输出。上述内容可以具体化为,在步骤S302中,在对话模型的编码层将输入的对话语句拆分成具有语义的最小单词元(A,B,C),并依次将其以向量的形式输入到第一循环神经网络的输入层。在第一循环神经网络的隐藏层对第一循环神经网络的输入层输出的向量和前一时刻第一循环神经网络的隐藏层的输出进行语义解析,并进行线性加权组合,形成代表句义的中间向量V。最后,在第一循环神经网络的输出层将中间向量进行输出。上述内容还可以进一步具体化为,在步骤S303中,当在第二循环神经网络中对中间向量V进行解析时,对话数据交互处理方法还包括以下步骤:在解码层接收中间向量V,并将中间向量作为第二循环神经网络的输入层的输入。在第二循环神经网络的隐藏层对来自输入层的中间向量和前一时刻第二循环神经网络的隐藏层的输出进行解析计算,依次生成答案向量群(“D”,“E”,“F”),其中答案向量群中的各个向量的语义对应于答案输出语句中最小单词元的语义;以及在第二循环神经网络的输出层将所述答案向量群进行输出。根据本发明的对话数据交互处理方法,系统在将答案向量群作为答案输出语句进行输出之后,还可以将该答案输出语句与对话输入语句对应地保存到知识库中,以对知识库进行更新和扩充,步骤S304。当将图3的方法流程用一个具体实例进行描述时,情况可以是这样的:例如,当用户请求“你叫啥”问题时,首先是知识库匹配算法在知识库中寻找类似问题,在找到相似度较高的问题时如“你叫啥名字”,会有一个标志信号0,用来表示不需要请求对话生成模型。同时,返回知识库中该问题(“你叫啥名字”)对应的答案(“我叫智娃”)作为回复。而当使用知识库匹配算法无法找到相似度高的问题时,会产生标志信号1,用来表示需要请求对话生成模型。并把分词后的问题(“你叫啥”)作为对话生成模型的输入,之后把对话生成模型生成的答案(“我是智娃”)作为回复。在知识库匹配算法运行结束后,对话模型会根据标志信号(1或者0)判断是否使用对话生成模型生成答案,如果是1则使用该模型,否则不用。在标志信号为1的情况下,首先对传来的分词后的问题字符串如“你叫啥”。在编码层,依次把“你”,“叫”,“啥”输入到编码层的循环神经网络。之后会生成一个代表语义的向量D,然后在解码层,编码层生成的向量D作为解码层循环神经网络的输入,依次生成”我“,”叫“,”智娃“的回答。如图5所示,其中显示了含有本发明的对话生成模型的聊天模块与其它模块如权限验证模块和决策模块交互使用的实例。如图所示,含有对话生成模型的模块隶属于聊天模块。需要特别说明的是,本发明的方法描述的是在计算机系统中实现的。该计算机系统例如可以设置在机器人的控制核心处理器中。例如,本文所述的方法可以实现为能以控制逻辑来执行的软件,其由机器人控制系统中的CPU来执行。本文所述的功能可以实现为存储在非暂时性有形计算机可读介质中的程序指令集合。当以这种方式实现时,该计算机程序包括一组指令,当该组指令由计算机运行时其促使计算机执行能实施上述功能的方法。可编程逻辑可以暂时或永久地安装在非暂时性有形计算机可读介质中,例如只读存储器芯片、计算机存储器、磁盘或其他存储介质。除了以软件来实现之外,本文所述的逻辑可利用分立部件、集成电路、与可编程逻辑设备(诸如,现场可编程门阵列(FPGA)或微处理器)结合使用的可编程逻辑,或者包括它们任意组合的任何其他设备来体现。所有此类实施例旨在落入本发明的范围之内。因此,根据本发明的另一个方面,还提供了一种基于循环神经网络的对话数据交互处理装置,该装置包括以下模块:接收模块,其用于接收用户的对话输入语句;匹配计算模块,其用于进行知识库匹配计算,以知识库中是否存在与所述对话输入语句的匹配度达到预定值的问题语句;对话生成模型调用模块,其用于在不存在匹配的问题语句时,用于请求对话生成模型给出针对所述对话输入语句的答案,其中,在该模块中:所述对话生成模型的编码层构建为第一循环神经网络,在所述第一循环神经网络中对所述对话输入语句进行解析,得到表示问题语义的中间向量;所述对话生成模型的解码层构建为第二循环神经网络,在所述第二循环神经网络中对所述中间向量进行解析,得到表示答案语义的答案向量群;以及答案输出模块,其用于将所述答案向量群作为答案输出语句进行输出。根据本发明的优选实施例,在所述第一循环神经网络中对所述对话输入语句进行解析时,所述装置还包括以下模块:第一循环神经网络输入模块,其用于在编码层将输入的对话语句拆分成具有语义的最小单词元,并将其依次以向量的形式输入到所述第一循环神经网络的输入层;第一循环神经网络隐藏模块,其用于在所述第一循环神经网络的隐藏层对所述第一循环神经网络的输入层输出的向量和前一时刻所述第一循环神经网络的隐藏层的输出进行语义解析,并进行线性加权组合,形成代表句义的所述中间向量;以及第一循环神经网络输出模块,在所述第一循环神经网络的输出层输出所述中间向量。根据本发明的一个实施例,在所述第二循环神经网络中对所述中间向量进行解析时,所述装置还包括以下模块:第二循环神经网络输入模块,其用于在解码层接收所述中间向量,并将所述中间向量作为所述第二循环神经网络的输入层的输入;第二循环神经网络隐藏模块,其用于在所述第二循环神经网络的隐藏层对来自输入层的所述中间向量和前一时刻所述第二循环神经网络的隐藏层的输出进行语义解析,依次生成若干单个的向量,以形成所述答案向量群,其中所述答案向量群中的各单个的向量的语义对应于答案输出语句中最小单词元的语义;以及第二循环神经网络输出模块,其用于在所述第二循环神经网络的输出层将所述答案向量群进行输出。根据本发明的一个实施例,所述装置还包括更新模块,其用于在通过输出模块将所述答案向量群作为答案输出语句进行输出之后,将该答案输出语句与对话输入语句对应地保存到知识库中,以对知识库进行更新和扩充。根据本发明的一个实施例,在进行知识库匹配计算后,根据知识库中是否存在与所述对话输入语句的匹配度达到预定值的问题语句来设置请求标志信号位,并依据请求标志信号位的有效性来决定是否需要请求对话生成模型给出答案。如上所述,当用户请求的问题在我们的知识库匹配不到相同或类似的问题时,使用已经训练好的基于循环神经网络的对话生成模型可以生成一个合适的答案,返回给用户,极大地丰富了用户的体验。比如在我们的知识库存在类似于“你叫什么名字”的问题,但是当用户提问类似“你叫啥”的问题时,使用现有的相似度计算方法可能在已有的知识库匹配不到合适的问题。因此,就不能正确返回给用户一个合适的答案,也就是说虽然用户说了两个从字面来看完全不同的句子,但是意思一样的,这个从根本上说就是机器人不能正确理解语义,而本发明的对话生成模型就可以解决这个问题,它可以正确理解语义。从长远角度来看,该对话生成模型还可以解决以下问题:当训练对话生成模型的语料足够大时,这个模型就可以取代现在问答系统中主要的也是流行的知识库匹配方法。传统的知识库匹配方法都是从字面判断两句话的相似度。而这对于理解自然语言,尤其是中文来说是远远不够的,而本发明的对话生成模型就可以解决这个问题。比如下面的两句话“我是你最亲爱的朋友”和“我不是你最亲爱的朋友”,如果按传统的知识库匹配算法极有可能认为这两句话语义相似,但是现实却是相反的,因此这对于用户体验来说是非常差的。另一方面,该对话生成模型可以解决一些知识推理的问题。传统的知识推理问题都是靠程序开发人员写一些规则解决知识推理问题,但是这对于程序开发人员来说是不可想象的,因为在自然语言处理领域会有写不完的规则,因此无论对于公司,开发人员,还是用户成本都是巨大的,而使用训练好的对话生成模型可以完美的解决这个问题,因为在一批特殊的语料中,该模型可以自动地学习一些推理知识。比如,当用户提问类似于“我有三个红色的苹果和四个绿色的苹果,请问我一共有几个苹果”,传统的方法就是写一些类似“数字+实体”+“数字+实体”=“数字+实体”的规则,解决这个问题,但是句子稍微改变一下“我有三个红色的苹果,吃了一个,还有几个苹果”上面的规则就不适用了,而使用基于特定语料库的对话模型完全可以学习到这种知识。应该理解的是,本发明所公开的实施例不限于这里所公开的特定结构、处理步骤或材料,而应当延伸到相关领域的普通技术人员所理解的这些特征的等同替代。还应当理解的是,在此使用的术语仅用于描述特定实施例的目的,而并不意味着限制。说明书中提到的“一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,说明书通篇各个地方出现的短语“一个实施例”或“实施例”并不一定均指同一个实施例。虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1