1.本发明涉及自动问答系统,尤其涉及一种基于多文本的自动问答系统实现方法。
背景技术:2.自动问答技术广泛使用在搜索引擎与对话机器人中。例如在百度中搜索时,传统的搜索引擎会通过问题的关键字与文章进行模糊匹配,然后通过pagerank算法给出相关文章的排序,因此传统的搜索是无法直接给出问题的答案的,只能给出排序后的相关文章。此外,一旦问题需要跨越多个文本才可以得到答案时,传统的搜索算法是很难得到最终需要的文章组合的。
技术实现要素:3.发明目的:本发明的目的是提供一种实现将难度较高的多文本问答模块拆分成若干份子模块,再通过对各个子模块分别优化,进而组合达到最优的基于多文本的自动问答系统实现方法。
4.技术方案:本发明的自动问答系统实现方法,将多文本问答模块,拆分成三个模块,通过对各个子模块分别优化,最终实现组合达到最优;所述三个子模块分别为:问题分类模块、支持文章抽取模块、问答模块,每个子模块负责一个独立的功能,各个模块之间相互配合,最终实现完整自动问答的功能,实现步骤如下:
5.s1,所述问题分类模块将roberta作为基准的预训练分类模型,将问题分成两大类:桥接型问题和比较型问题,所述比较型问题分为抽取比较问题和是否比较问题;
6.s2,所述支持文章抽取模块根据不同的问题类型采用不同的模型从候选文章选取支持文章,支持文章是指候选文章中能用于回答问题的文章;
7.s3,所述问答模块将问题、相关文本作为输入,对于是否比较问题,采用roberta预训练分类模型,直接给出答案:是或者否;对于桥接问题和抽取比较问题,均采用roberta预训练问答模型,分别给出答案在文本中的开始和结束位置,依据得分给出最优答案。
8.进一步,所述问题分类模块,采用roberta预训练语言模型,在其网络最后一层加上softmax层,将问题分为桥接问题、抽取比较问题和是否比较问题三大类;
9.所述比较问题是指问题中有两个实体,需要比较这两个实体的某种属性;对于比较问题,根据答案的来源不同,将比较问题分为是否比较问题和抽取比较问题;
10.所述桥接问题是指存在一个桥接实体将两篇支持文章链接起来,答案需要经过一层推理之后才能知道的问题。
11.进一步,所述支持文章抽取模块,对比较问题和桥接问题分别采用不同的模型;对于比较问题,直接将问题和文章输入独立文章打分器中,独立文章打分器采用roberta预训练语言模型,在网络最后一层加上softmax层,利用softmax层输出的概率作为该问题与该文章的相关程度,将所有文章按照相关程度进行从大到小的排序,取排名前两个作为支持文章;
12.对于桥接问题,由于问题与支持文章既有“直接相关”又有“间接相关”关系,每次需要综合两篇文章和问题判断相关性。
13.进一步,对所述桥接问题的处理,采用由粗到细的架构,粗筛采用句子编码器,分别对问题和文章组合进行编码,然后计算问题和文章组合的余弦距离,用于表征两者的相关程度;将文章组合按照与问题的相关程度,从大到小进行排序;
14.细筛采用roberta预训练语言模型,在网络最后一层加上softmax层,利用softmax层输出的概率作为该问题与该文章的相关程度,将所有文章按照相关程度进行从大到小的排序,取排名第一的文章组合作为黄金组合。
15.进一步,对所述细筛阶段的数据集,采用自动扩充数据集的方法,每次去掉“正例”中的一个不相关句子从而多生成一个“正例”,以缓解训练集中的类别不平衡问题。
16.进一步,所述问答模块中对于是否比较问题,采用roberta预训练语言模型,在网络最后一层加上softmax层,输出只有“是”或者“否”两类。
17.进一步,所述问答模块对于抽取型比较问题和桥接问题,采用用于问答的roberta预训练语言模型,同时输出答案在支持文章中的开始位置和结束位置;结合开始位置和结束位置的合法组合,给每种组合一个打分,然后依据最终的打分,将所有合法的组合排序,取分值最高的组合作为最终输出的结果。
18.本发明与现有技术相比,其显著效果如下:
19.1、本发明将多文本问答问题转化拆分成为若干个子模块,每个模块能单独训练,可以减少每个子模块需要的算力,并且由于各个子模块可以独立训练,因此可以分布在多台设备中计算;并且由于单个任务都较为简单,更加适合“预训练-微调”的技术架构,在单个子任务上的调优会比整体调优更加容易;
20.2、本发明改进了一种针对于桥接问题的支持文章筛选方法,采用粗筛加细筛的方式,通过粗筛的方式,首先过滤掉绝大多数干扰文章组合,紧接着通过细筛的方式,给每种组合都有一个准确的相关性打分,最终选择打分最高的组合,此外在细筛阶段,通过数据增强(data augmentation)的方式,扩充了正样本集,从而使得正负样本均衡,这样可以使得分类模型得到更好的结果;粗筛、细筛、数据增强,不仅解决了文章两两组合带来的数据量剧增问题,也解决了在相关文章数据中严重的正负例样本不均衡问题;
21.3、本发明改进了问答模型,对于是否问题直接转化为分类任务;而对于比较抽取问题和桥接抽取问题,将二者结合起来,并解决了比较问题数据稀疏的问题,相比于单独训练两个模型,可以达到总体更高的性能。
附图说明
22.图1为本发明的总流程示意图;
23.图2为本发明的桥接问题和比较问题分类模块训练损失函数随轮数的关系图;
24.图3为本发明的是否型问题和抽取型问题分类模块训练损失函数随轮数的关系图;
25.图4为本发明的句子编码器对桥接问题相关文章“黄金组合”打分分布;
26.图5为本发明的是否型问题问答模块模型损失函数随轮数的关系示意图;
27.图6为本发明的比较问题问答模块模型损失函数随轮数的关系示意图;
28.图7本发明的抽取型问题问答模块模型损失函数随轮数的关系示意图。
具体实施方式
29.下面结合说明书附图和具体实施方式对本发明做进一步详细描述。
30.基于bert(bidirectional encoder representation from transformers)的改进后的预训练语言模型roberta(a robustly optimized bert pretraining approach),采用更多的数据量,更大的批大小(batch size),在更长的训练时间中可以得到更好预训练语言模型。本发明将roberta预训练语言模型应用于多文本的自动问答之中,充分发挥其对于处理文本数据的优越性能,并提出一种复杂的流水线方法,将整个问答任务,逐步拆分成各个小任务,在每个小任务上基于roberta预训练语言模型进行微调(fine-tuning)。通过这种组合方式,可以在无需引入更为复杂的网路结构的基础上,仅依赖于对预训练语言模型在各个任务上的微调,即可达到预期结果。
31.本发明将难度较高的多文本问答模块,拆分成若干份子模块,通过对各个子模块分别优化,进而组合达到最优效果。基于多文本的问答是指需要综合多篇文章中找出答案,属于自动问答的技术领域。首先,将roberta作为基准的预训练分类模型,将问题分成两大类:“比较问题”和“桥接问题”。然后,对于“比较问题”,依据答案类型不同,分为“是否比较问题”和“抽取型比较问题”。此外,对于给定的问题,需要从候选文章中找到支持文章。最后将问题、相关文本作为输入,对于“是否比较问题”,采用roberta预训练分类模型,直接给出答案:是或者否;对于“抽取比较问题”,采用roberta预训练问答模型,分别给出答案在文本中的开始和结束位置,依据得分给出最优答案。
32.本发明通过建立一套完整的流水线,将一个较为困难的问答问题拆分成三大子模块,分别为“问题分类模块”、“支持文章抽取模块”和“问答模块”。每个子模块负责一个独立的功能,各个模块之间相互配合,最终实现完整自动问答的功能。问答作为自然语言处理的一部分,目前主流技术都是采用基于深度神经网络的预训练语言模型(pre-training language model),然后针对于特定问题数据集进行微调(fine-tuning)。本发明中的自动问题系统采用的预训练语言模型为roberta,数据集采用hotpotqa测评数据,该数据集由斯坦福大学和蒙特利尔大学联合发起,用于评测多步推理阅读理解。
33.问题分类模块,采用roberta预训练语言模型,在网络最后一层加上softmax层,用于分类。将问题首先分成比较型(comparison)和桥接型(bridge)两大类。所谓的比较问题是指问题中通常有两个实体,需要比较这两个实体的某种属性,例如“请问迈克尔乔丹与科比布莱恩特谁拥有更长的nba职业生涯?”,回答此类问题一般需要综合讲述两个实体的文章进行分析得到。而桥接问题一般是答案需要经过一层推理之后才可以知道,例如“请问现在美国总统的家乡是在哪里?”,要回答出此类问题,需要首先知道现今美国总统是谁,回答此类问题需要综合两篇文章推理得到。桥接问题的答案来自于文章之中,而比较问题的答案除了来自于文章之中,还有可能是“是否”。答案为“是否”和答案来自于文章之中所采用的问答模型是不一样的,因此对于比较问题还需要继续细分为两类:答案为是否和答案来自文章中,此二分类模型同样采用roberta预训练语言模型,在网络最后一层加上softmax层,用于分类。因此完整的问题分类模块由上述两个分类模型堆叠而成,最终将问题分为三类:桥接问题、是否比较问题和抽取比较问题。问题分类模块的输入只有问题,不依赖于文
章。由于桥接问题和抽取比较问题,所采用的问答模型是一致的,因此会合并在一起用于问答模型的训练。
34.支持文章抽取模块,针对于比较问题和桥接问题分别采用不同的模型,从10篇候选文章集中选择两篇支持文章。对于比较问题,由于问题与支持文章具有“直接相关”关系,因此可以直接将问题和文章输入到分类模型中,此分类模型采用roberta预训练语言模型,在网络最后一层加上softmax层,可以利用softmax层输出的概率作为该问题与该文章的相关程度,将所有文章按照相关程度进行从大到小的排序,取前两个作为最后的结果。对于桥接问题,问题与相关文章既有“直接相关”又有“间接相关”关系,因此并不能单纯依赖于问题和文章两个输入即可判断是否相关,每次需要综合两篇文章和问题才可以准确的判断相关性。对于10篇候选文章,所有可能不同的两篇文章组合共有45种(不考虑顺序情况),而其中只有1个组合是需要找到的支持文章组合。如果直接将该组合数据集用于分类,不仅数据集的规模会扩充4.5倍,大大增加模型的训练时间,而且会出现严重的类别不平衡问题(正例/负例=1/44)。
35.为了解决文章组合导致数据集剧增的问题,需要采用由粗到细的架构(coarse-to-fine)设计。“粗筛”采用句子编码器(sentence encoder),分别对问题和文章组合进行编码,然后计算两者的余弦距离用于表征两者的相关性。将90种组合按照与问题的相关性,从大到小进行排序。实验结果表明,取排序后的文章的前20个,有97%的概率包括需要寻找的相关文章组合,因此在综合计算时间和准确率的基础上,可以采用排序后的前20项作为下一阶段“细筛”的数据集。“细筛”采用roberta预训练语言模型,在网络最后一层加上softmax层,可以利用softmax层输出的概率作为该问题与该文章的相关程度,将所有文章按照相关程度进行从大到小的排序,取第一个作为最后的结果。不过“细筛”阶段的数据集仍然存在严重的类别不平衡性,最大可以达到:正例/负例=1/19。
36.为了解决在支持文章抽取“细筛”阶段的数据集不平衡性问题,采用自动扩充数据集的方法。扩充的方法可以每次去掉“正例”中的一个不相关句子从而多生成一个“正例”,通过这种方法,最终可以大大缓解训练集中的类别不平衡问题。
37.问答模块,在问答模块中,对于是否型问题,由于输出只有“是”或者“否”两类,因此可以当做一个二分类问题。同样采用roberta预训练语言模型,在网络最后一层加上softmax层,用于分类。
38.问答模块中对于抽取比较问题和桥接问题,采用用于问答的roberta预训练语言模型,同时输出答案在目标文章中的开始位置和结束位置,需要注意的是开始位置和结束位置是多个,并随同输出的是每个位置的打分,可以结合开始位置和结束位置的合法组合(结束位置在开始位置之后的组合),给每种组合一个打分,然后依据最终的打分将所有合法的组合排序,取分值最高的组合作为最终输出的结果。
39.如图1所示为本发明的自动问答系统实现方法的流程图,具体实现过程如下:
40.步骤一,问题分类
41.首选需要将问题分成两大类:比较型与桥接型。对问题分类时,输入只需要该问题对应的文本即可。由于文本数据是无法直接丢给神经网络进行计算的,因此需要先将文本转换为张量(tensor),需要用到roberta所对应的分词器(tokenizer),将文本转化为词向量标识(input ids),掩蔽注意力矩阵(attention mask),同时将比较型的问题的标签
(label)置为1,桥接问题的标签置为0。准备好的数据将作为roberta文本分类预训练语言模型的输入,采用adam算法进行梯度更新,用f1值作为分类模型的评价指标。如图2所示,在3个轮次(epoch)模型即可收敛到稳定的结果。
42.对于比较问题,还需要细分为是否型和抽取型两种类型。训练模式与上一阶段问题分类模型相同,只是训练数据发生变化(只选择比较问题作为训练数据)。如图3所示,在3个轮次(epoch)模型即可收敛到稳定的结果,再结合表1中f1的结果,可以发现在第3轮后,模型会出现过拟合,因此选择第3轮的结果作为最终的结果。
43.表1是否型/抽取问题二分类结果
44.epochtraining lossvalidation lossaccuracyf1precisionrecall10.0336000.0468200.9919300.9869850.9806030.99345020.0251000.0443720.9919300.9869850.9806030.99345030.0213000.0358150.9939480.9902280.9848810.99563340.0096000.0436980.9932750.9891540.9827590.99563350.0030000.0441770.9932750.9891540.9827590.995633
45.步骤二,比较问题相关文章选取模块
46.对于比较问题,相关文章的选取,只需要考虑文章本身与问题的相关程度即可,各个文章之间是相互独立的,因此可以看作输入为问题和文章的二分类问题。与问题分类模型相似,同样采用roberta作为预训练语言模型,输入为问题和每篇文章。每篇文章中的所有句子会直接用空格拼接后与对应的问题一同作为模型输入。其损失函数随轮数的关系如图4所示,再结合表2可以发现,在第4轮后,f1值开始降低,模型出现过拟合,因此选择第4轮的结果作为最终的结果。
47.表2比较问题相关文章选取结果
48.epochtraining lossvalidation lossaccuracyf1precisionrecall10.0487000.0422570.9892070.9736930.9643800.98318820.0295000.0360450.9918030.9800130.9709570.98924030.0183000.0370080.9928960.9826490.9751660.99024940.0066000.0413090.9940570.9853510.9875040.98318850.0107000.0450630.9937840.9847580.9793810.990249
49.步骤三,问答模块针对不同的问题类型分别进行处理
50.(31)桥接问题相关文章选取模块
51.对于桥接问题,相关文章的选择,不仅需要考虑文章本身与问题的相关程度,而且对于间接相关文章而言,需要考虑其与直接相关文章的关系,因此需要将两者结合起来一起考虑,通过上文提到的“粗筛”和“细筛”两个过程,最终选取相关的文章组合。
52.在“粗筛”阶段,从候选的10篇文章中选择2篇文章(不考虑顺序),会产生45对文章组合,且其中只有一个组合是相关组合,不妨称之为“黄金组合”。每个组合与对应的问题用句子编码器进行打分,其中句子编码器采用“cross-encoder/ms-marco-minilm-l-6-v2”预训练语言模型,它是cross-encoder中的一种,相比于bi-encoder更能捕捉两个句子之间的相似度,cross-encoder的输入为两个待评估的两个句子,输出介于0和1之间的值,表示输入两个句子直接的相似度。将每个问题与对应的45个文章组合打分,然后按照分值降序排
序,然后算出训练集中“黄金组合”在排序后结果中的排名。图5给出了“黄金组合”的打分的排名的分布情况,由图5可以看出绝大多数排名都在前10以内,而在20以内的高达98.5%,因此在兼顾计算效率与筛选准确率的情况下,可以选择20作为一个阈值,在排序后的数据集中,去掉排名20以后的数据后,作为“细筛”的输入。
53.经过“粗筛”阶段后,数据集中正例与负例的比例为1比19,仍然存在高度的不平衡。因此为了解决这个问题,需要扩充正例样本的数量。由于在训练集中,正例样本中的每个句子都可以知道是否与问题相关,因此一个简单的做法既是,每次去掉其中一个不相关的句子,这样就可以多生成一个正例。经过上述的数据增强工作,训练集中的正负例已接近平衡。然后将数据用与“比较问题相关问题选择模块”相同的模型,重新训练一个针对于桥接问题的文章组合“细筛”模型。
54.(32)是否问题问答模块
55.是否型问题的答案只有“是/否”(yes/no),因此可以把这类问题看作一个二分类问题。在是否问题问答模块的模型中,将答案为“是”的样本看作正例,反之,将答案为“否”的样本看作负例。而模型的输入除了问题之外,另外就是上述“比较问题”选出的两篇相关文章。由于roberta预训练文本分类模型最多只可以接受两个输入参数,因此需要将这两篇文章组合起来。该模块采用如下的组合方式,“{title1},{paragraph1}[doc]{title2},{paragraph2}”,其中tittle1和title2分别表示两篇文章的标题,paragraph1与paragraph2分别表示两篇文章的内容,“[doc]”是额外引入的分隔符。在roberta中新增一个token,是需要修改原始的网络结构,在“embedding”层增加一个“[doc]”特殊token。
[0056]
实验结果表明,模型损失函数随轮数的关系如图6所示,再结合表3可以发现,在第4轮后,f1值开始降低,模型出现过拟合,因此选择第4轮的结果作为最终的结果。
[0057]
表3是否型问题问答结果
[0058]
epochtraining lossvalidation lossaccuracyf1precisionrecall10.0553001.4086080.7983160.7994320.8284790.77235320.0219001.5800690.8081640.8108110.8328510.78990730.0046001.7757950.8262920.8178960.8999010.74958940.0037001.7890200.8362830.8340810.8824610.79073050.02.0472960.8300030.8255600.8856440.773176
[0059]
(33)抽取问题问答模块
[0060]
抽取型问题的问答模块,答案分布在两篇相关文章的任意的地方,因此需要采用和“是否问题问答模块”不同的问答模型。而对于问题是“桥接型”还是“比较型”并不会影响问答模块模型的设计,因此这两块可以合并在一起考虑。本模块采用roberta预训练自动问答模型,由于模型只接受两个输入,因此除了问题之外,还需要将这两篇文章组合起来。模型采用如下的组合方式,“{title1},{paragraph1}{title2},{paragraph2}”,其中tittle1和title2分别表示两篇文章的标题,paragraph1与paragraph2分别表示两篇文章的内容。与“是否问题问答模块”不同的是,去掉了分隔符“[doc]”,这是因为实验结果表明,去掉分隔符可以产生更好的结果。模型损失函数随轮数的关系如图7所示,最终的在验证集上的结果如表4。
[0061]
表4抽取型问答模块在验证集上结果
[0062]
exact matchf1precisionrecall0.6897940.826780.858420.83549
[0063]
由表4可知,通过将原始数据集进行划分,然后分别独立地在各个子模型上预训练微调,不仅可以得到更好的性能,而且降低各个子模型的调优的难度。
[0064]
本发明可以广泛应用于与多文本相关的问答系统中,此外该发明还可以应用于搜索引擎中的文章筛选,通过给定问题,依据本方法支持文章打分器给出相关文章的排名。
技术特征:1.一种基于多文本的自动问答系统实现方法,其特征在于,将多文本问答模块,拆分成三个模块,通过对各个子模块分别优化,最终实现组合达到最优;所述三个子模块分别为:问题分类模块、支持文章抽取模块、问答模块,每个子模块负责一个独立的功能,各个模块之间相互配合,最终实现完整自动问答的功能,实现步骤如下:s1,所述问题分类模块将roberta作为基准的预训练分类模型,将问题分成两大类:桥接型问题和比较型问题,所述比较型问题分为抽取比较问题和是否比较问题;s2,所述支持文章抽取模块根据不同的问题类型采用不同的模型从候选文章选取支持文章,支持文章是指候选文章中能用于回答问题的文章;s3,所述问答模块将问题、相关文本作为输入,对于是否比较问题,采用roberta预训练分类模型,直接给出答案:是或者否;对于桥接问题和抽取比较问题,均采用roberta预训练问答模型,分别给出答案在文本中的开始和结束位置,依据得分给出最优答案。2.根据权利要求1所述的基于多文本的自动问答系统实现方法,其特征在于,所述问题分类模块,采用roberta预训练语言模型,在其网络最后一层加上softmax层,将问题分为桥接问题、抽取比较问题和是否比较问题三大类;所述比较问题是指问题中有两个实体,需要比较这两个实体的某种属性;对于比较问题,根据答案的来源不同,将比较问题分为是否比较问题和抽取比较问题;所述桥接问题是指存在一个桥接实体将两篇支持文章链接起来,答案需要经过一层推理之后才能知道的问题。3.根据权利要求1所述的基于多文本的自动问答系统实现方法,其特征在于,所述支持文章抽取模块,对比较问题和桥接问题分别采用不同的模型;对于比较问题,直接将问题和文章输入独立文章打分器中,独立文章打分器采用roberta预训练语言模型,在网络最后一层加上softmax层,利用softmax层输出的概率作为该问题与该文章的相关程度,将所有文章按照相关程度进行从大到小的排序,取排名前两个作为支持文章;对于桥接问题,由于问题与支持文章既有“直接相关”又有“间接相关”关系,每次需要综合两篇文章和问题判断相关性。4.根据权利要求3所述的基于多文本的自动问答系统实现方法,其特征在于,对所述桥接问题的处理,采用由粗到细的架构,粗筛采用句子编码器,分别对问题和文章组合进行编码,然后计算问题和文章组合的余弦距离,用于表征两者的相关程度;将文章组合按照与问题的相关程度,从大到小进行排序;细筛采用roberta预训练语言模型,在网络最后一层加上softmax层,利用softmax层输出的概率作为该问题与该文章的相关程度,将所有文章按照相关程度进行从大到小的排序,取排名第一的文章组合作为黄金组合。5.根据权利要求4所述的基于多文本的自动问答系统实现方法,其特征在于,对所述细筛阶段的数据集,采用自动扩充数据集的方法,每次去掉“正例”中的一个不相关句子从而多生成一个“正例”,以缓解训练集中的类别不平衡问题。6.根据权利要求1所述的基于多文本的自动问答系统实现方法,其特征在于,所述问答模块中对于是否比较问题,采用roberta预训练语言模型,在网络最后一层加上softmax层,输出只有“是”或者“否”两类。7.根据权利要求1所述的基于多文本的自动问答系统实现方法,其特征在于,所述问答
模块对于抽取型比较问题和桥接问题,采用用于问答的roberta预训练语言模型,同时输出答案在支持文章中的开始位置和结束位置;结合开始位置和结束位置的合法组合,给每种组合一个打分,然后依据最终的打分,将所有合法的组合排序,取分值最高的组合作为最终输出的结果。
技术总结本发明公开了一种基于多文本的自动问答系统实现方法,将多文本问答模块,拆分成三个模块,通过对各个子模块分别优化,最终实现组合达到最优;所述三个子模块分别为:问题分类模块、支持文章抽取模块、问答模块,每个子模块负责一个独立的功能,各个模块之间相互配合,最终实现完整自动问答的功能。本发明将多文本问答问题转化拆分成为若干个子模块,每个模块能单独训练,可以减少每个子模块需要的算力,并且由于各个子模块可以独立训练,因此可以分布在多台设备中计算;并且由于单个任务都较为简单,更加适合“预训练-微调”的技术架构,在单个子任务上的调优会比整体调优更加容易。个子任务上的调优会比整体调优更加容易。个子任务上的调优会比整体调优更加容易。
技术研发人员:张恒 赵一铮
受保护的技术使用者:南京大学
技术研发日:2022.03.18
技术公布日:2022/7/5