武愷莉,朱朦朦,朱鴻雨,張熠天,洪宇
(1.蘇州大學 計算機科學與技術學院,江蘇 蘇州 215006;2.國家工業(yè)信息安全發(fā)展研究中心,北京 100043)
問題生成(question generation,QG)是智能問答領域一個重要的任務。問題生成任務有多種輸入形式,比如自由文本、表格數(shù)據(jù)等。本文研究答案可知的句子級問題生成任務,即輸入為陳述句和目標答案,自動生成對應的問句。如例1所示(選自SQuAD測試集),通過理解陳述句和目標答案的語義,自動生成疑問句。問題生成任務可以應用于醫(yī)療、教育、對話等領域。此外,該任務還可以生成大量問答對,用于擴充問答系統(tǒng)的語料資源,協(xié)助自動問答系統(tǒng)構建[1-2]。
本文對答案可知的問題生成(answer-aware question generation)任務展開研究,對現(xiàn)有基于神經(jīng)網(wǎng)絡的問題生成模型進行改進,以優(yōu)化該任務的性能。特別地,本文主要關注以下兩個問題:其一是提高疑問句對應問題類型的準確率;其二是減輕生成問題與目標答案重復詞的現(xiàn)象。如例1、例2所示,例1中疑問句的問題類型為“what”,例2為“when”。問題類型標識該疑問句提問的目標,對一個疑問句來說這是很重要的。所以,提高問題類型的準確率有助于生成正確的疑問句,保證與目標答案匹配。另一方面,從語言學角度,疑問句中包含要回答的答案的現(xiàn)象很少見。據(jù)觀測,在現(xiàn)有研究生成的問句中不存在上述現(xiàn)象。因此,本文提出一種融合問題類型和懲罰機制的問題生成模型來改進上述問題。
例1
源端陳述句:Antibiotics revolutionized medicine in the 20th century,and have together with vaccination led to the near eradication of diseases such as tuberculosis in the developed world.<譯文:抗生素在20世紀使醫(yī)學發(fā)生了革命性的變化,并與疫苗一起使發(fā)達國家的結(jié)核病等疾病幾乎根除。>
目標答案:20th <譯文:20世紀>
疑問句:In what century did antibiotics revolutionized medicine?<譯文:抗生素在哪個世紀徹底改變了醫(yī)學?>
例2
源端陳述句:By 1139,Portugal had established itself as a kingdom independent from León.<譯文:到1139年,葡萄牙已經(jīng)建立了一個獨立于里昂的王國。>
目標答案:1139
疑問句:By what year had Portugal established itself as an independent kingdom?<譯文:葡萄牙在哪一年建立了自己的獨立王國?>
本文在斯坦福閱讀理解數(shù)據(jù)集(Stanford question answering dataset,SQuAD)[3]上進行實驗,使用Du等[4]的數(shù)據(jù)劃分方式。實驗結(jié)果顯示,本文所提方法能取得較好的性能。
本文的主要貢獻包括:
(1) 通過BERT[5]模型訓練問題類型分類器,得到每個輸入的問題類型表示。利用門控機制在編碼端融入問題類型,得到具有問題類型信息的源端陳述句表示。
(2) 提出一種懲罰機制,即在損失函數(shù)中加入對生成目標答案中詞的懲罰,用于減輕從目標答案生成詞的情況。
本文組織形式如下,第1節(jié)簡要介紹問題生成任務的相關工作;第2節(jié)給出本文所研究的答案可知的問題生成任務的定義;第3節(jié)詳細描述本文所提方法的細節(jié);第4節(jié)介紹本文所用的數(shù)據(jù)集、實驗配置以及評價指標;第5節(jié)展示和分析實驗結(jié)果;第6節(jié)總結(jié)全文并展望未來工作。
目前,問題生成的研究思路主要分為兩種,其一是基于人工編寫的問題模板轉(zhuǎn)換得到疑問句,其二是基于端到端的神經(jīng)網(wǎng)絡將陳述句編碼后解碼生成疑問句。
基于規(guī)則的問題生成依賴于深層的語言知識,以及精心設計的陳述句到疑問句的轉(zhuǎn)換規(guī)則。Lindberg等[6]結(jié)合語義標記信息提出一種復雜的基于模板的方法。將基于語義的方法的好處與基于模板的方法的表面形式靈活性相結(jié)合,最重要的一點是不受語法的嚴格約束。Heilman等[7]重復使用人工編寫的規(guī)則將陳述句轉(zhuǎn)換為疑問句,然后使用邏輯斯蒂回歸模型將重復生成的疑問句進行排序,按比例保留排序靠前的疑問句。
隨著神經(jīng)網(wǎng)絡以及大規(guī)模數(shù)據(jù)集的出現(xiàn),基于神經(jīng)網(wǎng)絡的問題生成研究逐漸被關注。Du等[4]首次將神經(jīng)網(wǎng)絡模型應用在問題生成任務中,使用基于注意力機制的端到端模型,實驗表明生成的疑問句在自動評價方法上可取得不錯的性能,人工評價也優(yōu)于基于規(guī)則的問題生成方法。由于Du等[4]未使用答案信息,這類研究也稱為答案不可知的問題生成(answer-agnostic question generation)。Scialom等[8]將Transformer[9]框架應用于答案不可知的問題生成任務,并提出三種解決未登錄詞的策略。為了使生成的疑問句用于提問某個答案的,出現(xiàn)了答案可知的問題生成(answer-aware question generation)任務。Zhou等[10]加入詞匯特征以及目標答案的信息,幫助模型生成更為具體的疑問句,并且使用拷貝機制[11]拷貝一些詞表中沒有的源端單詞。Dong等[12]利用問題類型的語義特征,通過使用問題分類模型對目標答案的類型進行預測,加入到問題生成過程,生成具體的問句。Zhou等[13]將語言模型作為輔助任務,通過多任務學習提升性能。
基于規(guī)則的方法領域性較強,普適性較低。而且問題模板更注重于句子的結(jié)構信息,忽略句子的語義信息。與此相比,基于端到端神經(jīng)網(wǎng)絡的方法可以使模型自適應學習,省去人工構造規(guī)則。此外,大規(guī)模閱讀理解數(shù)據(jù)集的開放,也為問題生成任務提供了更多的語料資源,推動了基于端到端神經(jīng)網(wǎng)絡方法的發(fā)展。
(1)
其中,P(y|X,A)表示給定X和A的條件下,預測問句的對數(shù)條件概率。
本文基于編碼器-解碼器框架,結(jié)合問題類型以及懲罰機制,對現(xiàn)有答案可知的問題生成架構進行優(yōu)化。使用預訓練模型BERT[5]微調(diào)問題類型分類器,得到問題類型的表示。在原有編碼端產(chǎn)生的語義表示上,通過門控機制與問題類型表示進行融合,用于提高生成的問句對應類型的準確率。此外,在解碼生成疑問句時,加入對復制目標答案詞的懲罰項,減輕從目標答案生成問句的現(xiàn)象。本文的模型總體架構如圖1所示。
圖1 模型總體架構圖
因此,經(jīng)過編碼層得到X對應的隱狀態(tài)表示為o={o1,o2,…,om}。
本文定義了常見的7種問題類型(“what”“who”“how”“which”“when”“where”“why”)以及其他類“others”。根據(jù)疑問句中是否出現(xiàn)上述問題類型詞,給出對應的問題類型標記;若都未出現(xiàn),則標記為“others”。
本文使用BERT模型[5]在問題類型分類任務上進行微調(diào)。考慮到同一個源端陳述句可能包含多個目標答案,從而生成不同問題類型的疑問句。所以,本文輸入為源端陳述句X和目標答案A,輸出為對應問題類型。
(5)
其中,wo、wq、bgate為模型參數(shù),σ表示sigmoid激活函數(shù)。
3.4.1 初始化解碼狀態(tài)
本文使用單層Bi-LSTM對目標答案A單獨編碼,得到隱狀態(tài)表示,并用最后一個時刻的隱狀態(tài)han初始化解碼狀態(tài)h0,如式(8)所示。
h0=han
(8)
3.4.2 注意力機制
注意力機制的作用是在當前解碼時刻生成問句中詞的時候,注意到源端陳述句中有關的部分,從而生成更好的問句。本文用Bahdanau等[15]提出的注意力計算方式。在解碼的每個時刻t,計算當前時刻對源端表示s的注意力分布at,加權求和得到語義向量ct。計算過程如式(9)~式(11)所示。
其中,v,Ws,Wh,battn為可訓練的模型參數(shù),ht指當前時刻的隱狀態(tài)。
3.4.3 拷貝機制
拷貝機制的作用是讓模型能從源端陳述句中生成詞。本文使用的拷貝機制繼承自See等[16]的工作,通過計算從詞表中生成詞的概率pgen來實現(xiàn),則從源端拷貝單詞的概率為1-pgen。計算過程如式(12)所示。
(12)
其中,wc、wh、wx、bp為可訓練的參數(shù)。
3.4.4 生成器
解碼生成詞的概率分布由兩部分組成,其一,從詞表生成詞對應的概率分布Pvocab;其二,使用注意力分布at直接從源端陳述句拷貝生成詞。利用公式(12)中的生成概率pgen計算最終的概率分布P(W),計算如式(13)~(14)所示。
Pvocab(wt)=softmax(V(V′[ht,ct]+b)+b′)
(13)
(14)
其中,V、V′、b、b′為可訓練的模型參數(shù)。利用最終的概率分布即可得到當前時刻生成的單詞。當解碼生成的單詞為“
本文使用交叉熵作為損失函數(shù),計算模型生成的疑問句與目標疑問句的損失,如式(15)所示。
(15)
其中,T為目標疑問句的長度,P(wt)為當前時刻目標疑問句中的單詞對應的生成概率。
本文在損失函數(shù)中加入懲罰機制,用于抑制模型從目標答案中生成詞,本文在損失函數(shù)中加入罰項Lans,計算如式(16)所示。
(16)
其中,n為目標疑問句的長度,P(wt)為目標答案中的詞對應的生成概率。即,當前目標答案中詞對應的概率P(wt)越大,則對應的損失值越大。
最終的損失函數(shù)為兩部分損失加權求和,如式(17)所示。
Lall=λL+(1-λ)Lans
(17)
其中,λ為權重因子。
本文在SQuAD問題生成數(shù)據(jù)集上進行實驗,來驗證所提方法的有效性。該數(shù)據(jù)集來源于閱讀理解數(shù)據(jù)集SQuAD,數(shù)據(jù)劃分方法和Du等[4]相同。
原始SQuAD數(shù)據(jù)集是從維基百科的536篇文檔的段落中構建的問答對,這些問答對由眾包工作者提供,并且要求答案是段落的一部分,共有超過100k的問答對。Du等人將包含答案的句子抽取出來作為問題生成語料的源端陳述句,問題則為要生成的疑問句。因為原始SQuAD數(shù)據(jù)集的測試集不公開,所以Du等重新劃分訓練集、開發(fā)集和測試集,數(shù)量分別為70 484、10 570和11 877條。由于Du等人沒有使用目標答案,本文根據(jù)原始SQuAD 數(shù)據(jù)集從陳述句中抽取目標答案。表1列出了該數(shù)據(jù)集源端陳述句、目標答案以及目標疑問句對應的平均長度。
表1 平均長度統(tǒng)計表
本文所使用的問題類型分類器數(shù)據(jù)集輸入為陳述句和目標答案。輸出為問題類型標簽,通過構造規(guī)則從目標疑問句中抽取,規(guī)則如下:
(1) 定義問題類型標記列表[“what” “who”“how”“which”“when”“where”“why”]。
(2) 查找疑問句中是否包含上述某個標記,若有,則對應問題類型為此標記;若無,則對應問題類型標記為“others”。
(3) 對訓練集、開發(fā)集以及測試集進行問題類型標記,得到問題類型分類數(shù)據(jù)集。
經(jīng)統(tǒng)計,每個類別對應的數(shù)量如表2所示。
表2 問題類型統(tǒng)計表
續(xù)表
4.2.1問題類型分類器超參數(shù)設置
本文使用BERT-Base模型(12-layer,768-hidden,12-heads)進行微調(diào),最大長度設置為150,訓練階段batch_size為16,學習率(learning_rate)為5e-5。
本文使用驗證集上性能最好的模型作為分類器,對所有數(shù)據(jù)抽取問題類型進行表示。
4.2.2 問題生成模型超參數(shù)設置
本文在源端和目標端使用相同的詞表,詞表大小為47 385。預訓練詞向量來源于GloVe[17],其維度為300。位置向量是隨機初始化的向量,其維度為16。編碼層和解碼層的LSTM隱含層單元(hidden size)為256維。模型優(yōu)化器為Adam[18],其學習率(learning rate)為0.000 5。批量數(shù)據(jù)大小(batch size)為16。測試階段,使用集束搜索(beam search),其大小(beam width)為4。源端陳述句最大長度為100,目標答案最大長度為5,解碼生成疑問句的長度為30。損失函數(shù)的權重因子λ取0.5。
4.3.1問題類型分類器評價指標
本文使用準確率(accuracy,A)評價問題類型分類器,即正確預測的數(shù)量/樣本總數(shù)。
4.3.2 問題生成模型評價指標
本文使用和Du等[4]相同的評價指標評價生成的疑問句,包括BLEU[19]、METEOR[20]以及ROUGEL[21],使用現(xiàn)有開源的評價方法包[22]計算上述值。BLEU用來評價候選文檔在一組參考文檔上的平均n-gram精度,并對過短的句子進行懲罰。BLEU-n表示計算BLEU值使用n-grams統(tǒng)計共同出現(xiàn)的次數(shù),常用計算值有BLEU-1、BLEU-2、BLEU-3以及BLEU-4。METEOR是一種基于召回率的評價指標,通過考慮同義詞、詞干和釋義來計算生成的句子和參考答案的相似度。ROUGE(recall-oriented understudy for gisting evaluation)是一種面向n元詞召回率的評價方法。本文使用ROUGEL進行評價,該值基于最長公共子序列統(tǒng)計共現(xiàn)詞的次數(shù)。
為了驗證所提方法的有效性,本文與現(xiàn)有問題生成模型進行比較。以下簡要介紹本文的對比系統(tǒng)設置。
Du[4]首次將神經(jīng)網(wǎng)絡模型應用于問題生成任務,并從SQuAD數(shù)據(jù)集中抽取陳述句-問題對作為語料。使用基于注意力機制的端到端模型解決答案不可知的問題生成任務,未使用目標答案。
M2S+cp[23]通過多視角上下文匹配算法增強與目標答案相關的部分,匹配策略包括完全匹配、注意力匹配以及最大注意力匹配。此外,在解碼端使用拷貝機制從源端生成詞。
S2S-a-ct-mp-gsa[24]編碼端通過門控自注意力機制實現(xiàn),解碼端是最大化指針網(wǎng)絡,用于提升輸入為較長的陳述句的性能。
Ass2s[25]答案分離的端到端神經(jīng)網(wǎng)絡,將源端陳述句中的目標答案用“”代替,用于學習缺失目標答案的語義。此外,通過Keyword-Net融合目標答案中的關鍵信息。
Wu[26]基于pointer-generator網(wǎng)絡,融合目標答案及其位置信息,用于生成特定目標答案對應的問句。本文以此作為基線系統(tǒng)。
Qiu[27]為了解決生成過多一般性及與源端陳述句、目標答案相關性不大的問題,提出兩種方式。其一,通過部分拷貝機制為詞法上相近的詞設置較高的優(yōu)先級,從而可以生成語法上正確的形式;其二,通過基于閱讀理解的重排序策略在候選問題列表中選擇好的問題。
QPP+QAP+RL[28]通過兩個下游任務增強語義的獎賞,通過強化學習來生成語義有效的問句。兩個下游任務分別為復述識別和閱讀理解任務。
表3列出上述對比系統(tǒng)與本文所提方法的性能。從表中可以看出,本文所提模型在SQuAD數(shù)據(jù)集上BLEU-4值達到最高。
表3 性能對比表
針對答案可知的問題生成任務,如何使用目標答案是很重要的。在所列對比系統(tǒng)中,大多關注點都在源端陳述句和目標答案的交互上,用以突出源端中的目標答案片段。與對比系統(tǒng)不同,本文認為不同的目標答案會對應不同的問題類型,標識了疑問句的提問方向。同時,該問題類型的表示又不應局限于特定的幾種類別,生硬地映射為固定的表示。所以,本文通過目標答案和源端陳述句預測對應的問題類型,并使用門控機制與原有源端表示進行交互,從而獲取具有問題類型信息的表示。通過上述方法,每個輸入端對應的問題類型轉(zhuǎn)換為一個隱式表示,通過門控機制融合到原有表示中,從而提升生成的問句對應問題類型的準確率。
現(xiàn)有答案可知的問題生成模型都注重目標答案的信息融合,導致模型可能會生成包含目標答案中詞的問句。為了減輕這種情況,本文提出懲罰機制,在損失函數(shù)中加入生成與目標答案重復的詞的損失。
由表3可見,本文所提模型的BLEU-4和ROUGEL指標都超過對比系統(tǒng),但是METEOR值略低于QPP+QAP+RL[28]。METEOR是基于準確率和召回率的評價指標,使用WordNet[29]計算特定的序列匹配、同義詞、詞根和詞綴、釋義之間的匹配關系。由于METEOR在計算時會考慮同義詞匹配關系,本文使用WordNet同義詞詞典分別統(tǒng)計了源端陳述句(S)、本文所提方法生成的問句(Qsys)包含目標問句(Qgrd)同義詞的分布情況,如圖2、圖3所示。圖2中,淺色部分表示S中Qgrd同義詞的比例。圖3中,淺色表示Qsys中的同義詞屬于S的比例(即圖3中的淺色部分是圖2中淺色部分的子集)。Qsys中94.7%的同義詞來源于S,但是在S中同義詞占比卻很小,僅1.3%。由此可見,本文系統(tǒng)善于拷貝原句中的詞,但不善于生成同義詞。相對比,人工編輯提供的目標問句(即待生成的問句)中具有很多“同義異構”的表述,這類表述中主要以同義詞為主。METEOR能夠校準同義詞,并將“同義異構”的不同表述視作一致的表述,從而使具有復述學習與生成能力的QPP+QAP+RL模型在METEOR上具有較好效果,而未集成復述學習和生成機制且依賴拷貝機制的本文模型,則在METEOR這一評估過程中,難以得到較高的分值。
圖2 S中同義詞分布圖 圖3 Qsys中同義詞分布圖
在表3的下半部分,本文列出了在基線系統(tǒng)中加入本文所提方法的性能。如表3所示,在基線系統(tǒng)中融合問題類型信息,BLEU-4、METEOR和ROUGEL分別提升1.15%、1.26%和3.3%。由此可見,源端與問題類型交互之后包含了類型信息,從而使得性能提高。在基線系統(tǒng)中加入懲罰機制,帶來0.99%、1.03%、3.21%的性能提高。在加入兩者之后,三個指標較基線系統(tǒng)提升1.47%、1.29%以及3.51%。
為了檢驗指標提升的顯著性,本文選取BLEU_4指標進行顯著性測試。表4列出本文所提模型(ours)、融合問題類型(+qtype)、加入懲罰機制(+penalty)分別與基線模型(baseline)計算的p-value[30]值。該值反映了顯著水平,值越小則顯著水平越高。Johnson[31]建議設置p-value的閾值為0.05,p-value值小于0.05表示顯著,否則表示不顯著。從表4可以看出,本文所提方法在統(tǒng)計上有顯著性提升。
表4 顯著性測試表
本文將在5.2節(jié)和5.3節(jié)分別分析融合問題類型的有效性以及懲罰機制的作用。
為了驗證融合問題類型的有效性,本文計算測試集上BERT問題類型分類器(BERT)、基線系統(tǒng)(baseline)、融合問題類型(+qtype)和本文所提模型(ours)的類型準確率,如表5所示。
從表5可以看出,直接使用BERT在問題類型分類器上進行微調(diào),分類的準確率為73.50%。在源端中融合問題類型的信息,問題類型的準確率達到93.06%,比基線系統(tǒng)高26.21%。由此可見,本文所提融合問題類型的方法極大提升了生成的問題類型的準確性。正確的問題類型表示該疑問句的提問方向是對的,保證目標答案是用來回答該問題的。
表5 問題類型準確率對比表
例3列出了基線系統(tǒng)、融合問題類型以及本文所提模型生成的問句。
例3
源端陳述句:By 1139,Portugal had established itself as a kingdom independent from León.<譯文:到1139年,葡萄牙已經(jīng)建立了一個獨立于里昂的王國。>
目標答案:1139
標準疑問句:By what year had Portugal established itself as an independent kingdom?<譯文:葡萄牙在哪一年建立了自己的獨立王國?>
baseline:Who established itself as a kingdom independent from León?<譯文:誰建立了一個獨立于里昂的王國?>
+qtype:By what year did Portugal become a kingdom independent from León?<譯文:葡萄牙哪一年從里昂獨立出來的?>
ours:By what year was Portugal established as a kingdom independent?<譯文:葡萄牙哪一年建立獨立王國的?>
例3中,目標答案“1139”是一個年份,對應的問題應該是“when”,是對時間的提問。而基線系統(tǒng)生成的問句的問題類型為“who”,與目標答案不符。此外,本文所提方法都生成和目標疑問句一樣的疑問詞“By what year”,比直接將問句中的問題詞變成“when”更接近期望的表述。
本文統(tǒng)計了訓練集、驗證集以及測試集中疑問句與目標答案重復詞數(shù)情況,如表6所示。以上統(tǒng)計不包含停用詞。
從表6可以看出,減少從目標答案中生成問句中的詞是有必要的。從懲罰機制的公式(16)中可以看出,如果當前時刻生成的詞是目標答案中的詞概率較大,那么1-P(wt)會是一個較小的值,對應的損失會很大,在模型優(yōu)化時不從目標答案中生成詞。
表6 疑問句與目標答案重復詞數(shù)統(tǒng)計表
為了區(qū)別不同長度的目標答案,本文選取目標答案長度從1到5統(tǒng)計了基線模型以及加入懲罰機制的模型生成的疑問句與目標答案的重復詞數(shù),如表7所示。由表7可見,懲罰機制對某些長度的目標答案減少了從目標生成詞的情況,對于一些長度的目標答案則效果不是很明顯。本文分析可能的原因是目標答案長度較短,在源端陳述句中占比較少,所以在損失函數(shù)中比較小。
表7 不同長度目標答案重復詞數(shù)統(tǒng)計表
續(xù)表
例4給出加入懲罰機制的模型生成的疑問句的示例對比。
例4
源端陳述句:Antibiotics revolutionized medicine in the 20th century,and have together with vaccination led to the near eradication of diseases such as tuberculosis in the developed world.<譯文:抗生素在20世紀使醫(yī)學發(fā)生了革命性的變化,并與疫苗一起使發(fā)達國家的結(jié)核病等疾病幾乎根除。>
目標答案:20th <譯文:20世紀>
標準疑問句:In what century did antibiotics revolutionized medicine?<譯文:抗生素在哪個世紀徹底改變了醫(yī)學?>
baseline:In what century did antibiotics develop medicine in the 20th century?<譯文:抗生素在20世紀是在哪個世紀發(fā)展成醫(yī)學的?>
+penalty:In what century did antibiotics revolutionized medicine?<譯文:抗生素在哪個世紀徹底改變了醫(yī)學?>
從例4可以看出,基線系統(tǒng)生成的問句包含了目標答案“20th”,而加入懲罰機制的模型生成的問句和目標答案沒有重復,和標準疑問句更相似。
本文旨在研究句子級答案可知的問題生成任務,主要在兩個問題上進行改進。其一,提高問題類型的準確率。其二,根據(jù)觀測目標答案里的詞較少出現(xiàn)在疑問句中,本文提出懲罰機制,使生成的問句更接近人的表述。實驗結(jié)果表明,本文所提模型提高了性能和問題類型的準確率,并且從一定程度上抑制模型從目標答案中生成詞。但是,目前模型還存在一些問題,例如,疑問句和目標答案還存在一些重復詞。在未來工作中,將會思考如何更好地解決上述問題。