石 航,劉瑞芳,劉欣瑜,陳泓宇
(北京郵電大學(xué) 人工智能學(xué)院,北京 100876)
問題生成(Question Generation, QG)是指對給定的一段文本,生成一個(gè)合理的問題。問題生成的一個(gè)潛在應(yīng)用在教育領(lǐng)域[1]。也可以在問答系統(tǒng)和聊天機(jī)器人,例如,Siri、Alexa、Cortana、小愛、小度等中幫助它們啟動對話和繼續(xù)對話[2]。在問答系統(tǒng)(Question Answering, QA)領(lǐng)域,Zhu等[3]利用問題生成系統(tǒng)自動生成大量的問題答案對來提升機(jī)器閱讀理解系統(tǒng)的F1值。Sultan等[4]闡述問題生成的多樣性對QA的重要性。
目前,學(xué)者們對問題生成任務(wù)已經(jīng)展開了大量的研究,主要分為基于規(guī)則的問題生成、基于深度神經(jīng)網(wǎng)絡(luò)的問題生成以及基于預(yù)訓(xùn)練語義模型的問題生成。
基于規(guī)則的問題生成,例如,Heilman等[5]和Mannem等[6]使用嚴(yán)格的啟發(fā)式規(guī)則或基于模板的方法。但是,這些方法嚴(yán)重依賴于人工生成規(guī)則,不易被其他領(lǐng)域采用,有時(shí)生成的句子也不如人類表達(dá)那樣流暢。近年來,一種基于序列到序列框架的端到端的神經(jīng)網(wǎng)絡(luò)在問題生成任務(wù)中被普遍采用。其中編碼器將帶有語義特征(例如,命名實(shí)體識別(Named Entity Recognition, NER)標(biāo)簽)的文章或句子進(jìn)行編碼,解碼器利用編碼器生成的語義表示生成問題。Du等[7]使用一個(gè)或兩個(gè)包含答案的句子作為問題生成模型的輸入,而Zhao等[8]使用整篇文章作為編碼器的輸入。譚紅葉等[9]使用答案及其上下文信息進(jìn)行問題生成。不管輸入是一兩個(gè)句子還是整篇文章,都只能捕獲到一個(gè)層次和答案相關(guān)的信息,從而導(dǎo)致生成非理想的問題。Jia等[10]將釋義知識整合到問題生成中生成問題。Kriangchaivech等[11]基于Transform的結(jié)構(gòu)在問題生成任務(wù)上取得了很大的進(jìn)展。Dong等[12]提出了一種新的預(yù)訓(xùn)練模型UNILM,通過訓(xùn)練序列到序列的語言模型(Language Model, LM)實(shí)現(xiàn)問題生成。但是這種方法需要大量的數(shù)據(jù),而且模型參數(shù)太多,需要大量的算力進(jìn)行訓(xùn)練。
本文主要解決針對給定文本中的指定內(nèi)容提問的問題生成任務(wù),即生成的問題是可以根據(jù)原文用目標(biāo)答案來回答的問題。為了從句子級別和全文信息中捕獲與答案相關(guān)的語義信息,我們提出一種新的多輸入序列到序列框架,框架的編碼器同時(shí)輸入全文信息和答案上下文信息。因?yàn)槲恼鲁3D芴峁┍染渥痈S富的內(nèi)容,Zhao等[8]發(fā)現(xiàn)在SQuAD數(shù)據(jù)集[13]中有20%的問題需要依賴文章級別的長文本信息,使用全文信息可以提升問題生成的BLEU_4值。Liu等[14]比較訓(xùn)練集每個(gè)訓(xùn)練樣本中復(fù)制的單詞與答案之間的句法依賴距離和順序單詞距離的分布,發(fā)現(xiàn)答案詞與被復(fù)制詞之間的平均距離分布為10.23。整篇文章能夠幫助提高生成問題的質(zhì)量,但是一般與答案相關(guān)的信息主要來自它的上下文,我們把包含答案及其前后十個(gè)詞的上下文信息稱為近答案句子。本文結(jié)合這兩個(gè)層次的信息來提升生成問題的質(zhì)量。
在問答系統(tǒng)中,給定一篇文章和一個(gè)問題,我們可以在文中找到一個(gè)獨(dú)一無二的答案。但是對于問題生成任務(wù),在一篇文中指定一部分內(nèi)容作為答案,我們可以有多種方式來對其進(jìn)行提問,即問題生成是一對多的任務(wù)。因此如何評估一個(gè)問題是不是好問題,我們不僅需要將生成的問題和人工生成的源問題進(jìn)行對比,也需要判斷這個(gè)問題是否是針對文中答案內(nèi)容進(jìn)行提問的。本文通過問題的可回答率來評估問題和答案的相關(guān)程度。本文采用BERT-base-uncased[15]預(yù)訓(xùn)練模型訓(xùn)練一個(gè)問答系統(tǒng),將測試集中的源問題替換成系統(tǒng)生成的問題,然后根據(jù)問答系統(tǒng)的回答情況評判問題的可回答率。以下是本文的主要貢獻(xiàn):
(1) 本文提出了近答案句子的概念?;€系統(tǒng)通常是輸入包含答案的整個(gè)句子,而數(shù)據(jù)中與要提問的答案相關(guān)的信息不一定和它在同一個(gè)句子,而是與其位置相近的詞,這些詞也可能和答案是跨句子的。所以近答案句子可以提供更多與答案相關(guān)的信息,同時(shí)減少了噪聲。
(2) 本文提出了一種新的端到端的模型框架。傳統(tǒng)端到端框架的編碼端輸入是一個(gè)序列,輸出到解碼端解碼生成句子。本文輸入兩個(gè)序列,通過多層次的注意力機(jī)制編碼后獲得更豐富的語義表示,然后輸出到解碼端解碼生成問題。
(3) 問題生成是一對多的任務(wù),傳統(tǒng)的評估方法只能將生成的問題和參考問題進(jìn)行對比評判,對于問題類型出錯的懲罰不大,也不能包容更多的可能性。本文把一個(gè)問答系統(tǒng)作為判別器,根據(jù)問答系統(tǒng)的回答情況評估生成問題的可回答率,以此來評價(jià)問題的質(zhì)量。
目前,問題生成技術(shù)的研究方法一般分為三種,第一種是基于規(guī)則的方法,即將陳述句轉(zhuǎn)化進(jìn)行問題生成;第二種是基于端到端的編碼—解碼結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)問題生成方法;第三種是借助預(yù)訓(xùn)練模型的強(qiáng)語義表示進(jìn)行問題生成任務(wù)。
為了在創(chuàng)建問答系統(tǒng)和對話系統(tǒng)的大規(guī)模數(shù)據(jù)集中減少人工標(biāo)注的工作量,自動生成問題是非常重要的。大多數(shù)早期的自動問題生成都是基于規(guī)則的,例如,將人名替換成“誰”,根據(jù)語法調(diào)整語句可以產(chǎn)生大量問題。Heilman等[4]依據(jù)制定的規(guī)則將簡化后的陳述句轉(zhuǎn)化成問題,然后通過邏輯斯蒂回歸對生成的問題進(jìn)行重排序。然而這些方法非常依賴人為設(shè)置的規(guī)則,所以不能很好地拓展到其他領(lǐng)域,遷移性較差,有時(shí)生成的句子不能像人類的語言那樣流暢。
受益于SQuAD數(shù)據(jù)集的三元組(文章、問題、答案)和端到端的神經(jīng)網(wǎng)絡(luò)模型,摒棄了大量規(guī)則制定的工作,并生成了更高質(zhì)量、更流暢的問題句子。Du等[7]第一次嘗試了基于注意力機(jī)制的序列到序列模型,利用神經(jīng)網(wǎng)絡(luò)的方法使得問題的得分在自動評估和人工評價(jià)中都超過了基于規(guī)則的方法。Zhou等[16]在模型中充分利用答案位置特征和詞匯實(shí)體特征,并引入復(fù)制機(jī)制解決生成詞表外的詞,進(jìn)一步提升了神經(jīng)網(wǎng)絡(luò)在問題生成任務(wù)中的BLEU_4和ROUGE_L值。Zhao等[8]提出門控注意力機(jī)制,增強(qiáng)編碼端的語義表示能力,結(jié)合最大輸出指針復(fù)制機(jī)制,改進(jìn)了神經(jīng)網(wǎng)絡(luò)對長文本作為輸入表現(xiàn)不佳的現(xiàn)象。Kim等[17]提出分離答案的序列到序列模型,幫助模型捕獲答案相關(guān)的信息。
隨著BERT[15]預(yù)訓(xùn)練模型在自然語言處理中的廣泛應(yīng)用,最近Dong等[12]提出了統(tǒng)一語言模型UNILM。借助大量的訓(xùn)練數(shù)據(jù)和復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),設(shè)計(jì)了一種序列到序列的語言模型訓(xùn)練方法,讓模型在端到端的任務(wù)上獲得了很大的進(jìn)步,大大提升了問題生成的質(zhì)量。但對實(shí)驗(yàn)條件要求比較高,很難遷移到一般機(jī)器中運(yùn)行。
神經(jīng)網(wǎng)絡(luò)模型有著比基于規(guī)則方法更好的效果和遷移性,比預(yù)訓(xùn)練模型更具有可實(shí)現(xiàn)性和可拓展性。因此,本文采用編碼—解碼的框架研究問題生成任務(wù)。并在預(yù)訓(xùn)練模型UNILM上做了對比實(shí)驗(yàn),證明本文提出的近答案句子信息對提高問題生成的質(zhì)量是有效的。
(1)
本文模型的整體架構(gòu)如圖1所示,模型左邊是編碼端,主要包括三層,右邊是解碼端。
圖1 模型總體框架
其中,ut表示Bi-LSTM第t步的隱藏層,et表示預(yù)訓(xùn)練的詞向量編碼,mt代表答案的位置信息編碼。通過編碼層后得到文章的語義表示UP和近答案句子的語義表示Ua。
這一層在得到了融合近答案語義信息的文章表示后。受益于Wang[18]提出的自對準(zhǔn)注意力在長文本中的優(yōu)勢,本文采用了自注意力融合機(jī)制對文章表示做進(jìn)一步的信息融合,最終得到兩層語義信息的編碼表示O,如式(9)~式(11)所示。
在解碼階段,首先將編碼器的最后一個(gè)隱藏狀態(tài)作為解碼器的初始化隱藏狀態(tài)。第t步解碼根據(jù)t-1步的解碼單詞和隱藏狀態(tài)作為輸入,通過LSTM獲得解碼器隱藏狀態(tài)st。將st做線性變化后利用softmax預(yù)測詞表里每個(gè)單詞的概率Pvocab如式(12)~式(14)所示。
考慮到輸入的是整篇文章,某些詞在文章中出現(xiàn)的次數(shù)比較多,最后的注意力權(quán)值相加后會導(dǎo)致一些不重要的詞分得的權(quán)重比較高,從而影響生成問題的質(zhì)量。本文采用了最大輸出的注意力復(fù)制機(jī)制,即在對注意力權(quán)值的計(jì)算中對同一個(gè)詞只選最大權(quán)值作為最后的權(quán)重分配,如式(18)所示。
(18)
將式(14)中的sgt換成sct獲得復(fù)制分?jǐn)?shù)Pcopy(w),最后得分由生成得分和復(fù)制得分相加得到P(w),如式(19)所示。
P(w)=Pvocab(w)+Pcopy(w)
(19)
本文提出的多層次注意力端到端的神經(jīng)網(wǎng)絡(luò)模型在SQuAD數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn),該數(shù)據(jù)集利用眾包的方式生成,其中每個(gè)問題的答案來自對應(yīng)文章的一段文本,共有超過100k個(gè)問題和536篇維基百科的文章。實(shí)驗(yàn)依據(jù)整篇文章和包含答案前后10個(gè)詞的句子來進(jìn)行問題生成,輸入包括整篇文章和近答案句子以及答案的位置信息。輸出是人工提出的問題。我們數(shù)據(jù)集的分割方式參照Zhao[8]來劃分訓(xùn)練集、驗(yàn)證集和測試集。
我們從訓(xùn)練集中收集詞表并保存前45 000頻次的詞,其他的用特殊字符@UNK代替。我們使用的GloVe[19]預(yù)訓(xùn)練詞向量來將每個(gè)單詞初始化為300維的向量。在編碼和解碼中,我們都使用了兩層雙向LSTM,隱藏單元的大小為600,兩層中間設(shè)置丟棄率為0.3。對答案的位置信息編碼維度是3。對于模型的優(yōu)化算法,我們采用隨機(jī)梯度下降(Stochastic Gradient Descent, SGD)進(jìn)行更新參數(shù),初始學(xué)習(xí)率是為0.1,從第八輪訓(xùn)練開始每兩輪學(xué)習(xí)率減半,批量(Batch Size)的大小為32。在解碼過程中,Beam search設(shè)置為10。我們使用谷歌的BERT-base-uncased[15]訓(xùn)練QA模型。
本文采用了4個(gè)基線系統(tǒng)進(jìn)行比較:
(1)Seq2Seq+Attention[7]: 該模型使用基于全局注意力機(jī)制的RNN編碼器—解碼器框架來生成問題。
(2)NQG++[16]: 該模型第一次引入了注意力機(jī)制和復(fù)制機(jī)制在序列到序列框架中,并在編碼端增加了豐富的特征信息。
(3)s2s-a-at-mcp-gsa[8]: 該模型在編碼端引入門注意力機(jī)制,在解碼端采用了最大輸出指針網(wǎng)絡(luò),并且能處理長文本作為輸入的問題生成。
(4)ASs2s[17]: 該模型提出答案分開的序列到序列模型,并指出原文中哪些潛在詞在生成問題時(shí)可以用來替代目標(biāo)答案。
實(shí)驗(yàn)結(jié)果采用的評價(jià)標(biāo)準(zhǔn)有BLEU值[20]、METEOR值[21]、ROUGE_L[22]。BLEU是自動翻譯常用的評估方法,通過統(tǒng)計(jì)生成的句子和標(biāo)準(zhǔn)句子之間匹配片段個(gè)數(shù)來評價(jià)生成句子的充分性和流暢性,METEOR則是依據(jù)評價(jià)指標(biāo)中的召回率的意義提出的評估方法,計(jì)算對應(yīng)生成句子和標(biāo)準(zhǔn)句子之間的準(zhǔn)確率和召回率的調(diào)和平均,ROUGE_L通過使用基于最長公共子序列的統(tǒng)計(jì)量來衡量生成句子和標(biāo)準(zhǔn)句子中出現(xiàn)的數(shù)量。此外,我們訓(xùn)練了一個(gè)QA模型,通過QA模型評估生成問題的可回答率來評估問題的質(zhì)量。
通過實(shí)驗(yàn)對比,我們的模型對比基線系統(tǒng)的問題生成各項(xiàng)指標(biāo)都有明顯的提升。如表1所示,表中w/o表示在基線的情況下減少一層結(jié)構(gòu),par.代表文章級別的注意力機(jī)制,tag.代表答案的位置編碼信息。從實(shí)驗(yàn)結(jié)果來看,Seq2Seq + Attention模型在問題生成任務(wù)中有一個(gè)不錯的表現(xiàn)。NQG++模型在編碼端增加一些答案的特征信息,增加復(fù)制機(jī)制去處理小概率出現(xiàn)的詞采用預(yù)訓(xùn)練的詞向量后,生成問題的BLEU_4值提升了1.01%。而s2s-a-at-mcp-gsa 模型提出的門控注意力機(jī)制能夠很好地對長文本的輸入進(jìn)行一個(gè)語義編碼表示,解決了長文本作為輸入在問題生成任務(wù)中的挑戰(zhàn),不管是以長文本作為輸入還是句子作為輸入,都取得了歷史最好的效果。ASs2s模型相比于NQG++,可以看出分離出答案的有用信息對問題生成的各項(xiàng)指標(biāo)也有明顯的提升。
表1 問題生成結(jié)果 (單位: %)
本文和s2s-a-at-mcp-gsa一樣,都以長文本作為輸入生成問題。但是因?yàn)槲覀兌鄬哟蔚亟Y(jié)合了全文信息和近答案句子信息,最后問題生成的各項(xiàng)指標(biāo)達(dá)到了最好的效果。為了進(jìn)一步印證多層次的語義編碼,本文在編碼端器端減少了一層文章自注意力機(jī)制,結(jié)果的指標(biāo)有小幅下降,但是仍然比s2s-a-at-mcp-gsa 要好,說明全文的層次信息有助于答案的理解和問題生成,全文的自注意力機(jī)制可以捕獲到全文中對答案有用的信息,而減少了答案的位置信息時(shí)性能下降明顯,因?yàn)橄到y(tǒng)不知道要提問的對象具體是什么,但是由于結(jié)合了近答案句子信息,也能取得比Seq2Seq + Attention更好的效果。通過兩個(gè)消融實(shí)驗(yàn)證明多層次的語義信息可以輔助提升問題生成任務(wù)的性能。
問題生成的任務(wù)是: 根據(jù)給定的文章,將文章中的一部分作為答案來進(jìn)行提問。這是一對多的問題,因?yàn)獒槍ν徊糠謨?nèi)容提問,我們可以從不同的角度來提出風(fēng)格不同的問題。而傳統(tǒng)的評估方法都是將系統(tǒng)生成的問題和數(shù)據(jù)集中人為生成的參考問題來進(jìn)行比較,進(jìn)而評估問題生成的質(zhì)量。這種方法對一個(gè)系統(tǒng)生成的可以用給定的答案來回答,但對于與參考問題不一樣的問題是不公平的。因此,本文評估生成問題可回答率時(shí),先訓(xùn)練一個(gè)問答系統(tǒng),用訓(xùn)練好的問答系統(tǒng)來判斷生成問題的可回答率。
BERT-base-uncased在不同的訓(xùn)練集和測試集上的表現(xiàn)如表2所示。用原始數(shù)據(jù)集時(shí)BERT-base-uncased的F1得分是88.61,EM得分是81.33。本文將我們的系統(tǒng)和Zhao[8]的系統(tǒng)進(jìn)行了對比,首先將驗(yàn)證集中的所有問題用兩個(gè)系統(tǒng)生成的問題替換,然后讓訓(xùn)練好的QA系統(tǒng)來回答替換后的問題。最后我們系統(tǒng)的F1得分是73.38,可回答率是82.81%(73.38/88.61),結(jié)果都比Zhao[8]的系統(tǒng)高,表明我們系統(tǒng)生成的問題不僅在流暢度和精確率上比基線系統(tǒng)更好,而且生成的問題和指定的答案之間的匹配度也是更高的,生成的問題和答案相關(guān)度更高。
表2 BERT-base-uncased的結(jié)果
換而言之,我們系統(tǒng)生成的問題可以作為大規(guī)模生成數(shù)據(jù)集提供給QA模型訓(xùn)練。為了驗(yàn)證這一點(diǎn),本文還將訓(xùn)練集的問題換成系統(tǒng)生成的問題。結(jié)果BERT-base-uncased在SQuAD測試集中的F1得分是79.24,這已經(jīng)超過了經(jīng)典QA神經(jīng)網(wǎng)絡(luò)模型BiDAF[23]的F1得分77.32。
本文從實(shí)驗(yàn)結(jié)果中分析了本文系統(tǒng)和基線系統(tǒng)的差別,并且也參照了人工提問的源問題。具體例子如表3所示,其中,下劃線部分是要提問的答案,括號部分是近答案句子信息。通過對比發(fā)現(xiàn),我們多層次注意力機(jī)制的問題生成模型整體結(jié)果相比于基線系統(tǒng)要更接近人類生成的問題。例1中,由于和答案相關(guān)的信息在近答案句中,本文生成的問題很接近參考問題。而基線系統(tǒng)由于長文本的輸入帶來的噪聲導(dǎo)致生成的問題把注意力分散到更遠(yuǎn)的信息,復(fù)制生成了更多和答案不相關(guān)的詞。例2中,我們系統(tǒng)能夠根據(jù)近答案的語義信息捕獲到時(shí)態(tài)上的細(xì)節(jié)信息,而基線系統(tǒng)不能捕獲這些細(xì)節(jié)信息。例3中,我們生成的問題中有1 758的信息,這一信息近答案句中沒有,是由長文本提供的,我們的系統(tǒng)和基線系統(tǒng)也都能捕獲到全文中距離答案相對較遠(yuǎn)的信息以輔助提升生成問題的質(zhì)量。但是我們要提問的詞是一個(gè)數(shù)量,基線系統(tǒng)生成的問題則是一個(gè)“什么”類型的問題,這個(gè)問題明顯不是一個(gè)好的問題,但是這種情況在之前的BLEU或者ROUGE_L的評估方法上是不能體現(xiàn)出來的,因此評估一個(gè)問題的可回答率也是評估問題質(zhì)量一個(gè)重要指標(biāo)。
表3 分別由本文模型和基線模型生成問題樣本
最后,為了驗(yàn)證本文提出的近答案句的可靠性,我們在統(tǒng)一語言模型UNILM上進(jìn)行了對比實(shí)驗(yàn)。我們利用Dong等[12]提供的unilm-v1中問題生成任務(wù)的unilmv1-base-cased參數(shù)進(jìn)行微調(diào)實(shí)驗(yàn)。我們在輸入中近答案句子的前后增加兩個(gè)分隔符,如圖2所示,實(shí)驗(yàn)結(jié)果如表4所示。
圖2 近答案句輸入圖
表4 UNILM的結(jié)果
實(shí)驗(yàn)結(jié)果顯示,增加了近答案句子信息特征后,問題生成的ROUGE_L值相比UNILM提升了0.121%,說明我們提出的近答案句子對問題生成任務(wù)的性能提升有效果。我們進(jìn)一步對比了本文基于神經(jīng)網(wǎng)絡(luò)模型和UNILM的問題生成時(shí)間。實(shí)驗(yàn)結(jié)果如表5所示。
表5 生成問題時(shí)間結(jié)果
我們對比生成5 285個(gè)問題,Batch Size為1,不同Beam search大小的結(jié)果。實(shí)驗(yàn)結(jié)果顯示,Beam search為1時(shí),本文模型的生成問題的時(shí)間是UNILM的9.03%。當(dāng)Beam search為10時(shí),本文模型的生成問題的時(shí)間是UNILM的25.46%??梢?,本文模型要比UNILM輕量很多,能夠更好地遷移到更小設(shè)備或者百毫秒級響應(yīng)的需求中。
本文提出了一種多輸入多層次注意力機(jī)制的序列到序列框架的神經(jīng)網(wǎng)絡(luò)模型,用于解決在問題生成任務(wù)中神經(jīng)網(wǎng)絡(luò)系統(tǒng)無法有效結(jié)合文章和答案句信息的問題。本文通過句子級別的注意力機(jī)制和文章級別的注意力機(jī)制融合文章信息和近答案句子信息,獲得語義信息更豐富且更注意答案的編碼表示,提升了模型對答案的語義理解。本文還提出一種新的評估方法,根據(jù)生成問題的可回答率評判問題與答案的相關(guān)程度。
雖然本文模型在BLEU等指標(biāo)上取得了較好結(jié)果,但問題生成是一個(gè)一對多的任務(wù),在問題多樣性上還沒有很好的評價(jià)方法,未來我們會對此做進(jìn)一步的研究。