Nan Duan, Microsoft Research Asia, 2017
原文链接
这篇是从长文章中利用两种方式CNN和RNN来生成高质量的问题,并利用生成的这些问题来进一步提高QA的表现,这篇和下一篇是一个作者的文章。
数据集:SQuAD, MS MARCO, and WikiQA
结构:
整个QG结构分为四个部分,Question Pattern Mining,Question Pattern Prediction,Question Topic Selection,Question Ranking
Question Pattern Mining
将问句输入YahooAnswers获得一系列相关的问题,这些问题构成了一个question cluster。在这个cluster中,n gram出现的频率越高越有可能是topic word
Question Pattern Prediction
给定一篇文章,利用一些关键短语,eg co-founded by -> who found # ?,预测相关的question pattern有哪些。训练数据格式为 <A,Qp,Qt> < A , Q p , Q t > ,预测时输入为 <S,Qp> < S , Q p > 。
A是answer, Qp Q p 是question pattern, Qt Q t 是question type
– Attention + CNN 将predict视为一个ranking的任务
– Attention + Bi-GRU RNN 将predict视为一个生成任务
Question Topic Selection
– 对于第一种attention + CNN,先利用freebase提取实体和stanford sparser提取名词词组作为question type的候选,然后计算这些候选qt与预测的question type对应的每个historical question topic的相似度,取相似度较高的topic。
– 对于第二种attention + Bi-GRU RNN,对于S中所有单词计算S与 Qp Q p 的attention概率来选取topic。这里softmax输出维度只用前一部分频率最高的question word,对于OOV(out of vocabulary),用attention probability最高的单词替换,类似一种copy机制。
Question Ranking
question pattern prediction score + question topic selection score + QA matching score + word overlap between Q and S + question pattern frequency这五个分数的线性之和
评价标准:BLEU4
实验结果:seq2seq和两种模型的对比
Nan Duan, Microsoft Research Asia, 2017
原文链接
本文提出了一种新的训练框架,同时训练两个模型,将QG和QA视作一个互相促进的过程。
作者将这个称为dual,个人觉得和GAN的思想差不多
模型:
P(q,a)=P(q|a)×P(a)=P(a|q)×P(q) P ( q , a ) = P ( q | a ) × P ( a ) = P ( a | q ) × P ( q )
第一个是QG过程,第二个是QA过程
数据集:MS Marco,SQUAD,WikiQA
结构:
QG是一个seq2seq的生成模型,损失函数为 Lqg=−P(q|a) L q g = − P ( q | a )
QA是一个双向GRU RNN,将Q和A拼接起来作为一个连续的输入,训练时对认为正确的answer打label为1,反之label为0,最小化错误label。
损失函数为
评价标准:MAP MRR P@1(QA);BLEU4(QG)
Tong Wang, Microsoft Maluuba, 2017
原文链接
数据集:SQuAD corpus
本篇将QA和QG都视为生成的任务,联合学习通过交替改变QA和QG实现。输入是一篇长文章+conditional information,由条件信息决定是QA还是QG过程,会用一个二进制数表示是QA还是QG。
这篇比较独特的地方是可以生成一些abstract的answer,生成abstract answer其实就是通过copy机制,在生成中选择是copy还是predict。
一般来说QA是extractive的,即抽取式的,而QG是abstractive
encoder是一个双向LSTM模型,用的是字级别的embedding+词级别embedding的拼接,得到一个abstract的隐藏层向量 h1 h 1 。同时考虑extractive抽取式的信息,即同时出现在文章和conditional中的单词,用另一个双向LSTM来编码这些词得到一个抽取式的隐藏层向量 h2 h 2 。在QA过程中是对问题编码用 h1 h 1 ,QG中是对答案编码用 h2 h 2 。
个人认为这里的考虑与之前是一致的,answer通过抽取式,question通过生成式
decoder用了pointer-softmax来控制copy还是predict。(详细见另一篇pointer-softmax的笔记)在训练过程中QA和QG的结果会作为另一个过程的