本发明涉及智能问答领域,尤其涉及一种抽取式的实时问答方法及系统。
背景技术:
在抽取式问答系统中,为了回答用户提出的问题,系统需要从给定的文档中找出一段合适的文本片段来做为答案。传统的方法一般先通过建模问题和文档之间的注意力交互来探测答案在文档中出现的两个边界位置,也即答案片段在文档中的开始位置和答案在文档中的结束位置。然后,根据答案在文档中出现的位置选择出对应的文本片段做为答案。如果用户针对同一篇文档提出了若干个问题,为了从该文档中找到所有的答案,系统需要针对每一个问题,分别计算该问题与同一篇文档的交互来探测每一个问题的答案边界。这样做虽然能找到所有问题的答案,但是需要对同一篇文档进行多次编码,并分别计算每个问题与文档的注意力交互。对于时效性要求较高的系统而言,这是难以接受的。
为了提高问答系统的时效性,现有的方法通过预先计算好文档中所有候选答案的编码表示,然后把抽取式问答变成一个答案检索过程。具体而言,考虑到抽取式问答系统的特点,任何问题的答案都是给定文档中的一个文本片段。现有方法先通过枚举文档中的所有的文本片段构造出整个候选答案集;然后对每一个候选答案都预先计算好其对应的上下文编码;接着,当回答用户的问题时,先将问题映射成与候选答案编码所在嵌入空间里的一个编码向量,再计算问题编码和每一个候选答案编码之间的相似度。最后,返回与问题编码打分最高的候选做为最终答案。
上述基于检索的问答系统虽然能满足系统的实时应答要求,但是由于严格限制问题和文档(候选)之间的注意力交互,并且最终答案仅仅通过计算问题编码与候选编码的相似度得出,这样会导致检索到的答案与真实答案之间不完全一致。例如,给定一篇关于篮球运动员“姚明”的一个百科文档,文档中含有以下片段:2016年4月4日,姚明与前nba球星沙奎尔·奥尼尔和艾伦·艾弗森一同入选奈史密斯篮球名人纪念堂。对于问题“谁和姚明一同入选了奈史密斯篮球名人纪念堂”,现有的基于检索式的问答系统往往直接返回“艾伦·艾弗森”做为答案,然而真实答案应该是“沙奎尔·奥尼尔和艾伦·艾弗森”。也就是说,现有方法无法精确到真实答案所在的位置,存在着预测不准确的问题。
技术实现要素:
为了解决上述问题,本发明旨在提供一种抽取式的实时问答方法及系统。本发明既能保证应答的即时性,又可以提高回答准确率。
根据本发明一个方面,提供了一种能够实时、准确地从文档中找到所给定问题的答案的方法,包括如下步骤:
1)建立一个多任务神经网络,包括文档编码器、问题编码器和排序器。其中,文档编码器和问题编码器是共享同一套训练参数的预训练语言模型网络,排序器是一个多层前馈神经网络。
2)采用反向传播算法有监督地训练所述多任务神经网络的权重参数。
3)用训练好的文档编码器离线预计算事先指定的文档中各候选答案片段的上下文表示向量。
4)对于任一用户输入的问题,用训练好的问题编码器在线编码该问题的表示向量。
5)计算问题的表示向量和候选答案的上下文表示向量之间的相似度。
6)根据所计算的相似度,找到打分最高的候选答案所在文档中的具体位置边界信息。
7)根据6)所得出的位置边界信息,通过固定位置的一个边界并滑动另一边界或者同时滑动两个边界(滑动窗口的大小由事先指定),构造出高质量的候选答案。
8)对7)得到的高质量的候选答案用联合训练好的排序器对其进行细粒度的排序,选择出排序在最前的答案做为最终答案。
根据本发明的另一方面,提供了一种实时问答系统,包括:
1)答案边界探测模块,用于根据输入的问题在文档中快速定位到答案片段的大体位置边界信息。
2)候选答案展开模块,用于根据答案边界探测模块确定的位置边界信息自动地构造出高质量的候选答案。
3)候选排序模块,该模块和答案边界探测模块联合训练,用于细粒度地对问题和候选答案展开模块输出的高质量候选进行相似度打分,确定候选的相关性,并根据相关性程度对所述候选答案进行排序。
与现有技术相比,本发明的积极效果为:
本发明在接收到用户输入的问题信息之后,不仅可以高效地利用检索式的方法快速探测到初始答案的边界,还可以利用初始答案在文档中的边界信息构造出潜在的、更好的候选答案。并且,本发明联合训练答案边界探测模块和候选排序模块,使得候选排序模块能够充分利用候选所在的上下文信息与问题的匹配程度对候选进行排序。将本发明应用于实时问答系统中,不仅可以满足系统的时效性要求,还可以提高回答的准确性。
附图说明
图1是本发明实施例提供的一种实时问答系统流程示意图。
图2是本发明实施例提供的一种实时问答方法的架构示意图。
具体实施方式
为了进一步说明本发明的目的、技术方案的特点和优点,以下结合附图,对本发明进行进一步的详细说明。此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
在具体部署神经网络系统之前,一般先通过训练神经网络模型,然后才能用其进行推理。优选地,本发明所提供的方法也有两个阶段,包括训练阶段和推理阶段。
如图1所示,一种实时问答方法,在推理阶段包括以下步骤:
步骤1,用训练好的文档编码器离线预计算事先指定的文档中各候选答案片段的上下文表示向量。在这里,文档中的任意的文本片段都可以当做候选。比如,文档中含有“姚明与前nba球星沙奎尔·奥尼尔和艾伦·艾弗森一同入选奈史密斯篮球名人纪念堂”这个片段,那么“艾伦·艾弗森”、“沙奎尔·奥尼尔和艾伦·艾弗森”、“名人纪念堂”、“艾伦·艾弗森一同入选”等都可以做为候选答案。每一个候选答案由其在文档中的开始词和结尾词的上下文向量表示链接形成。
步骤2,对任意给定的问题,通过预计算好的问题编码器计算出对应的问题编码向量。
步骤3,计算问题的表示向量和候选答案的编码向量之间的相似度,选择打分最高的候选做为初始答案,并找到该初始答案在文档中的具体边界位置,具体包括,初始答案在文档中的开始位置和结尾位置。
步骤4,根据步骤3得到的初始答案的边界位置信息,通过移动、修改初始答案的边界从而获取到跟初始答案在空间距离较近,在具体答案内容上相似而又不完全一样的高质量候选。具体地,可以通过固定位置的一个边界并滑动另一边界或者同时滑动两个边界(滑动窗口的大小由事先指定)。比如,对于给定问题“谁和姚明一同入选了奈史密斯篮球名人纪念堂”,假定步骤3找出的初始答案为“艾伦·艾弗森”,初始答案所在的文档的上下文内容为“……姚明与前nba球星沙奎尔·奥尼尔和艾伦·艾弗森一同入选奈史密斯篮球名人纪念堂……”。通过固定初始答案“艾伦·艾弗森”的右边界,移动其左边界,可以得到如下高质量的候选:“艾伦·艾弗森”、“沙奎尔·奥尼尔和艾伦·艾弗森”、“前nba球星沙奎尔·奥尼尔和艾伦·艾弗森”、“球星沙奎尔·奥尼尔和艾伦·艾弗森”等。
步骤5,利用联合训练好的排序器对步骤4构造出来的候选答案进行细粒度的排序。排序时,利用问题编码和候选编码的匹配程度来度量排序的顺序。具体地,通过将问题的表示向量和每一个候选答案的上下文表示向量拼接在一起,再通过做个简单的、细粒度层次的交互,比如通过一个两层的前馈神经网络。接着,再将交互后得到的向量表示过一个线性打分网络层。最后,根据打分的结果,选择打分最高的候选作为最终的答案。
本实施例中,预设的文档编码器、问题编码器和排序器在具体部署使用之前可通过在训练数据集上微调预训练语言模型而获得。总体上,如图2所示的具体实施例示例图之一,本发明在训练时共享文档编码器和问题编码器的模型参数,同时通过端到端的形式联合训练文档编码器、问题编码器和排序器。其中,文档编码器和问题编码器及内积操作可以视作为一个答案边界探测模块的具体实施例,而排序器也可视之为候选答案重排模块的具体实施例。答案边界探测模块和候选答案重排模块都对问题和文档(或候选答案)分别进行独立编码,也即文档端和问题端没有任何形式的注意力交互。图中的红色实心圆表示词的开始向量,蓝色表示词的结尾向量。
具体而言,本发明通过以下步骤来训练得到预训练文档编码器、问题编码器和排序器,包括:
1)基于真实答案在文档中的位置,通过启发式的人为移动、修改初始答案的边界,构造出与真实答案在内容上相似或者重叠的候选答案供排序器学习用。具体地,首先通过限制真实答案的开始位置,然后滑动原结尾边界,对于每一次滑动,构造出一个以真实答案的开始位置为开始位置,以滑动后的位置为结尾位置的候选答案。在这里,滑动窗口的大小可以根据预先设定的几个不同窗口值的大小在开发集上模型的效果来确定。然后,限定真实答案的结尾位置,滑动原开始位置,类似构造候选答案。接着,同时移动或修改真实答案的开始位置和结尾位置若干个窗口(窗口值预设为固定常数),构造出若干个候选答案。最后,从文档中随机采样若干文本片段作为候选使得总采样的候选答案的个数达到预先设置的大小。
2)用预训练语言模型对文档中的每一个词学习两个向量表示,一个向量用于表示该词作为开始边界的向量表示,另一个用于表示该词作为结尾边界的向量表示。具体地,对于给定问题q={q1,···,qn},文档d={d1,···,dm}和答案a=(s,e),其中s和e分别表示真实答案片段在文档中的起始位置和结尾位置;我们首先运用预训练好的预训练语言模型,比如bert,roberta等,建立文档的上下文表示h={h1,···,hm}。在这里,hi∈rd是预训练语言模型对词di的编码表示,d是隐状态的维度。进一步,我们将每个词的表示hi拆分成两个维度相同的向量hi1,hi2,也即hi=[hi1,hi2]∈rd。
3)用同一个预训练语言模型来将问题编码成一个固定长度的问题向量q。特别地,可以简单地使用特殊符号[cls]对应的输出作为问题q的表示。此外,把问题向量q也拆分为[q1,q2]。
4)根据如下公式计算第i个词做为答案的开始位置的概率:
5)同理,根据步骤3)类似地算出第i个词做为答案的结尾位置的概率
6)在得到预测的概率分布之后,通过计算预测概率分布和真实概率的差异度来做为训练答案边界探测模块的损失。这里的差异度可以采用交叉熵或是kullback-leibler散度等损失函数来度量。特别地,可以通过如下计算方式:
在这里,qs与qe是真实的概率分布,可以事先知道。cel表示交叉熵损失函数。
7)根据1)中预先构造的候选答案集,对于每一个候选答案将其表示成候选答案在文档中对应的开始边界词的开始向量和结尾边界词的结尾向量的拼接。值得注意的是,本发明强调候选答案重排模块与答案边界探测模块共享候选答案的表示,使得候选重排模块能够充分利用候选答案的上下文表示进行排序建模。具体而言,对于以文档中第i个词为开始位置,以第j个词为结尾位置的候选答案ai:j,我们将其表示为ai:j=[hi1,hj2]∈rd。对于问题向量q,候选答案ai:j的得分计算方式如下:
si:j=w2(relu(w1xi:j))
xi:j=[ai:j,q,ai:j q,ai:j-q,ai:j*q]
其中,xi:j为问题q与候选答案ai:j之间的匹配向量,w1、w2为待学习的参数。基
于候选答案ai:j的得分,整个候选答案重排模块的目标函数定义为:
其中as:e为真实答案,l为所有候选答案的集合。
8)计算整个模型的目标函数,联合优化答案边界探测模块和候选答案重排模块。具体地,将答案边界探测模块的目标损失函数和候选重排模块的目标损失函数同时最小化。此外,两个模块的目标函数之间可以设置一个调和系数去平衡整个模型参数空间的优化方向。具体的计算方式如下:
其中,λ是调和系数,
基于以上的问答方法,本发明还提供实现了一种实时问答系统,包括如下几个模块:
答案边界探测模块,用于根据用户输入的问题信息快速探测到一个初始答案。具体地,所述模块进一步包括:文档编码模块,用于预先离线计算文档中所有的候选答案表示;问题编码模块,用于将问题信息转换成向量表示;检索模块,用于根据问题的向量表示和候选答案的向量表示快速检索初始答案。
候选答案展开模块,用于根据答案边界探测模块检索到的初始答案及其在文档中的位置信息高效地构建潜在的、可能的更好的高质量候选。优选地,所述模块通过移动或是修改初始答案的边界位置来构造候选。优选地,建立所述高质量的候选是以候选本身和候选与初始答案之间的内容相似性为导向进行的。
候选答案重排模块,用于细粒度地计算问题和候选答案展开模块输出的高质量候选之间的语义匹配度。优选地,问题和候选的匹配度通过候选的上下文表示与问题的表示之间的语义距离来获得。比如,通过计算问题向量和候选向量的内积等。
总体来看,本发明提供的技术方案,一方面,可以利用检索式问答的优点快速定位到初始答案,并根据初始答案在文档中所处的位置信息,快速有效地构造出高质量候选答案集。另一方面,本发明提出的联合训练方式,可以充分利用答案边界探测和候选答案排序两个任务的内在关联性,使得候选排序器可以充分利用候选答案所在的上下文信息与问题信息的匹配度进行细粒度的排序。为验证本发明的实验效果,在公开的数据集piqa-squad上进行试验。数据集的详细描述可参见文献(seo,minjoon,tomkwiatkowski,ankurparikh,alifarhadi,andhannanehhajishirzi.″phrase-indexedquestionanswering:anewchallengeforscalabledocumentcomprehension.″inproceedingsofthe2018conferenceonempiricalmethodsinnaturallanguageprocessing,pp.559-564.2018.)。实验结果表明,本发明提供的技术方案相比于主流的、基于检索的方式而直接获得答案的强基线方法在em指标上要高出2.6个百分点,在f1评价指标上要高出2.0个百分点。
上述问答方法及系统可以应用到对时效性要求较高的问答系统,特别是搜索引擎,语音助手等实时问答系统。
以上公开的本发明的具体实施例和附图,其目的在于帮助理解本发明的内容和精髓,并不用以限制本发明。凡在本发明的精神和原则范围之内,所做的任何修改、替换和改进等,均应包含在本发明保护的范围之内。
1.一种实时问答方法,其步骤包括:
1)建立一个多任务神经网络并训练所述多任务神经网络的权重参数;其中,所述多任务神经网络包括文档编码器、问题编码器和排序器,文档编码器和问题编码器为共享同一套训练参数的预训练语言模型网络,排序器是一个多层前馈神经网络;
2)用训练好的文档编码器离线预计算设定文档中各候选答案的上下文表示向量;
3)对于输入的问题,用训练好的问题编码器在线编码该问题的表示向量;
4)计算该问题的表示向量与每一所述候选答案的上下文表示向量之间的相似度;
5)找到相似度最高的候选答案在该设定文档中的位置边界信息;
6)通过修改该位置边界信息,从该设定文档中确定出若干高质量候选答案;
7)用训练好的排序器对得到的各高质量候选答案进行排序,选择出排序在最前的高质量答案做为该问题的最终答案。
2.如权利要求1所述的方法,其特征在于,确定出若干高质量候选答案的方法为:通过修改该边界位置信息从该设定文档中获取一更新后的候选答案,然后计算该更新后的候选答案与该边界位置信息对应后续答案的空间距离;如果空间距离小于设定阈值,则将当前更新后的候选答案作为一个高质量候选答案。
3.如权利要求1或2所述的方法,其特征在于,排序器对得到的各高质量候选答案进行排序的方法为:将问题的表示向量和每一高质量候选答案的上下文表示向量拼接在一起,然后将其输入一前馈神经网络进行交互;然后将交互后得到的向量表示输入一个线性打分网络层得到打分结果,然后根据打分结果对各高质量候选答案进行排序。
4.如权利要求1所述的方法,其特征在于,训练所述多任务神经网络的方法为:
1)选取一训练文档并设置每一问题的真实答案在该训练文档中的位置,以及通过修改该真实答案的边界得到与该真实答案的候选答案位置,得到每一问题对应的候选答案集;
2)对于一个设定问题,用预训练语言模型对该训练文档中的每一个词学习两个向量表示,即该词作为设定问题开始边界的向量表示以及该词作为设定问题结尾边界的向量表示;用该预训练语言模型来将该设定问题编码成一个固定长度的问题向量q;
3)预测该训练文档中第i个词作为该设定问题的答案的开始位置的概率
4)对于该设定问题对应的候选答案集l中的每一个候选答案,将该候选答案在该训练文档中对应的开始边界词的开始向量和结尾边界词的结尾向量的拼接作为该候选答案的向量表示;其中排序器与预训练语言模型网络共享候选答案的向量表示;对于以该训练文档中第i个词为开始位置、以第j个词为结尾位置的候选答案ai:j,其对应的向量表示为ai:j,q为该设定问题对应的向量,则候选答案ai:j得分si:j=w2(relu(w1xi:j)),xi:j=[ai:j,q,ai:j q,ai:j-q,ai:j*q];xi:j为问题q与候选答案ai:j之间的匹配向量,w1、w2为参数;基于候选答案ai:j的得分,确定排序器的目标函数为
5)计算所述多任务神经网络的目标函数
5.如权利要求1所述的方法,其特征在于,采用反向传播算法有监督地训练所述多任务神经网络的权重参数。
6.一种实时问答系统,其特征在于,包括候选答案展开模块和多任务神经网络,所述多任务神经网络包括文档编码器、问题编码器和排序器,文档编码器和问题编码器为共享同一套训练参数的预训练语言模型网络,排序器是一个多层前馈神经网络;其中
所述预训练语言模型网络,用于计算问题的表示向量以及设定文档中各候选答案的上下文表示向量;然后根据该问题的表示向量与每一所述候选答案的上下文表示向量之间的相似度确定对应候选答案在该设定文档中的位置边界信息;
所述候选答案展开模块,用于通过修改候选答案的位置边界信息,从该设定文档中确定出对应候选答案的若干高质量候选答案;
所述排序器,用于对得到的各高质量候选答案进行排序,选择出排序在最前的高质量答案做为该问题的最终答案。
7.如权利要求6所述的系统,其特征在于,训练所述多任务神经网络的方法为:
1)选取一训练文档并设置每一问题的真实答案在该训练文档中的位置,以及通过修改该真实答案的边界得到与该真实答案的候选答案位置,得到每一问题对应的候选答案集;
2)对于一个设定问题,用预训练语言模型对该训练文档中的每一个词学习两个向量表示,即该词作为设定问题开始边界的向量表示以及该词作为设定问题结尾边界的向量表示;用该预训练语言模型来将该设定问题编码成一个固定长度的问题向量q;
3)预测该训练文档中第i个词作为该设定问题的答案的开始位置的概率
4)对于该设定问题对应的候选答案集l中的每一个候选答案,将该候选答案在该训练文档中对应的开始边界词的开始向量和结尾边界词的结尾向量的拼接作为该候选答案的向量表示;其中排序器与预训练语言模型网络共享候选答案的向量表示;对于以该训练文档中第i个词为开始位置、以第j个词为结尾位置的候选答案ai:j,其对应的向量表示为ai:j,q为该设定问题对应的向量,则候选答案ai:j得分si:j=w2(relu(w1xi:j)),xi:j=[ai:j,q,ai:j q,ai:j-q,ai:j*q];xi:j为问题q与候选答案ai:j之间的匹配向量,w1、w2为参数;基于候选答案ai:j的得分,确定排序器的目标函数为
5)计算所述多任务神经网络的目标函数
8.如权利要求6或7所述的系统,其特征在于,所述候选答案展开模块确定出若干高质量候选答案的方法为:通过修改该边界位置信息从该设定文档中获取一更新后的候选答案,然后计算该更新后的候选答案与该边界位置信息对应后续答案的空间距离;如果空间距离小于设定阈值,则将当前更新后的候选答案作为一个高质量候选答案。
9.如权利要求6所述的系统,其特征在于,所述排序器对得到的各高质量候选答案进行排序的方法为:将问题的表示向量和每一高质量候选答案的上下文表示向量拼接在一起,然后将其输入一前馈神经网络进行交互;然后将交互后得到的向量表示输入一个线性打分网络层得到打分结果,然后根据打分结果对各高质量候选答案进行排序。
10.如权利要求6所述的系统,其特征在于,采用反向传播算法有监督地训练所述多任务神经网络的权重参数。
技术总结