论文标题:Learning to Ask: Neural Question Generation for Reading Comprehension
论文来源:ACL 2017
论文链接:https://arxiv.org/abs/1705.00106
代码链接:https://github.com/xinyadu/nqg
该论文提出了一种基于 Global Attention 机制的问题生成模型,并比较了句子级编码和段落级编码的效果。模型的自动评价指标远超基于规则的系统,同时人工评价表明模型生成的问题更规范更流畅,而且在语法和词汇上与原文重复不大(句法角色),具有一定的难度,有的问题甚至需要一些推理来回答(语义角色)。
作者给出了六个自动评估指标(BLEU1-4、METEOR、ROUGE),作者甚至将每个指标的定义讲了一下,这里也正好小结一下:BLEU(BilinguaL Evaluation Understudy)测量的是两个句子的 n 元语法的重合程度(精确率),而 BLEU-n 是在 BLEU 的基础上测量两个句子至多 n 元的语法的匹配度,并对过短的句子施加惩罚(brevity penalty)(现在还是普遍认为 BLEU 指标偏向于较短的翻译结果)。
METEOR(Metric for Evaluation of Translation with Explicit ORdering)根据同义词(Synonyms)、词干(Stemming)和复述(Paraphrase)计算两个句子的相似度,可以反映模型的召回率。ROUGE(Recall-Oriented Understudy for Gisting Evaluation)与 BLEU 很像,但其衡量的是 n 元语法的召回率(适合 NMT,不适合 SMT)。
下面的评估结果表明 IR 和 MOSES 的精确度都很低,召回率也不如人意,但让我意外的是 DirectIn 的效果居然可以这么好,不过问句其实本身与原文会有较大的重合度,光靠自动指标计算 overlap 来评价其实并不能真实地反映生成答案的质量。
另外,作者在这里提到了一个 inter-rater agreement of Krippendorff's Alpha 指标,应该是用于衡量评估者之间的内部一致性。
作者给出了一些生成问题的例子,有趣的是,一些生成的问题居然需要外部知识来回答,比如下面这个例子:
生成的问题是 “Why birds grow”,而正确的问题应该是 “Why many species stil grow”,原文中只提到了 “species”,但作者的模型竟然生成了 “birds”,也就是说,需要人来推理出 birds 时 species 的一种,而这在原文中并没有说明。这是很有趣的现象,研究模型是通过怎样的机制生成了这些看似无关的单词,给模型一个合理的解释,是很有价值的。
比起其他单纯生成问题或回答问题的阅读理解任务,这里的任务是同时生成问题和答案,一般来说,QA 是抽取式(extractive)的任务,即问题的答案是文本中的关键语义概念(sematic concept),如 named entity, action, number 等,通常是一个单词或短语(将答案设置为文本片段主要是为了减小答案的搜索空间);
模型的具体参数不用多说,值得一提的是,作者在训练答案生成模块时引入了 NER Tagger,因为人工标注不够充分,许多可以作为答案的片段没有得到标注,因此作者假设所有命名实体都可作为答案(这样做合理吗?人类往往只关心有意思的答案和问题,而对某些命名实体提问是不 interesting 且没有意义的)。
然而,这一直觉并不总是对的,当答案与文本中那些出现在标准问题(golden question)中的非停用词距离较远时,这类模型的性能就会大幅下降。因此,作者提出了所谓的 to the Point Context,使得生成的问题更加 to the point。
4.1.1 前人工作
QG for MRC 首先由 Mitkov 使用基于规则的模型来解决,在最近几年的 DL 模型中,由于从文本到问题的转换是一对多的转换,一个文本可以提出许多不同方面的问题,这使得模型难以得到自动评估,因此《Neural Question Generation from Text: A Preliminary Study》假设答案是文本中的连续片段,一个答案生成一个问题。
因此作者抽取了结构化的与答案相关的关系(structured answer-relevant relations)来克服这个问题,关系的抽取能够提取句子的主要关系成分,忽略次要成分(如去除插入语),使得文本更加简单明了,而抽取出来的关系所组成的句子正是所谓的 to the point context。
注:Teacher-forcing:一般来说,RNN(LSTM、GRU)的训练有两种 mode:(1)Free-running mode;(2)Teacher-forcing mode。前者就是正常的 RNN 运行方式:上一个 state 的输出就做为下一个 state 的输入,然而这样做是有风险的,因为在 RNN 训练的早期,靠前的 state 中如果出现了极差的结果,那么后面的全部 state 都会受牵连,以至于最终结果非常不好,同时也很难溯源到发生错误的源头,而 Teacher-forcing mode 的做法就是,每次不使用上一个 state 的输出作为下一个 state 的输入,而是直接使用 ground truth 的对应上一项作为下一个 state 的输入,使得训练效果更快更好。然而这么做也有它的缺点,因为依赖标注数据,在 training 的时候会有较好的效果,但是在 testing 的时候就不能得到 ground truth 的支持了。
为了衡量引入 to the Point Context 之后模型的性能提升幅度,作者将测试数据按平均距离划分成了两部分,可以发现,作者的模型在所有指标上都超过了 Hybird 模型。同时,在存在长距离依赖(>10)的样本上,作者在 Hybird 模型上性能的提升更为显著,这正好证明了 to the point context 在捕捉长距离依赖关系上存在明显有效的作用。
很明显,ENT 过度生成了答案,导致高召回低精度,NES 模型就好了很多,而 PtrNet 就更好了。而 H&S 与 ENT 有相同的高召回低精度的问题,这应该是因为 H&S 和 ENT 并不知道 SQuAD 的答案分布情况,所以只能尽量寻找所有看起来像答案的序列。 有趣的一个点是,作者发现基于命名实体的模型常常选择文本的中心词或主题词作为答案,而这类词通常不是有趣的,而只是文本的主题背景而已。 另外,作者还发现了每个模型的一些问题,比如 H&S 模型生成的答案很多都以介词开头,或者有时候会生成非常长的名词短语,同时有的生成答案没有实际意义(比如 this theory, some studies, a person 等);而对于作者的模型,有时候生成的答案并不能回答对应的问题,同时作者还发现自己的模型有时会具有指代消解的功能,但他没有解释这些现象背后的原因。 问题生成模块 在人工评估中,作者首先将自己的模型生成的问答对与人工标注问答对进行对比评估,很明显,生成的当然是比不过人工的,然后作者将自己模型生成的问答对与 H&S 模型生成的问答对混在一起让评估者与人工标注问答对进行评估时,前者能够对评估者带来更大的混淆。 但有趣的是,当作者只提供两个模型生成的问答对,而不提供 ground truth 作为参考时,评估者竟然难以对比不同模型生成的问答对的好坏。可惜的是,作者并没有表达对这种现象的看法,小七认为应该是评估者觉得这两个模型生成的问答对都不理想,说的都不是人话,一个语句不够通顺,另一个问非所答,五十步不可笑百步。 下面是一些具体的例子,不嫌累的话可以感受一下生成的问题说的是不是人话: