基于多篇章多答案的阅读理解系统

2018-12-20 06:18:44刘家骅杜彦涛
中文信息学报 2018年11期
关键词:参考答案文档预处理

刘家骅,韦 琬,陈 灏,杜彦涛

(1. 清华大学 计算机系,北京 100084;2. 北京奇点机智科技有限公司,北京 100080)

0 引言

机器阅读理解任务是自然语言处理的核心问题。近年来各个数据集的发布,大大推进了机器阅读理解任务的发展。最近,在由中国中文信息学会和中国计算机学会主办,百度公司、中国中文信息学会评测工委会和中国计算机学会中文信息技术专委会承办的2018机器阅读理解技术竞赛中,发布了一个大规模的源于真实搜索引擎任务场景的中文阅读理解数据集,这将对中文阅读理解领域的发展产生很大的推动作用。

与其他早前发布的数据集相比,本次比赛的数据有如下特点: (1)来源于真实数据,包含不同类型的问题。数据不但包括事实类问题,还包括大量意见型问题,而意见型问题常常对应多个答案; (2)问题对应的文档以网页全文的形式给出,其长度也大大超过常见阅读理解模型的限制; (3)包括百度搜索和百度知道两部分不同来源的数据,相互间存在很大差异。这些特点决定了这个数据集比以往的机器阅读理解数据集具有更大的挑战性。为了应对这些挑战,我们从数据预处理、特征表示、模型选择、损失函数的设定和训练方法的选择等多个方面对系统进行改进。实验表明,每个部分的改进都对结果的提高做出了贡献。最终,我们的系统在ROUGE-L和BLEU-4上分别取得了63.38和59.23的分数,获得了2018机器阅读理解技术竞赛的第一名。

接下来,我们将从竞赛数据集和评价方法、数据预处理、模型结构、实现细节、实验结果和样例分析等方面分节介绍我们的工作,并在结论部分对工作进行总结。

1 竞赛数据集和评价方法

本次竞赛的数据集包括30万问题(其中训练集27万,开发集1万,测试集2万),其中20万来自先前公开发布的DuReader数据集[1],所有问题均为来自搜索引擎场景中用户的真实问题。每个问题提供最多5个候选文档以及人工撰写的一个或者多个答案作为参考答案。数据集分为百度搜索和百度知道两部分(以下简称搜索和知道),每一部分各包括15万问题。搜索部分的文档来源于百度搜索引擎提供的相关度最高的网页,而知道部分的文档来源于百度知道网站的站内搜索引擎提供的相关度最高的问题对应的网页。与大多数常用的阅读理解数据集不同的是,本次竞赛数据集提供的每个文档都包含来源网页的全文文本内容。

竞赛以测试集的人工标注答案为参考答案,采用ROUGH-L为主评价和指标,BLEU4作为评价指标,其中以ROUGH-L作为主评价指标。同时对于是非及实体类型问题,对ROUGE-L和BLEU4评价指标进行了轻微的改动,适当增加了正确识别是非答案类型及匹配实体的得分奖励,一定程度上弥补传统ROUGE-L和BLEU4指标对是非和实体类型问题评价不敏感的问题。

2 数据预处理

2.1 文档预处理

由于这次比赛数据集提供的每个文档都包含来源网页的全部文本内容,长度比其他常用数据集长很多,最长的文档包含多达9万多个词,大大超出了常用的机器阅读理解模型可以接受的范围(通常为数百词)。因此,我们需要对文档进行预处理,抽取出文档中可能含有答案的部分作为篇章输入,放入模型中进行训练和预测。

对于知道和搜索两部分数据,我们采取了不同的预处理方法。知道的数据来源是百度知道问答中相关问题的对应网页,所有内容都是与网页标题对应的问题(和用户提出的问题不一定相同)相关的信息。基于越前面的信息可能越有用的假设,对于知道数据里面的每一篇文档,我们将文档标题和所有段落顺次连接,中间插入特殊的符号表示段落分割,然后截取最前面不超过预设最大长度的内容,将得到的结果作为预处理的结果。

对于搜索部分的数据,文档包含一般网页的全部文本信息,前面部分的内容有可能与问题没有关系。因此,我们采取如下策略:

(1) 将标题和各段内容以特殊符号分隔后连接在一起,如果得到的结果没有超过预设最大长度,则将其作为预处理的结果;

(2) 否则,我们计算各段落和问题的BLEU-4分数,以衡量段落和问题的相关性;

(3) 在分数排名前k的段落中,选择最早出现的段落;

(4) 选取标题、这个段落以及下一个段落;

(5) 对于此后第3到第10个段落,选取每个段落的第一句话;

(6) 将所有选取的内容以特殊符号分隔后连接在一起,截取最前面不超过预设最大长度的内容,将得到的结果作为预处理的结果。

上述方法基于两个假设: 第一,答案可能出现在与问题相似的段落后面;第二,越靠前面的内容越重要。引入文档标题的原因在于从文档标题很容易判断文档内容是否与问题相关。

引入上述启发式预处理机制后,采用同样的模型,得到的结果比基线系统提供的简单预处理方法有大幅提高,对此我们将在实验部分具体说明。值得注意的是,数据集提供了未经过分词的原始文本以及分词后的结果,我们的模型选择分词后的结果作为输入。

2.2 参考答案片段

与大多数主流工作相同,我们将阅读理解任务建模成篇章中的片段抽取问题。在数据集中,每个问题可能对应多个人工撰写的答案。对于每个答案,我们在篇章中寻找一个与答案F1分数最高的片段,作为这个答案的参考答案片段,在训练时使用。对于仅使用一个答案片段的模型,我们采用与任意一个答案的F1分数最高的片段作为参考答案片段训练模型(这种情况与百度提供的基线系统一致)。

3 模型结构

3.1 特征表示层

在现在常见的机器阅读理解模型中,词向量是最常用的特征表示方法。以往的工作表明,使用预先训练好的词向量作为输入,并在阅读理解任务的训练过程中固定保持词向量不变,相比于使用随机初始化的词向量,并在训练过程中同步训练词向量,效果会有提升。因而,我们的模型也使用相同的方法。

在英文阅读理解模型中,加入基于字符序列得到的词表示对于结果有稳定的提升效果。这是因为英文单词有丰富的词缀变化,语义相同词性不同的单词拥有相同的词干,只在词缀上有所区分,而词缀相同的单词往往词性相同。这样的特性使得引入字符序列的信息能够缓解未登录词的问题。而汉语词汇没有这样的特性,含有相同字的不同词语的意思可能完全没有任何联系。我们也尝试使用循环神经网络整合预训练好的字向量的信息得到词的表示,作为额外的特征表示,但是实验效果并没有明显地变好。

在以往的工作如文献[2]中,除了词向量以外,一些其他的特征也被运用在阅读理解模型当中。我们的模型使用了词性标注信息。我们使用词性标注工具,对每个问题和对应的篇章进行词性标注,得到其中每一个词的词性信息。对于每一种词性,我们预先训练好对应的词性向量。问题和篇章中的每个词对应的词性向量也作为词的特征表示之一。

对于篇章里面的每一个词,我们还使用一个额外的二值特征wiq,表示这个词有没有在对应的问题中出现。

问题的类型也能够对回答问题提供帮助。2018机器阅读理解技术竞赛将问题分成三种类型: 实体类,描述类和判断类。我们认为这样的划分不够细致,通过简单的关键字匹配,将问题划分成九种常见类型,大致对应英文的各个疑问词。具体的问题分类和对应的关键词信息见表1。

给定任意一个问题,首先按表1的顺序从上到下匹配各个关键词,如果问题包含某一分类的其中一个关键词,则被匹配到该分类。如果问题没有包含上述任意关键词,则认为问题是数据集给定的类型。因此,我们一共将问题分为12类(包括表1定义的九种类型和数据集本身给定的三种类型),对于每个问题,都会在问题开始加上一个特殊符号表示其对应的问题类型。

表1 问题分类和对应关键词

3.2 问题篇章分别编码层

3.3 问题篇章匹配层

3.3.1 BiDAF匹配层

Seo[3]等提出BiDAF模型利用双向注意力机制来融合问题和篇章的信息的方法。我们首先通过内积计算出每个问题中的词和每个篇章中的词的相似度,如式(3)所示。

(3)

然后利用他们的方法计算出问题到篇章(context2query)和篇章到问题(query2context)的注意力表示,如式(4)~式(7)所示。

A=softmax(S)

(4)

(5)

b=softmax(maxcol(S))

(6)

(7)

然后再利用一层双向LSTM得到隐层表示,如式(8)所示。

(8)

3.3.2 MatchLSTM匹配层

参照Wang和Jiang[4]提出的MatchLSTM模型,我们首先计算:

然后再利用一层双向LSTM得到隐层表示,如式(13)所示。

(13)

3.3.3 DCA匹配层

Hasan和Fischer[5]提出在使用双向注意力机制之后,再使用一层注意力机制进一步融合信息的方法:

然后再利用一层双向LSTM得到隐层表示,如式(21)所示。

(21)

在实验结果部分,我们会比较不同匹配层对模型性能带来的影响。

3.4 答案抽取层

其中,t=1,2。

在答案抽取层,为了给一个问题统一寻找一个答案片段,同一问题对应的不同篇章得到的隐层表示被连接起来,这部分的实现和基线系统相同。

3.5 损失函数

对于片段抽取模型来说,通常采取如下损失函数,如式(26)所示。

(26)

其中,a1和a2分别表示参考答案片段对应篇章中的开始位置和结束位置。

与大多数已有的阅读理解数据集不同,2018机器阅读理解技术竞赛的数据集为每个问题提供不止一个参考答案。最终评判的时候,只要机器预测的答案与其中一个答案相同或者类似,就会得到比较高的分数。因而,与只考虑一个参考答案的经典模型相比,在训练的时候考虑所有参考答案可以更有效地利用数据,训练出更好的模型。对于给出多个参考答案的问题,我们利用2.2节介绍的方法对于每个答案找到它在篇章中的参考答案片段,并定义如下损失函数,如式(27)所示。

(27)

3.6 利用辅助任务联合训练

Tan[6]等提出了以预测答案从哪个篇章得到的问题作为辅助任务,进行联合训练,提高多篇章阅读理解模型性能的方法。我们借鉴了他们的思路,设计了篇章选择损失函数。

对于匹配层得到的每一个篇章的隐层表示,我们使用“注意力池化” (attention pooling)和投影变化,从而计算每一个篇章和问题的匹配分数g:

然后将辅助任务损失函数Lsp定义为:

(32)

+(1-selk)log(1-gk))

其中,selk表示是否有答案片段出自该篇章。

于是,我们使用最大似然估计联合训练优化目标函数,如式(33)所示。

JMLE=L+λspLsp

(33)

3.7 利用最小风险训练

前面提出的损失函数使用最大似然估计,目标是最大化训练集中每个问题的参考答案区间出现的概率。与之相比,使用最小风险训练直接对评估指标的期望进行优化,在机器翻译等方向取得了很好的结果。

在阅读理解任务上,最小风险训练的目标函数可以被定义为式(34)。

(34)

参考前人的工作,进行最小风险训练的时候,我们以最大似然估计训练得到的模型参数,作为初始化参数。在这种情况下,我们发现,联合训练最大似然估计和最小风险训练的目标函数可以得到更好的结果,如式(35)所示。

J=JMLE+λMRTJMRT

(35)

3.8 判断类问题模型

然后将rp做投影到分类维度,再用交叉熵做损失函数训练分类模型。

4 实现细节

4.1 预训练词向量

我们利用数据集提供的未分词文本和分词结果,使用一层的LSTM模型训练了一个分词器,然后用这个分词器将SogouT的部分文档进行分词,用分词得到的结果作为输入,以语言模型为训练目标,使用一层的LSTM模型训练256维的中文词向量。得到的预训练词向量被用在阅读理解模型中,并且在训练阅读理解模型的过程中保持不变。

4.2 模型参数和训练方法

在训练过程中,我们设定每个篇章的最大长度为500词,batch size为32。为防止模型过拟合,层与层之间采用了dropout技术,所有隐层表示向量为150维,单模型系统的dropout比例设为0.15。我们使用λMRT=10.0,在单一模型情况下λsp=5.0。

我们采用Adam算法来优化我们的模型,学习率(learning rate)在训练过程中保持0.001不变。对于知道部分和搜索部分的数据,我们使用两个模型分别训练和预测。使用最大似然估计训练模型时,我们训练10轮(epoch),每一轮训练之后在开发集测试性能,最终选择开发集上性能最好的模型。使用最小风险训练时,模型以最大似然估计训练得到的参数作为初始化参数进行训练。由于使用最小风险训练速度较慢,且使用最大似然估计训练好的模型参数进行初始化以后,模型通常在第一轮训练结束的时候就达到最好的效果,于是使用最小风险训练时我们只训练1轮。

4.3 实验环境和训练时间

实验所用的服务器使用4核Intel(R) Xeon(R) CPU E5-2630 v4 2.20GHz CPU,配有128GB内存,显卡为TITAN X Pascal,显存大小为12GB。每个实验使用单个GPU进行训练。

在搜索部分数据上,BiDAF模型每一轮数据训练和验证时间约为3h,MatchLSTM模型约为5h,DCA模型约为3h。知道部分数据每一轮训练所用时间与搜索部分数据相仿。使用最小风险训练时,由于每次要计算所有片段和参考答案的Rouge-L值,训练速度相对缓慢,BiDAF模型每一轮大概需要16h。

4.4 预测结果和结果后处理

预测时,我们使用模型预测答案片段在篇章的开始位置和结束位置的概率分布,并寻找同一篇章内使得开始位置概率乘以结束位置概率最大的片段作为预测结果。

值得说明的是,数据集对每个问题提供多个文档,这些文档来源于搜索结果,并按照搜索结果顺序呈现,也就是说搜索系统认为更靠前的文档与问题更相关,而这个信息在我们的系统里面并没有显式体现。尽管模型在训练的时候增加了辅助任务预测答案从哪一个篇章得到,我们发现,对于训练好的模型,在开发集中仅使用前3篇文档进行预测的结果,比使用全部(最多5篇)文档进行预测得到的结果有明显提高。在实验部分我们会给出数据进行具体说明。因此,在最后预测的时候,对于每个问题,我们仅使用前3篇文档进行预测,得到结果。

我们还对提取出来的片段进行简单后处理,包括去除我们在预处理阶段增加的特殊分隔符和“u3000”“ ”等特殊符号,以及对标点符号进行规范化处理。最终提交的结果是经过后处理的结果。

4.5 集成模型

由于实验结果表明,使用BiDAF、MatchLSTM和DCA作为匹配层的效果相近,为了使得集成模型来源的各个模型具有多样性,我们采用了来自不同匹配模型的结果进行集成。我们还使用了不同的dropout比例,不同的联合学习比率训练不同的模型。表2详细介绍了集成结果来源的各个模型的不同部分具体选项。所有18种不同选择分别被用于训练,共得到18个模型,这些模型的结果最后被集成得到最终结果。

表2 集成结果来源的模型选择

5 实验结果

5.1 不同匹配模型的选择

在模型结构的匹配层部分,我们介绍了BiDAF、MatchLSTM和DCA三种不同的选择。我们在开发集上比较了选用不同匹配方法的模型结果。表3展示了不同匹配层在搜索和知道上的结果。由于不同模型结果非常接近,为了减少误差,对于每种情况,我们使用两个不同的随机种子训练模型,最终汇报的结果是两个模型结果的平均值。

表3 不同匹配层模型的表现

可以看出,使用不同的匹配层得到的结果非常接近。MatchLSTM得到的结果最好,但是和BiDAF和DCA得到的结果非常接近。因此,在之后的单模型实验中,我们选择使用速度较快的BiDAF匹配层。而在集成模型的时候,为了使来源的各个模型具有多样性,我们使用了BiDAF,MatchLSTM和DCA匹配层得到的不同模型。

5.2 模型其他各部分的贡献

我们从基线系统开始,逐步增加各个部分,验证每个部分对于效果带来的影响。表4总结了这部分的实验结果,其中数据是模型在开发集上没有经过后处理的直接预测结果的表现。值得说明的是,比赛提供的结果评估脚本里计算BLEU4指标的方式造成了每个问题权重不等,答案长的问题实际权重更高,这是不合理的,而计算ROUGE-L的时候每个问题的权重是相同的,且最终比赛结果也选择了ROUGE-L作为主要的评价指标,所以我们汇报实验结果的时候主要关注ROUGE-L的结果。

表4 模型各部分的影响

从实验结果可以看出,每项改变都使系统性能得到提升。其中,我们提出的启发式篇章预处理的方法非常有效,使用这种方法相对于基线系统的预处理方法有大幅提高,在搜索部分提升了11.30,在知道部分也提升了4.62。使用预训练词向量使得搜索和知道部分的结果分别进一步提升了4.51和4.50。进一步增加其他特征(词性标注、问题类型、wiq)会在搜索和知道上分别带来0.17和0.65的额外提升。与仅利用一个答案相比,在损失函数中考虑多个答案使ROUGE-L指标在搜索和知道上分别进一步上升了1.60和1.30。值得说明的是,加上辅助任务进行联合训练后,虽然ROUGE-L值没有大幅提高,但是模型训练的稳定性得到了增强。

最终,基于上面的模型,再使用最小风险训练,我们的模型在开发集上搜索和知道的ROUGE-L值分别达到49.61和58.11,相比基线系统分别提高18.84和12.21。这是我们的单系统模型在开发集上没有使用后处理的结果。

5.3 仅用前三篇文档进行预测的的结果

如4.4节所述,我们在实验中发现,对于同一个训练好的模型,在开发集中仅使用前3篇文档得到的篇章进行预测的结果,比使用全部文档进行预测得到的结果有明显提高,表5给出了对比的实验结果。

表5 仅使用前三篇进行预测的结果

5.4 判断模型的影响

表6比较了使用3.8节描述的判断模型给判断类问题抽取出来的答案加上判断结果后,对于在线测试集上ROUGE-L和BLEU4带来的变化。可以看出,加上判断结果后,ROUGE-L和BLEU4分别提高了0.26和0.23。

表6 判断模型的影响

5.5 在线测试集的结果

表7显示了我们的单模型和集成模型对在线测试集的实验结果。集成模型的具体设置见实验细节中的集成模型部分。可以看出,相比于单一模型,集成模型在ROUGE-L和BLEU-4上分别有1.58和2.28的提高。

表7 在线测试集结果

5.6 最终结果

图1显示了比赛公布的最终结果,我们的系统在ROUGE-L和BLEU-4上分别取得了63.38和59.23的结果,排名第一,分别领先第2名2.39和3.30。

图1 最终比赛结果

6 样例分析

图2给出了一些开发集中我们系统预测答案没有完全和参考答案相符的例子。其中,对于问题1,我们的预测答案包含了额外的非答案信息。问题2的预测答案只包括了参考答案的一部分,没有完整包含应有的信息。问题3对应了另外的情况,我们的预测答案是文档里完整包含了答案信息的片段,但是标注者重新整理了这个片段并编写得到了更简洁和合适的参考答案。问题4则对应了最差的情况,我们系统预测的结果完全不是回答给定问题的答案。从这些例子可以看出,我们的系统尽管整体上取得了不错的结果,但在一些情况下仍然存在预测的答案不够准确(缺少必要部分,包含不必要的部分),甚至完全错误的情况。一种可能的解决方法是考虑引入答案验证模块,提高答案的准确性。

图2 样例分析

7 结论

2018机器阅读理解技术竞赛的数据集是基于真实场景的大规模数据集,包含不同类型的问题和不同来源的文档,非常具有挑战性。针对数据集的特点,我们从数据预处理、特征表示、模型选择、损失函数的定置和训练方法的选择等多个方面入手构造系统,在正式测试集中ROUGE-L和BLEU-4上分别取得了63.38和59.23的分数,在最终提交结果的105支参赛队伍里取得了第一名的成绩。

猜你喜欢
参考答案文档预处理
有人一声不吭向你扔了个文档
基于预处理MUSIC算法的分布式阵列DOA估计
制导与引信(2017年3期)2017-11-02 05:16:56
2017年6月七、八年级参考答案
2017年6月九年级参考答案
基于RI码计算的Word复制文档鉴别
浅谈PLC在预处理生产线自动化改造中的应用
工业设计(2016年11期)2016-04-16 02:50:19
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
络合萃取法预处理H酸废水
环境科技(2015年6期)2015-11-08 11:14:26
参考答案
基于自适应预处理的改进CPF-GMRES算法