本申请实施例涉及人工智能技术领域,涉及但不限于一种问答匹配方法、装置、设备及存储介质。
背景技术:
智能问答系统(question-answer,qa)系统,旨于根据用户提出的问题,经过系统的处理,输出适合的句子作为问题相应的回答。
目前常见的智能问答系统有两种:基于检索的问答系统和基于生成的问答系统。其中,基于检索的问答系统是根据用户问题从现有的、大量的问答对组成的问答库中选择对应的句子作为回答;基于生成的问答系统则不依赖于预定义的回复内容,通过从额外的知识库中抓取用户所需的信息片段为用户问题生成新的回复内容。显然,基于检索的问答系统所回答的句子相较于基于生成的问答系统所回答的句子具有更好的语法和句法连贯性,所以基于检索的问答系统是当前业内开发问答系统的主流选择。
但是,目前的基于检索的问答系统均无法解决语义鸿沟问题,即在问题和答案表述方式不同的情况下,很难刻画出问题和答案中语义相同表述不同的词语之间的相关性。
技术实现要素:
有鉴于此,本申请实施例提供一种问答匹配方法、装置、设备及存储介质,能够解决表述方式不同导致的语义相同但表述方式不同的词语匹配困难的问题。
本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种问答匹配方法,所述方法包括:
确定待解答问题的句子横向向量为第一横向量;
确定所述待解答问题的每一候选答案的句子横向向量为第二横向量;
根据所述第一横向量和每一候选答案的第二横向量,确定所述待解答问题与对应的候选答案之间的相关度值;
将满足预设条件的所述相关度值所对应的候选答案,确定为所述待解答问题的解答结果。
第二方面,本申请实施例提供一种问答匹配装置,所述装置包括:
第一确定单元,用于确定待解答问题的句子横向向量为第一横向量;
第二确定单元,用于确定所述待解答问题的每一候选答案的句子横向向量为第二横向量;
第三确定单元,用于根据所述第一横向量和每一候选答案的第二横向量,确定所述待解答问题与对应的候选答案之间的相关度值;
第四确定单元,用于将满足预设条件的所述相关度值所对应的候选答案,确定为所述待解答问题的解答结果。
第三方面,本申请实施例提供一种问答匹配设备,所述设备至少包括:处理器和配置为存储可执行指令的存储介质,其中:所述处理器配置为执行存储的可执行指令;
所述可执行指令配置为执行上述问答匹配方法。
第四方面,本申请实施例提供一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令配置为执行上述问答匹配方法。
本申请实施例提供一种问答匹配方法、装置、设备及存储介质,其中,所述方法包括:确定待解答问题的句子横向向量为第一横向量;确定所述待解答问题的每一候选答案的句子横向向量为第二横向量;根据所述第一横向量和每一候选答案的第二横向量,确定所述待解答问题与对应的候选答案之间的相关度值;将满足预设条件的所述相关度值所对应的候选答案,确定为所述待解答问题的解答结果。这样,由于待解答问题与对应的候选答案之间的相关度值是根据第一横向量和第二横向量所确定的,因此,所确定的相关度值能够更加清楚的刻画出待解答问题和候选答案的相关性,从而解决由于表述方式不同所导致的语义相同但表述方式不同的词语匹配困难的问题。
附图说明
在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
图1a为本申请实施例一问答匹配方法的实现流程示意图;
图1b为本申请实施例问答匹配方法的应用场景示意图;
图2为本申请实施例二问答匹配方法的实现流程示意图;
图3为本申请实施例三问答匹配方法的实现流程示意图;
图4为本申请实施例三问答匹配方法的实现流程示意图;
图5为本申请实施例五问答匹配装置的组成结构示意图;
图6为本申请实施例六问答匹配设备的组成结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本申请的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
在问答匹配中,根本问题是如何能在具有海量问答对的问答库中检索到与用户问题最相关、最合适的答案。具体的做法是计算用户问题和问答库中每个答案的相关度值,并将这些相关度值进行排序,排列在第一个的回答就是与用户问题最相关的答案。目前,对用户问题和问答库的回答进行相关度匹配的方法有以下三种:
第一种、关键字匹配。
关键字匹配是最简单的基于统计的方法。这种方法不需要理解语言本身,而是通过问题和问答库中问题的字词重叠率计算“相关分数”。如词频-逆文本频率指数法(termfrequency–inversedocumentfrequency,tf-idf)。
第二种、浅层语义匹配。
浅层语义匹配会加入一些语义信息,实现简单的语义解析。其中,词语向量表示(wordembedding)是一种常用且有效的刻画词语语义信息的方法,使用实数域的向量来表示词语的语义,并保证具有相似上下文的词语向量表示相近。得到词语向量表示后,对问题和候选答案中词语向量表示分别进行拼接或者相加得到问题和候选答案的向量表示,然后计算问题向量表示和候选答案向量表示的余弦相似度作为问题与该候选答案之间的相关度,最后将所有候选答案与问题的相关度进行排序。
第三种、基于深度学习的文本语义匹配模型。
基于深度学习的文本语义匹配模型通过使用卷积神经网络(convolutionalneuralnetwork,cnn)、循环神经网络(recurrentneuralnetwork,rnn)等神经网络学习语句向量表示,并加入一些语义特征来计算相关度。得到语句中所有词语的向量表示后,还需要在词语向量表示的基础上加入语句的结构信息来刻画整个语句的语义,比如,“苹果”一词在“苹果手机好用吗”和“红苹果好吃吗”中的词向量表示是一样的,但是由于“苹果”在两个语句中的上下文结构信息不一样,它的意义也大为不同,所以在对整个语句进行向量表示之前,需要将与每个词语相关的上下文信息与该词语的词向量表示进行结合。当前常用的神经网络都是在对语句进行向量表示时考虑了每个词语的一定窗口范围内的上下文词语的语序信息对该词语义的影响来对整个语句进行简单的结构信息的刻画。
从以上三种方法可以看出,基于深度学习的文本语义匹配模型在问答匹配上的效果是最好的,但是依旧存在瓶颈,效果有待提高,主要存在以下缺点:
第一、无法解决语义鸿沟问题。
这里,语义鸿沟是指在问题和答案表述方式不同的情况下,很难刻画出问题和答案中语义相同表述不同的词语之间的相关性。在很多公司的业务咨询过程中,用户问题的表述总是偏向口语化并夹杂着大量的冗余信息,而公司提供的标准答案的表述则更加专业规范,如果使用传统的基于当前句子上下文信息训练出的词向量表示来刻画词语的语义信息,用户问题和标准答案中相同语义不同表述方式的词语的向量表示距离会较远,对后续的相关度计算结果的影响很大。
第二、语句向量表示粗糙。
常用的神经网络在进行句子语义表征时,只通过简单的语序信息刻画语句的结构,但语句结构信息远比简单的语序信息更复杂。例如,“手机信号非常差怎么改善呢?”这句话本意是寻求改善手机信号的方法,但是由于“改善”离“手机信号”太远了,可能不在“手机信号”的上下文窗口里,或者虽然在上下文窗口里,但是由于距离较远两个词之间的影响被削弱了。所以只使用语序信息作为语句的结构信息会导致距离较远的上下文信息被削弱或者丢失。
第三、忽略了词性的影响。
例如,问题“移动手机卡可以去营业厅办理吗?”和答案“移动手机卡可以去营业厅取消”做匹配,这两个语句除了动词以外其他部分完全一样,但是这一个词的差别使得两个语句的语义完全相反,对于这两个句子,只有突出这两个动词之间的差异,才能将这两句话语义明显区分开。根据上面的例子可以发现,相同词性的词语之间的相关性对语句相关度的影响非常大,也就是说相同词性的词之间是否相关、相关度是多少应该被重视。
基于相关技术中所存在的上述问题,本实施例提供一种问答匹配方法,能够解决由于表述方式不同所导致的语义相同但表述方式不同的词语匹配困难的问题,还能在进行句子整体语义表征时学习到语句中更复杂的句法结构信息,并突出了词性对问答相关度计算的影响。该方法应用于服务器,该方法所实现的功能可以通过服务器中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该服务器至少包括处理器和存储介质。
图1a为本申请实施例一问答匹配方法的实现流程示意图,如图1a所示,所述方法包括以下步骤:
步骤s101,确定待解答问题的句子横向向量为第一横向量。
这里,服务器首先获取用户通过用户终端输入的所述待解答问题,并确定所述待解答问题的句子横向向量,其中,所述待解答问题的句子横向向量是根据所述待解答问题的语句的句法结构和待解答问题中的不同词性词语之间的相互关系,而得出的基于句子层面的向量。本实施例中,将待解答问题的句子横向向量确定为第一横向量。
步骤s102,确定所述待解答问题的每一候选答案的句子横向向量为第二横向量。
这里,服务器在获取到所述待解答问题后,还包括以下步骤:
步骤s1021,采用关键字匹配法,在预设问答库中筛选出与所述待解答问题的中的词语重合率较高的答案,作为候选答案。
其中,所述预设问答库中包括至少一个问题与对应的答案所形成的问答对。
在步骤s1021筛选候选答案时,服务器先将所述待解答问题进行分词处理,得到问题词集合,所述问题词集合中包括至少一个所述待解答问题的第一问题词。然后,在预设问答库中将全部第一问题词作为查找依据,查找出与全部第一问题词中的一个或多个第一问题词匹配的问答对,并根据问答对与第一问题词的匹配情况(例如,问答对与第一问题词的重合率等)得到一个匹配值,将匹配值较高的预设个数的问答对筛选出来。获取筛选出的问答对中的答案,将这些答案作为所述候选答案。
在服务器筛选出候选答案之后,确定每一候选答案的句子横向向量,其中,所述每一候选答案的句子横向向量是根据所述对应候选答案的语句的句法结构和该候选答案中的不同词性词语之间的相互关系,而得出的基于句子层面的向量。
本实施例中,将每一候选答案的句子横向向量确定为第二横向量。
步骤s103,根据所述第一横向量和每一候选答案的第二横向量,确定所述待解答问题与对应的候选答案之间的相关度值。
这里,由于第一横向量和第二横向量均是根据语句的句法结构和语句中不同词性词语之间的相互关系得到的,因此,最终所确定的相关度值也是考虑了待解答问题和对应候选答案的句法结构和句子内部不同词性词语之间的相互关系的相关度值。
本实施例中,步骤s103可以通过以下步骤实现:
步骤s1031,根据所述第一横向量和所述每一候选答案的第二横向量,在第一预设条件下确定所述第一问题词与所述每一候选答案的相关度值为第一相关度值。
在具体实现过程中,步骤s1031需要根据待解答问题中的每个第一问题词与每个候选答案进行相关度值的计算,得到每个第一问题词与每个候选答案的第一相关度值。也就是说,如果一个待解答问题包括n个第一问题词,并且通过上述步骤s1021筛选出m个候选答案,则本实施例中,则需要进行n*m次相关度值的计算,得到n*m个相关度值,并将该n*m个相关度值确定为所述第一相关度值。
本实施例中,所述第一预设条件可以为基于第一问题词的词性的注意力机制。例如,当第一问题词为动词时,则所述第一预设条件为基于动词的注意力机制。
步骤s1032,对每一候选答案的全部第一相关度值在第二预设条件下进行加权计算,得到所述待解答问题与对应的候选答案之间的相关度值。
本实施例中,对于每一候选答案,将待解答问题的全部第一问题词与该候选答案的全部第一相关度值在第二预设条件下进行加权计算,得到所述待解答问题与该候选答案之间的相关度值。也就是说,如果一个待解答问题通过上述步骤s1021筛选出m个候选答案,则本实施例中,需要对m个候选答案的全部第一相关度值进行m次加权计算,得到待解答问题与m个候选答案之间的m个相关度值。
本实施例中,所述第二预设条件可以为基于主题词的注意力机制,因为通过步骤s1031已经得到待解答问题中所有词和候选答案的相关度值,考虑到待解答问题中每个词对待解答问题的信息贡献度是不一样的,因此,确定待解答问题中的一个词作为主题词,以该主题词作为约束的注意力机制来计算待解答问题与候选答案的相关度。例如,可以选择对待解答问题的核心内容有约束作用的核心词作为所述主题词。
步骤s104,将满足预设条件的所述相关度值所对应的候选答案,确定为所述待解答问题的解答结果。
这里,服务器根据预设条件,选择符合预设条件的相关度值对应的候选答案为最终答案,并向提问用户输出最终答案。举例来说,可以选择最大的相关度值所对应的候选答案为所述解答结果。
图1b为本申请实施例问答匹配方法的应用场景示意图,本申请实施例的问答匹配方法可以应用于问答匹配系统,所述问答匹配系统可以为能够安装于终端设备200上的一应用程序,如图1b所示的问答匹配应用20的界面图,当用户在该应用中输入待解答问题21时,问答匹配系统会采用本实施例所提供的方法:首先,确定待解答问题21的句子横向向量为第一横向量;确定所述待解答问题21的每一候选答案的句子横向向量为第二横向量;然后,根据所述第一横向量和每一候选答案的第二横向量,确定所述待解答问题21与对应的候选答案之间的相关度值;最后,将满足预设条件的所述相关度值所对应的候选答案,确定为所述待解答问题21的解答结果22,并将解答结果22显示在该界面,以供用户查看。
本实施例所提供的问答匹配方法,由于待解答问题与对应的候选答案之间的相关度值是根据第一横向量和第二横向量所确定的,且由于第一横向量和第二横向量均是根据语句的句法结构和语句中不同词性词语之间的相互关系得到的,因此,最终所确定的相关度值也是考虑了待解答问题和对应候选答案的句法结构和句子内部不同词性词语之间的相互关系的相关度值。所以,所确定的相关度值能够更加清楚的刻画出待解答问题和候选答案的相关性,从而解决由于表述方式不同所导致的语义相同但表述方式不同的词语匹配困难的问题。
图2为本申请实施例二问答匹配方法的实现流程示意图,如图2所示,所述方法包括以下步骤:
步骤s201,确定所述待解答问题的每一词纵向共现向量为第一纵向量;根据所述第一纵向量,确定所述待解答问题的句子横向向量为所述第一横向量。
这里,步骤s201中确定所述待解答问题的每一词纵向共现向量为第一纵向量,可以通过以下步骤实现:
步骤s2011,对所述待解答问题进行分词处理,得到问题词集合;从所述问题词集合中确定所述待解答问题的第一问题词。
这里,可以按照句子中不同词语的词性对待解答问题进行分词处理,将分词处理之后得到每个词语均作为第一问题词,形成所述问题词集合。
步骤s2012,在共现词库中匹配与每一所述第一问题词对应的第一共现词对。
其中,所述共现词库中的共现词对中包括问题词、与问题词对应的答案词和答案词的向量。
本实施例中,以所述第一问题词作为匹配依据,在所述共现词库中匹配与所述第一问题词具有相同问题词的共现词对。
这里,所述共现词库是预设的一个存储有至少一个共现词对的词库,其中,所述共现词库可以是在本实施例的全部步骤之前已经预先建立好的词库,也可以是在执行步骤s201时所建立的词库。
在其他实施例中,提供一种共现词库的建立方法,所述方法包括以下步骤:
步骤s210,获取预设问答库中的每个问答对中的问题词。
这里,所述预设问答库中包括至少一个问答对,所述问答对是由预设问题与预设答案所形成的问答对。所述问答对中的预设问题包括至少一个问题词。
步骤s211,在所述预设问答库中确定与所述问题词对应的至少一个答案词。
这里,是在整个预设问答库中以所述问题词作为检索依据,查找与所述问题词对应的答案词。举例来说,某一问答对a中的问题词为问题词b,则根据问题词b在整个问答库中检索与该问题词b对应的至少一个答案词。也就是说,所检索出的某一答案词c可能并不是问答对a中的答案词。
步骤s212,确定所述问题词与每个答案词的共现度值。
这里,所述问题词与每个答案词的共现度值,是服务器根据该问题词与答案词之间会共同出现的频率所预设的一个值,也就是说,如果某个问题词b与某个答案词c共同出现的频率越高,则问题词b与答案词的共现度值越高。
步骤s213,根据所述问题词与每个答案词的共现度值,确定预设个数的共现度值所对应的答案词为所述问题词的共现词。
这里,选择符合预设条件的共现度值所对应的答案词为所述问题词的共现词。例如,可以选择共现度值较大的预设个数的共现度值所对应的答案词为所述问题词的共现词,其中,所述预设个数为至少一个。
步骤s214,将所述问题词与所述共现词形成共现词对。
本实施例中,所述共现词对中包括问题词和与该问题词对应的预设个数的答案词,即所述共现词对中包括问题词和该问题词的全部共现词,还包括每个答案词的向量,例如,所述答案词的向量可以为词对向量(wordtovector,简称word2vec)模型向量。
步骤s215,根据所述共现词对,建立所述共现词库。
这里,所述共现词库中包括全部所述共现词对,本申请实施例中,所述全部共现词对可以以共现词对列表的形式存储于所述共现词库中。
步骤s2013,根据所述答案词的向量,确定与每一所述第一问题词对应的词纵向共现向量为所述第一纵向量。
这里,当在共现词库中匹配出与每一所述第一问题词对应的共现词对时,获取匹配出的共现词对的全部答案词和每个答案词的向量,根据全部答案词的向量,计算出与每一所述第一问题词对应的词纵向共现向量,将该词纵向共现向量确定为所述第一纵向量。
举例来说,在共现词库中匹配出与待解答问题的某一第一问题词b对应的共现词对d,该共现词对d中包括问题词b1和三个答案词c1、c2、c3,那么,获取c1、c2、c3的向量分别为v1、v2、v3,根据向量v1、v2、v3计算得到第一问题词b的向量v4,向量v4则为所述第一问题词b对应的词纵向共现向量,并将向量v4确定为所述第一纵向量。
本实施例中,步骤s201中根据所述第一纵向量,确定所述待解答问题的句子横向向量为所述第一横向量,可以通过以下步骤实现:
步骤s2014,确定所述待解答问题中的至少两个第一问题词之间的词性作用关系为第一词性关系。
这里,所述词性作用关系为句子中不同词性的词语之间的限定修饰关系。举例来说,动词与名词相互可以进行限定修饰,副词可以修饰动词,形容词可以修饰名词等。由于所述待解答问题的问题词集合中包括所述待解答问题的全部第一问题词,因此,可以获取问题词集合中的至少两个第一问题词,然后根据所述至少两个第一问题词的词性确定所述第一词性关系。
步骤s2015,根据所述第一词性关系和与所述至少两个第一问题词对应的第一纵向量,确定所述第一横向量。
这里,由于每一个第一问题词均对应一个第一纵向量,因此,在获取到所述至少两个第一问题词之后,可以确定所述至少两个第一问题词的第一纵向量,并且可以获取所述至少两个第一问题词的第一词性关系。在得到待解答问题中的至少两个第一问题词的第一词性关系后,将第一词性关系拼接到所述至少两个第一问题词的第一纵向量,作为待解答问题的句子横向向量表示,即所述第一横向量,以作为后续相关度计算方法的输入。
步骤s202,确定每一候选答案的每一词纵向共现向量为第二纵向量;根据所述每一候选答案的第二纵向量,确定对应候选答案的句子横向向量为所述第二横向量。
这里,步骤s202中,确定每一候选答案的每一词纵向共现向量为第二纵向量,可以通过以下步骤实现:
步骤s2021,对所述每一候选答案进行分词处理,得到答案词集合;从所述答案词集合中确定所述每一候选答案的第一答案词。
这里,可以按照句子中不同词语的词性对每一候选答案进行分词处理,将分词处理之后得到每个词语均作为第一答案词,形成所述答案词集合。
步骤s2022,在共现词库中匹配与所述第一答案词对应的共现词对。
其中,所述共现词库中的共现词对中包括答案词和所述答案词的向量。当然,所述共现词对中还包括问题词。本实施例中,以所述第一答案词作为匹配依据,在所述共现词库中匹配与所述第一答案词具有相同答案词的共现词对。
这里,所述共现词库是预设的一个存储有至少一个共现词对的词库,其中,所述共现词库可以是在本实施例的全部步骤之前已经预先建立好的词库,也可以是在执行步骤s202时所建立的词库。
步骤s2023,根据所述答案词的向量,确定与每一所述第一答案词对应的词纵向共现向量为所述第二纵向量。
这里,当在共现词库中匹配出与每一所述第一答案词对应的共现词对时,获取匹配出的共现词对的全部答案词和每个答案词的向量,根据全部答案词的向量,计算出与每一所述第一答案词对应的词纵向共现向量,将该词纵向共现向量确定为所述第二纵向量。
举例来说,在共现词库中匹配出与某一候选答案k中的某一第一答案词c对应的共现词对e,该共现词对e中包括问题词b2和三个答案词c、c4、c5,那么,获取c、c4、c5的向量分别为v5、v6、v7,根据向量v5、v6、v7计算得到第一答案词c的向量v8,向量v8则为所述第一答案词c对应的词纵向共现向量,并将向量v8确定为所述第二纵向量。
本实施例中,步骤s202中,根据所述每一候选答案的第二纵向量,确定对应候选答案的句子横向向量为所述第二横向量,可以通过以下步骤实现:
步骤s2024,确定所述每一候选答案中的至少两个第一答案词之间的词性作用关系为第二词性关系。
由于所述每一候选答案的答案词集合中包括对应候选答案的全部第一答案词,因此,可以获取答案词集合中的至少两个第一答案词,然后根据所述至少两个第一答案词的词性确定所述第二词性关系。
步骤s2025,根据所述第二词性关系和与所述至少两个第一答案词对应的第二纵向量,确定所述第二横向量。
这里,由于每一个第一答案词均对应一个第二纵向量,因此,在获取到所述至少两个第一答案词之后,可以确定所述至少两个第一答案词的第二纵向量,并且可以获取所述至少两个第一答案词的第二词性关系。在得到每一候选答案中的至少两个第一答案词的第二词性关系后,将第二词性关系拼接到所述至少两个第一答案词的第二纵向量,作为每一候选答案的句子横向向量表示,即所述第二横向量,以作为后续相关度计算方法的输入。
步骤s203,根据所述第一横向量和每一候选答案的第二横向量,确定所述待解答问题与对应的候选答案之间的相关度值;
步骤s204,将满足预设条件的所述相关度值所对应的候选答案,确定为所述待解答问题的解答结果。
需要说明的是,步骤s203和步骤s204与上述步骤s103和步骤s104相同,此处不再赘述。
本发明实施例提供的问答匹配方法,确定所述待解答问题的每一词纵向共现向量为第一纵向量;根据全部所述第一纵向量,确定所述待解答问题的句子横向向量为所述第一横向量;确定每一候选答案的每一词纵向共现向量为第二纵向量;根据所述每一候选答案的全部第二纵向量,确定对应候选答案的句子横向向量为所述第二横向量。这样,由于通过待解答问题和每一候选答案的词纵向共现向量来进一步确定待解答问题和每一候选答案的句子横向向量,因此,在根据词纵向共现向量计算时可以消除问答匹配中存在的语义鸿沟问题,在基于句子中的词性作用关系的句子横向向量表示中,能够将更多句子中重要句法结构信息压缩到每个词中,从而提高所计算的相关度值的准确性。
图3为本申请实施例三问答匹配方法的实现流程示意图,如图3所示,所述方法包括以下步骤:
步骤s301,根据待解答问题的关键字在预设问答库中匹配出至少两个候选答案。
步骤s302,根据所述待解答问题,在共现词库中获取所述待解答问题的词纵向共现向量,将所述待解答问题的词纵向共现向量确定为第一纵向量。
步骤s303,根据所述至少两个候选答案中的每个候选答案,在共现词库中获取所述每个候选答案的词纵向共现向量,将所述每个候选答案的词纵向共现向量确定为第二纵向量。
步骤s304,根据所述第一纵向量获取所述待解答问题的句子横向向量,将所述待解答问题的句子横向向量确定为第一横向量。
步骤s305,根据所述第二纵向量获取所述每个候选答案的句子横向向量,将所述每个候选答案的句子横向向量确定为第二横向量。
步骤s306,根据所述第一横向量和每一所述第二横向量,确定所述待解答问题与所述每个候选答案的相关度值。
步骤s307,将满足预设条件的所述相关度值所对应的候选答案,确定为所述待解答问题的解答结果。
对于问答匹配中语义相同表述方式不同的词语匹配困难的语义鸿沟问题,本实施例将待解答问题和候选答案互相作为对方的上下文来统计同时出现在多个问答对中的频繁词对,然后在得到问答库所有的频繁词对的基础上学习词语向量(第一纵向量或者第二纵向量)表示。查找问答对中的频繁词对需要遍历整个问答库,查找出哪些问题中的词语和答案中的词语经常共同出现在多个问答对里。因为这些词语对是横跨问题和答案联合查找出来的,本方法将这些词对称之为纵向共现词对,这些共现词对往往都是具有相同语义但表述方式不同的词语且词性相同,然后基于这些共现词对设计新的词向量表示法,以此拉近问答对中表述方式不同的同义词语之间的相关性来解决问答匹配的语义鸿沟问题。本方法中的词向量表示法又称作词纵向共现向量表示法。
在学习语句向量表征时,为了刻画语句中更复杂的句法结构信息,本方法在基于词性的基础上加入了基于语法结构的词性作用信息来设计出新的语句向量表示方法。词性作用信息是指,在语法结构和词性的基础上,提取出语句中语义影响较为重要的词性关系,比如“手机信号非常差怎么改善”中名词“手机信号”和动词“改善”两个词语虽然词性不一样但是这两个词组合起来的意义却是这个句子的中心意义,可以称动词“改善”和名词“手机信号”两个词的语义互相作用,互相结合对整个句子的语义是有着非常重要甚至决定性的影响。
一般情况下,以一个语句中动词和名词为主体,再加上形容词和副词对这名词和动词的限定修饰作用就可以把握语句的整体语义。所以根据语句的句法结构和不同词性词语之间的相互作用,提出的新语句向量表示法,使得重要的上下文信息不会因为在语句中位置距离较远而被削弱了相互作用关系。由于在学习语句向量表示时是基于当前语句内不同词性的词语之间的作用关系,本方法提出的语句向量表示法又被称作句子横向向量表示法。
最后在计算问答相似度时,加入一个基于词性的注意力机制来突出相同词性的词语之间的相关性对语句相关度的影响。通过前两步基于问答对纵向共现词的词纵向共现向量表示法和基于词性作用关系的句子横向向量表示法,所有的语义信息都与句中词语的词性密切相关,所以选择基于词性的注意力机制来计算问答相关度可以更好的利用以上两步学习到的基于词性的语义信息。
下面对本实施例所提供的问答匹配方法进行详细阐述:
本实施例所提供的问答匹配方法,其目的是通过学习问题和答案中词的共现语义信息来消除问答匹配存在的语义鸿沟的问题,通过加入句子中的词性作用信息来对句子进行更优质的向量表征,通过加入基于词性注意力机制来提高问答相关度计算的效果。因此本方法提出了基于问答词共现的词纵向共现向量表示,基于词性作用关系的句子横向向量表示和基于词性注意力机制。
如图4所示,为本申请实施例三问答匹配方法的实现流程示意图,在整个系统的方法中,输入的是用户问题q和问答库l,最终输出与用户问题相关度最高的答案a作为对用户问题q的回答。所述方法包括以下步骤:
步骤s401,共现词表建立。
这里,共现词表建立是遍历整个问答库,统计出所有问答对中相同词性下的频繁共同出现的词对,并将同一个词的频繁纵向共现词对整合成一条记录插入到共现词表中以便后续查找使用。
步骤s402,候选答案筛选。
候选答案筛选根据用户问题在答案库中初步筛选出字面上相关度较高的候选答案,然后把用户问题和每个候选答案组成的问答对分别作为输入。
步骤s403,词纵向共现向量表示。
词纵向共现向量表示是将输入的用户问题和候选答案中的词转化成一个实数域的向量来表示词的语义,与传统使用的向量表示方法的不同的是本方法在进行向量表示时是通过每个词在共现词表中检索出的共现词和传统的向量表示相结合来生成词的纵向共现向量表示。
步骤s404,句子横向向量表示。
句子横向向量表示在使用双向rnn模型对问题和答案中的每个词的前后上下文信息进行压缩得到对应的固定维度向量的隐层表示后,根据作用于每个词的词性作用关系来对该词的隐层表示进行重表示,并将句中词的新隐层表示拼接起来作为该句的横向向量表示,用于后续相关度计算。
步骤s405,基于词性的注意力机制的相关度计算。
基于注意力机制的相关度计算是在得到问题和答案语义的向量表示后,对二者的相关度进行计算。
步骤s406,相关度排序。
通过之前的操作,已经尽可能的使每个词都带有了上下文信息和词性信息,使用本方法提出的基于词性的注意力机制a1,根据问题中的每一个词的隐层信息和答案中所有词的隐层信息去计算问题中每个词和整个答案的相关度,加入这种词性约束是为了凸显相同词性的词之间的相关度对问答匹配的重要性;最后再使用传统的基于主题词的注意力机制a2把问题中每个词与答案的相关度整合起来得到问题和答案的相关度,通过计算问题中每个词和主题词(即问题所属的问题分类)的相关度,然后加强重点词和答案的相关度对问答相关度的贡献。
下面对图4中每个步骤进行详细介绍。
步骤s401中共现词表建立:是将问答库中的每一个问答对当作一个整体,对问答进行分词和词性标注,将相同词性的问题词x和答案词y组成一个(x,y)的共现词对形式,遍历整个问答库获得包含问题词x的问答对数m、问题中包含问题词x答案中包含答案词y的问答对数n、包含答案词y的问答对数p和只包含答案词y的问答数q。
那么,根据所获得的包含问题词x的问答对数m、问题中包含问题词x答案中包含答案词y的问答对数n、包含答案词y的问答对数p和只包含答案词y的问答数q,则可以得到问题词x和答案词y的共现度c(x,y),其中,问题词x和答案词y的共现度c(x,y)的计算方法参见以下公式(4-1):
其中,
在得到问题词和所有同词性的答案词的共现度后,按共现度从大到小排列该问题词对应的共现答案词,选择前五个共现词作为该答案词的频繁共现词,整合成一条记录插入到共现词表中。
例如,共现词表中的一条记录[问题词x,(答案词y1,共现度c(x,y1)),(答案词y2,共现度c(x,y2)),...,(答案词y5,共现度c(x,y5))],答案词y1~y5是与问题词x共现度最高的五个答案词,c(x,y1)~c(x,y5)分别是答案词y1~y5与问题词x的共现度。
需要说明的是,本实施例中的共现词表对应上述任一实施例中的共现词库,本实施例中的共现词表中的一条记录即对应上述任一实施例中的一个共现词对。
步骤s402中筛选候选答案:是使用tf-idf关键字匹配方法,过滤掉问答库中与用户问题字词重叠率较低的答案,将剩下的答案作为该用户问题的候选答案,然后把每个候选答案与用户问题组成的问答对,一一输入到后面的系统来计算每个候选答案和用户问题的相关度。
步骤s403中词纵向共现向量表示:先用问答库作为语料集,通过word2vec工具训练出词向量模型,考虑到问题和答案也会有一些相同的表述方式,在用户问题和候选答案进行分句、分词后,对用户问题和候选答案里的每一个词都在在共现词表中进行检索,找到属于该词的纵向共现词列。
例如,对于词x在共现词表中检索得到纵向共现词列。这里,词x是指经过对用户问题(待解答问题)进行分词处理之后,所得到的任意一个问题词。所述纵向共现词列为以词x为检索项,在所述共现词表中所检索出来的与词x对应的共现词对。
这里,对于词x在共现词表中检索得到的纵向共现词列为:[词x,(词y1,共现度c(x,y1)),(词y2,共现度c(x,y2)),...,(词y5,共现度c(x,y5))],结合共现词y1~y5的word2vec向量v1~v5表示得到词x新的向量表示vx,词x新的向量表示vx的计算方法参见以下公式(4-2):
vx=α1×v1+α2×v2+…+α5×v5(4-2);
即对词x纵向相关词的向量表示v1~v5进行加权得到词x的纵向共现向量表示,权重α1~α5的计算方式参见以下公式(4-3):
需要说明的是,如果无法在共现词表中检索出共现词记录,则直接用word2vec向量进行词表示。
步骤s404中句子横向向量表示:本步骤先将上一步得到的问题和答案中词的纵向共现向量表示分别放入两个双向rnn,分别学习每个词带有上下文信息的隐层表示。
这里,所述隐层表示是指基于语句中词语的词向量,通过神经网络将语句中的结构信息与词向量相结合,就可以得到当前词语的涵盖了词语义信息和句结构信息的深层向量表示。
可以观察到一个句子中有动词、名词、形容词、副词多个词性的词语,其中动词和名词为句子的主体,再加上形容词和副词对这名词和动词的限定修饰作用就可以把握语句的整体语义。因此,根据句法结构中不同词性的词语之间的限定修饰作用,将词性作用关系规定为以下三类:动词<=>名词,动词>=副词,名词=>形容词,其中,动词和名词之间的限定修饰作用是双向的,动词对副词和名词对形容词是单向作用。这些词之间的影响应该被突出,所以需要将rnn获得的隐层状态信息进行进一步加工。
在得到问题所有词的隐层表示后,找到问题中每一个分句里的动词、名词、形容词、副词,并根据规定的三种词性作用关系在该分句中找到每一个词对应的其他词性的关键词,例如,该句中的动词v在本句中存在与之构成词性作用关系的名词n,则将名词n的隐层表示拼接在动词v的隐层表示后作为动词v的新的隐层表示,同理可以得到名词n的新隐层表示,而动词对副词和名词对形容词存在的单向作用,只需要将动词和名词隐层表示分别拼接到副词和形容词的隐层表示上即可。
在得到问题和答案中所有词新的隐层表示后,对问题词隐层表示和答案词隐层表示分别进行拼接得到两个向量矩阵,分别作为问题和答案的句子横向向量表示作为后续相关度计算方法的输入。
步骤s404中基于注意力机制的相关度计算:相关度计算主要分成使用本方法提出得基于词性的注意力机制计算用户问题中每个词和候选答案中所有词的相关度,然后整合出用户问题中每个词和整个候选答案的相关度,并借鉴传统常用的基于主题词注意力机制计算出整个用户问题和候选答案的相关度。
本实施例中,步骤s404包括以下步骤:
步骤s4041,使用基于词性的注意力机制计算用户问题中词和整个候选答案的相关度。计算方法如下:
对用户问题进行分词处理后得到问题词集合,问题词集合中包括多个问题词;对候选答案进行分词处理后得到答案词集合,答案词集合中中包括多个答案词。对于问题词集合中的第i个问题词ui和候选答案的答案词集合中的第j个答案词u′j的相关度,由这两个词对应的隐层表示hi和h′j的余弦相似度计算可得,余弦相似度也称为余弦距离,是向量空间中两个向量夹角的余弦值作为衡量这两个向量差异的大小的度量,例如参见以下公式(4-4):
sim(i,j)=cos<hi,h′j>(4-4);
其中,cos表示余弦函数,尖括号<>表示尖括号中的两个向量的夹角。
用户问题中的第i个问题词ui和整个候选答案的相关度simi(如图4中的相关度11,相关度12……相关度1i)可以通过各个sim(i,j)的加权平均可得到,例如参见以下公式(4-5):
其中,从sim(i,j)到simi的权重αij由基于词性的注意力机制a1计算可得。
因为加入了词性信息,需要先对每个词的词性根据词性分类进行随机初始化向量表示,然后将词性的向量表示放入权重的计算公式中一起训练,权重的计算公式参见公式(4-6)和(4-7):
其中,xi是问题第i词ui的词性向量表示,x′j是答案的第j词u′j的词性向量表示,va、wa、ua、vp都是神经网络训练中的参数,tanh表示双曲正切函数。
步骤s4042,使用基于主题词注意力机制计算整个用户问题和候选答案的相关度。
通过步骤s4041,已经得到用户问题中所有词和候选答案的相关度(sim1,sim2,……,simt),考虑到用户问题中每个词对用户问题的信息贡献度是不一样的,加入一个主题词约束的主题力机制a2来计算用户问题中每个词和候选答案的相关度simi到整个用户问题和候选答案的相关度sim(如图4中的相关度20,相关度21,……相关度2t)的权值βi,例如参见以下公式(4-8):
其中,ei表示用户问题中第i词的隐层状态和问题所属的主题词向量u的余弦相似度,其中主题词向量u是根据训练好的词向量模型得到的,例如参见公式(4-9):
ei=cos<hi,u>(4-9);
因此,整个用户问题和候选答案的相关度sim可由用户问题中每个词与候选答案之间的相关度加权得到,参见以下公式(4-10):
步骤s405中相关度排序:通过上述操作计算出所有候选答案和用户问题的相关度,相关度越高,说明该候选答案和用户问题的相关性越强,选取与用户问题相关度最高的候选答案作为问题的最优回答。
本申请实施例所提供的问答匹配方法,通过使用基于问答纵向共现信息的词向量表示进一步消除问答匹配中存在的语义鸿沟问题,使用基于句中横向词性作用关系的句向量表示将更多句中重要句法结构信息压缩到每个词中,在计算问答相关度时又加入了词性约束的注意力机制,体现了词性对词之间相关度的影响。以上举措的实现,突破了深度学习模型在问答语义匹配上的瓶颈,提高了问答匹配相关度的计算效果和实用性。
基于前述的实施例,本申请实施例提供一种问答匹配装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过问答匹配设备中的处理器来实现,例如,所述问答匹配设备可以为终端、计算机设备、服务器等;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)或现场可编程门阵列(fpga)等。
图5为本申请实施例五问答匹配装置的组成结构示意图,如图5所示,该问答匹配装置500包括:
第一确定单元501,用于确定待解答问题的句子横向向量为第一横向量;
第二确定单元502,用于确定所述待解答问题的每一候选答案的句子横向向量为第二横向量;
第三确定单元503,用于根据所述第一横向量和每一候选答案的第二横向量,确定所述待解答问题与对应的候选答案之间的相关度值;
第四确定单元504,用于将满足预设条件的所述相关度值所对应的候选答案,确定为所述待解答问题的解答结果。
在其他实施例中,所述第一确定单元包括:
第一确定模块,用于确定所述待解答问题的每一词纵向共现向量为第一纵向量;根据全部所述第一纵向量,确定所述待解答问题的句子横向向量为所述第一横向量;
所述第二确定单元包括:
第二确定模块,用于确定每一候选答案的每一词纵向共现向量为第二纵向量;根据所述每一候选答案的全部第二纵向量,确定对应候选答案的句子横向向量为所述第二横向量。
在其他实施例中,所述第一确定模块包括:
第一分词处理模块,用于对所述待解答问题进行分词处理,得到问题词集合;
第三确定模块,用于从所述问题词集合中确定所述待解答问题的第一问题词;
第一匹配模块,用于在共现词库中匹配与每一所述第一问题词对应的共现词对;其中,所述共现词库中的共现词对包括问题词、与问题词对应的答案词和答案词的向量;
第四确定模块,用于根据所述答案词的向量,确定与每一所述第一问题词对应的词纵向共现向量为所述第一纵向量。
在其他实施例中,所述第一确定模块包括:
第五确定模块,用于确定所述待解答问题中的至少两个第一问题词之间的词性作用关系为第一词性关系;根据所述第一词性关系和与所述至少两个第一问题词对应的第一纵向量,确定所述第一横向量。
在其他实施例中,所述第二确定模块包括:
第二分词处理模块,用于对所述每一候选答案进行分词处理,得到答案词集合;
第六确定模块,用于从所述答案词集合中确定所述每一候选答案的第一答案词;
第二匹配模块,用于在共现词库中匹配与所述第一答案词对应的共现词对;其中,所述共现词库中的共现词对包括答案词和所述答案词的向量;
第七确定模块,用于根据所述答案词的向量,确定与每一所述第一答案词对应的词纵向共现向量为所述第二纵向量。
在其他实施例中,所述第二确定模块包括:
第八确定模块,用于确定所述每一候选答案中的至少两个第一答案词之间的词性作用关系为第二词性关系;根据所述第二词性关系和与所述至少两个第一答案词对应的第二纵向量,确定所述第二横向量。
在其他实施例中,所述第三确定单元包括:
第九确定模块,用于根据所述第一横向量和所述每一候选答案的第二横向量,在第一预设条件下确定所述第一问题词与所述每一候选答案的相关度值为第一相关度值;
加权计算模块,用于对每一候选答案的全部第一相关度值在第二预设条件下进行加权计算,得到所述待解答问题与对应的候选答案之间的相关度值。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明装置实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。
需要说明的是,本发明实施例中,如果以软件功能模块的形式实现上述的问答匹配方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
对应的,本发明实施例提供一种问答匹配设备,图6为本申请实施例六问答匹配设备的组成结构示意图,如图6所示,所述问答匹配设备600至少包括:处理器601、通信接口602和配置为存储可执行指令的存储介质603,其中:
处理器601通常控制所述问答匹配设备600的总体操作。
通信接口602可以使问答匹配设备通过网络与其他终端或服务器通信。
存储介质603配置为存储由处理器601可执行的指令和应用,还可以缓存待处理器601以及问答匹配设备600中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(flash)或随机访问存储器(randomaccessmemory,ram)实现。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(readonlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。