1. 背景介绍
Question Generation是指根据“一段文字”生成“问题”,即像阅读理解的题目一样。其主要的应用场景是“教育”,方便读者深入理解一段文字,也为外语初学者等提供更多的学习材料;另外也可以被应用于对话生成中,即生成追问问题;也可以充当医生的角色,询问患者一些基本问题。但是目前这项研究的主要应用场景是生成更多的数据来提升Reading Comprehension和QA的效果。
Question Generation和其他的NLP任务一样,并不简单,比如说下面的例子中:
Sentence:
Oxygen is used in cellular respiration and released by photosynthesis, which uses the energy of sunlight to produce oxygen from water.Questions:
- What life process produces oxygen in the presence of light? (photosynthesis)
- Photosynthesis uses which energy to form oxygen from water? (sunlight)
- From what does photosynthesis get oxygen? (water)
第一个问题中用到了常识信息photosynthesis是一种life process;
第二个问题中使用了近义词form代替produce;
第三个问题是对原句的一个倒置。
可见生成问题要考虑的情况有很多,是一个相对比较复杂的任务,需要对原文段进行抽象和重述。
大部分方法在做Question Generation的时候,一般经过两个步骤,第一,把raw text (sentence or paragraph)转换成某种syntactic representation (parsing tree);第二,把syntactic representation套入某个人工采集的template (问题模式)中,生成句子。这种传统的方法主要有三个不足:第一,人工采集template是费时费力的;第二,基于template的问题不够多样,比较死板;第三,分了太多的步骤 (too many pipelines)。
于是本文提出了用sequence-to-sequence模型来解决问题,即像机器翻译一样,把raw text看成是源语言,把question看成是目标语言,然后相当于是进行翻译。
1.1 推荐历史阅读
Lucy Vanderwende. 2008. The importance of being important: Question generation. https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/Lucy_Vanderwende_NSF_question_gen.pdf
Michael Heilman and Noah A. Smith. 2010. Good question! statistical ranking for question generation. http://www.aclweb.org/anthology/N10-1086
2. 模型构建
这里不再详细介绍sequence-to-seqence模型了,直接上图。
首先用双向RNN(BiRNN)编码整个句子,然后再用attention机制对编码后的句子进行侧重点标注,接着送入decoder中,输出问题。
论文中对于h_0的初始化,用了两种方式:
第一种是只使用了sentence embedding对h_0进行初始化,如图中所示,即:
第二种是用这个编码模型同时对句子和句子所在的文段进行编码,然后将编码结果进行concatenate,然后初始化h_0,即: