王 策, 萬福成, 于洪志, 馬 寧, 吳甜甜, 楊方韜
(西北民族大學(xué) 中國民族語言文字信息技術(shù)教育部重點實驗室, 蘭州 730030)
自動問答系統(tǒng)是自然語言處理領(lǐng)域的重要任務(wù)之一, 旨在讓用戶使用自然語言直接與問答系統(tǒng)交互, 無需考慮使用什么樣的關(guān)鍵詞組合表達(dá)自己的意圖; 問答系統(tǒng)能精確地返回問題答案, 用戶無需從大量復(fù)雜的相關(guān)文檔中自己尋找答案。傳統(tǒng)自動問答系統(tǒng)主要由3部分組成: 問句分析、 信息檢索和答案抽取[1]。多年來, 在候選答案句的抽取研究上, 國內(nèi)外取得了不錯的進展。隨著技術(shù)發(fā)展, 方法也在不斷更新。最早由Cui等[2]提出一種與之前使用的模式匹配方法不同的模糊關(guān)系匹配的方法, 其采用基于互信息和最大值期望的模糊關(guān)系匹配方法, 即基于統(tǒng)計模型的模糊關(guān)系匹配方法, 取得了當(dāng)時最好的實驗效果。該方法沒有考慮到問句中關(guān)鍵詞(非停用詞)在候選答案句中存在的同義表達(dá)。
在傳統(tǒng)機器學(xué)習(xí)方法的使用上, Huang等[3]通過SVM(Support Vector Machine)模型對原始句子進行分類, 雖然其主要任務(wù)不是做候選答案句抽取, 但其處理思路與候選答案句抽取任務(wù)十分相似, 都是通過對給定句子進行人工標(biāo)記, 進行有監(jiān)督學(xué)習(xí), 最后學(xué)習(xí)到句子間語義關(guān)系。此外, Ding等[4]通過對CRF(Conditional Random Field)模型的研究, 提出了一種能獲取上下文語義信息特征關(guān)系的方法, 用以抽取問句與答案句之間的語義關(guān)系。Yao等[5]在CRF模型的基礎(chǔ)上對傳統(tǒng)分類任務(wù)進行了創(chuàng)新, 將候選答案句抽取任務(wù)轉(zhuǎn)換成序列標(biāo)注任務(wù)。可見, CRF模型在答案句抽取上也取得了不錯的效果。
隨著深度學(xué)習(xí)方法興起, 國內(nèi)外學(xué)者將深度神經(jīng)網(wǎng)絡(luò)應(yīng)用在自然語言處理領(lǐng)域, 各項性能得到了不錯的提升。Wang等[6]使用長短時記憶網(wǎng)絡(luò)進行問答系統(tǒng)的答案句抽取, 為了降低問答系統(tǒng)中句內(nèi)語法特征和一些其他因素對結(jié)果的影響, 他們采用了將單向LSTM(Long Short-Term Memory)擴展為雙向長短時記憶網(wǎng)絡(luò)的方法。Gong等[7]將端到端指針網(wǎng)絡(luò)應(yīng)用于句子排序中, 該方法充分發(fā)揮了端到端網(wǎng)絡(luò)的特點, 只需對句子進行詞向量表示, 并輸入到端到端網(wǎng)絡(luò)中, 模型會通過指針網(wǎng)絡(luò)對句子集合的特征進行學(xué)習(xí), 最后直接輸出句子排序。2016年, 在NLPCC組織的基于文檔的中文問答評測(DBQA: Document Based Question Answer)的比賽中, Fu等[8]將額外的文本特征加入到CNN(Convolutional Neural Networks)網(wǎng)絡(luò)中, 在效果上取得了小幅提升。但單獨使用CNN網(wǎng)絡(luò)的效果不是很好, 這說明傳統(tǒng)方法的應(yīng)用在中文語料上有一定的作用。隨著注意力機制的提出, 熊雪[9]提出了引入注意力機制的答案選擇模型, 其層疊注意力機制增強模型捕捉句間語義邏輯關(guān)系, 通過詞匹配的方法增強模型對未登錄詞的匹配情況, 最終取得了不錯的效果。
從20世紀(jì)60年代開始, 國外學(xué)者就已開始對問答技術(shù)進行研究, 但大多以英文為主要研究對象, 中文問答系統(tǒng)相比英文起步較晚。開放域問答系統(tǒng)與限定領(lǐng)域問答系統(tǒng)相比的最大障礙在于知識庫的構(gòu)建過程, 目前將非結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù)自動轉(zhuǎn)化為結(jié)構(gòu)化知識庫的技術(shù)尚不成熟, 同時在大數(shù)據(jù)時代, 產(chǎn)生的數(shù)據(jù)量越來越龐大, 開放域問答系統(tǒng)的答案抽取工作變得更加困難。針對以上情況, 筆者將答案抽取過程分為兩個步驟進行: 1) 答案句抽取, 即從答案片段中抽取包含答案的句子; 2) 從答案句中抽取答案。抽取到的答案句是否包含答案將直接影響最終結(jié)果的準(zhǔn)確率。在目前公開的自動問答系統(tǒng)語料庫中, 候選答案句數(shù)量一般在20句左右, 語句內(nèi)容信息也會更加復(fù)雜。筆者主要研究計算機自動識別答案句, 并在傳統(tǒng)方法的基礎(chǔ)上進行改善, 提高答案句抽取的準(zhǔn)確率。為此, 提出一種將Bi-LSTM(Bi-directional Long Short-Term Memory)網(wǎng)絡(luò)與Max Pooling結(jié)合的方法進行答案句抽取。
筆者主要討論答案句的定位和抽取過程, 具體例子如表1所示。
表1 問題句與候選答案句對
由表1可見, 在8個候選答案句中, 只有第1句包含正確答案, 故將其定義為答案句。答案句抽取模型的核心原理是使用Bi-LSTM對問句和答案句進行特征提取, 然后使用CNN中的池化層對特征進行下采樣, 剔除冗余的特征信息。
對于問答系統(tǒng)中的答案抽取問題, 相對于傳統(tǒng)的問句語義和證據(jù)片段語義關(guān)系匹配的方法, 筆者將其看作為一種信息檢索和序列標(biāo)注問題, 即將給定問題放入搜索引擎進行檢索, 抓取證據(jù)片段并對其斷句作為候選答案句, 通過答案句抽取模型標(biāo)注出可能包含答案的句子。
答案句抽取模型主要包含3層: 詞向量層、 Bi-LSTM層和Max Pooling層。模型架構(gòu)圖如圖1所示。
圖1 基于Bi-LSTM和Max Pooling的答案句抽取方法架構(gòu)圖Fig.1 Architecture diagram of the answer sentence extraction method based on Bi-LSTM and Max Pooling
1.2.1 詞向量層
首先, 通過Word2Vec(Word to Vector)得到問句和候選答案句中每個詞對應(yīng)的詞向量表示, 并輸入Bi-LSTM層。向量表示了問句和候選答案句中所有信息, 這對實驗結(jié)果影響重大。假設(shè)問句Q 包含n個詞,Q={x1,x2,…,xn},xi代表問句中第i個詞。如果問句中包含答案信息詞, 則把該詞加入答案詞向量。例如, 對于問題Q“科比曾經(jīng)效力哪只球隊?”, 對應(yīng)答案A“洛杉磯湖人隊。”, 則用Q和A一起表示該問題。利用詞向量矩陣Ew獲得詞向量, 用d表示向量的維度,vw表示詞匯大小[10]。通過
ei=Ewvi
(1)
可將一個詞xi轉(zhuǎn)變?yōu)樵~向量。其中vi是向量vw的大小。筆者使用的詞向量由wiki百科數(shù)據(jù)訓(xùn)練獲得。通過以上處理, 問句將以詞向量{e1,e2,…,en}的形式進入下一層網(wǎng)絡(luò)。
1.2.2 Bi-LSTM層
Bi-LSTM為雙向長短期記憶網(wǎng)絡(luò), 由前向LSTM與后向LSTM組合而成, 兩者通常用于在自然語言處理任務(wù)中對上下文信息進行建模。
LSTM的全稱是長短期記憶網(wǎng)絡(luò), 它是RNN(Recurrent Neural Network)的一種。由于其設(shè)計上的特點, LSTM非常適合用于建模時間序列數(shù)據(jù), 如文本數(shù)據(jù)。但利用LSTM網(wǎng)絡(luò)建模句子仍存在問題: 無法編碼從后到前的信息。例如, “我餓得不行了”, 這里的“不”是對“餓”程度的描述。而Bi-LSTM是通過將正向LSTM和反向LSTM結(jié)合, 所以在效果上得到了提升。
1.2.2.1 LSTM
LSTM采用相加的方法將詞向量組合成句子的向量表示, 即將所有詞的向量表示進行加和, 或取平均, 但是該方法沒有考慮到詞語在句子中前后順序關(guān)系。LSTM通過訓(xùn)練過程可學(xué)到記憶哪些信息和遺忘哪些信息, 使用LSTM模型可更好捕捉到較長距離的依賴關(guān)系。
圖2 總體框架Fig.2 Overall framework
圖3中實線部分為計算遺忘門, 選擇要遺忘的信息過程如下。
輸入: 前一時刻的隱藏層狀態(tài)ht-1, 當(dāng)前時刻的輸入詞Xt。
輸出: 遺忘門的值
ft=σ(Wf[ht-1,Xt]+Bf)
(2)
圖4中實線部分為計算記憶門, 選擇要記憶的信息過程如下。
輸入: 前一時刻的隱藏層狀態(tài)ht-1, 當(dāng)前時刻的輸入詞Xt。
輸出: 記憶門的值it, 臨時細(xì)胞狀態(tài)
it=σ(Wi[ht-1,Xt]+bi)
(3)
(4)
圖3 計算遺忘門 圖4 計算記憶門和臨時細(xì)胞狀態(tài) Fig.3 Calculating forgetting gates Fig.4 Calculating memory gates and temporary cell states
圖5中實線部分為計算當(dāng)前時刻細(xì)胞狀態(tài)過程, 具體如下。
輸出: 當(dāng)前時刻細(xì)胞狀態(tài)
(5)
圖6中實線部分為計算輸出門和當(dāng)前時刻隱藏層狀態(tài)的過程, 具體如下。
輸入: 前一時刻的隱藏層狀態(tài)ht-1, 當(dāng)前時刻的輸入詞Xt和細(xì)胞狀態(tài)Ct。
輸出: 輸出門的值Ot, 隱藏層狀態(tài)ht:
Ot=σ(Wo[ht-1,Xt]+bo)
(6)
ht=Ottanh(Ct)
(7)
最終, 可得一系列與句子長度相同的隱藏層狀態(tài){h0,h1,…,hn-1}。
1.2.2.2 Bi-LSTM
(8)
最后的輸出是向前向后融合的結(jié)果。例如, 對“我愛足球”這句話進行編碼, 模型如圖7所示。
圖7 Bi-LSTM編碼句子的網(wǎng)絡(luò)結(jié)構(gòu)Fig.7 Network structure of Bi-LSTM encoded sentences
對于前向LSTMf, 按順序輸入“我”, “愛”, “足球”得3個向量{hf0,hf1,hf2}。對于后向LSTMb, 按順序輸入“足球”, “愛”, “我”得3個向量{hb0,hb1,hb2}。最后將前向和后向的隱向量進行拼接得{[hf0,hb2],[hf1,hb1],[hf2,hb0]}, 即{h0,h1,h2}。
1.2.3 Max Pooling
Max Pooling對于無論出現(xiàn)在什么位置的主要特征, 都可保持特征位置信息且具有旋轉(zhuǎn)不變性, 因為無論主要特征出現(xiàn)在哪個位置, 都可把它提出。在NLP(Natural Language Processing)中, 特征位置信息至關(guān)重要, 比如主語一般位于句首, 賓語位于句尾等, 這些特征的位置信息對分類任務(wù)十分重要。
圖8 Filter與神經(jīng)元個數(shù)相對應(yīng)Fig.8 Filter corresponding to the number of neurons
Max Pooling在卷積網(wǎng)絡(luò)中主要用于減少網(wǎng)絡(luò)參數(shù), 降低網(wǎng)絡(luò)復(fù)雜度, 減少運算量。在Max Pooling操作后, 2D或1D的數(shù)組通常被轉(zhuǎn)換為單一數(shù)值, 以便之后使用在卷積層或全連接隱藏層中, 還能減少單個濾波器的參數(shù)數(shù)量或隱藏層神經(jīng)元的數(shù)量。
對于NLP任務(wù), Max Pooling能將變長輸入處理為一個定長輸入。因為CNN最終會連接到全連接層, 且需要預(yù)先確定神經(jīng)元個數(shù), 如果輸入的長度不確定, 則難以設(shè)計其網(wǎng)絡(luò)結(jié)構(gòu)。綜上所述, CNN模型的輸入長度是不確定的, 并且每個Filter通過Max Pooling 操作只取1個值, 則有多少個Filter, Max Pooling層就有對應(yīng)多少個神經(jīng)元, 這樣就可固定特征向量神經(jīng)元個數(shù)(見圖8), 這個優(yōu)點也是非常重要的。
近年來, 國內(nèi)外專家學(xué)者在答案抽取這方面做了很多研究, 但是其中絕大多數(shù)都是在英文TREC(Text Retrieval Conference)語料的基礎(chǔ)上做的研究和評測, 在中文語料上的研究很少。該實驗使用的訓(xùn)練語料是使用搜索引擎將答案片段從百度百科中下載到本地數(shù)據(jù)庫, 經(jīng)清洗標(biāo)注等處理后得到。訓(xùn)練語料共計18萬多行, 測試語料1萬多行。
由于語料庫的準(zhǔn)確性直接影響到實驗結(jié)果, 筆者的語料標(biāo)注采用人工標(biāo)注方法, 使用將問句中的主干部分動詞和名詞與候選答案句內(nèi)容進行匹配的方法。此方法對于事實類問句, 準(zhǔn)確率基本接近100%。例如, 對于問句“孟加拉虎主要分布在哪里?”, 提取句子主干成分“孟加拉虎”和“主要分布”, 將這兩部分在候選答案句中進行匹配, 標(biāo)注同時包含這兩部分的句子為答案句, 從百度百科爬取的候選答案句與問句相關(guān)性很強且格式相對規(guī)范, 有時僅需匹配一個主要成分即可。對部分需要簡單推理類問句, 需要做些簡單語義理解和近義詞轉(zhuǎn)換, 如問句“謙卑這個詞語來自哪里?”, 即轉(zhuǎn)換為“謙卑的詞源是什么?”, 這樣就很容易匹配到答案句且能保證準(zhǔn)確率。
實驗的訓(xùn)練數(shù)據(jù)格式規(guī)范, 使用〈問句, 候選答案句, 標(biāo)簽〉格式, 即每行為一個問句、 一個候選答案句、 一個標(biāo)簽, 分別用制表符分隔, 標(biāo)簽為0或1, 即是答案句標(biāo)注為1, 不是為0, 同一問句一般有20句候選答案句, 候選答案句之間的排列是亂序的。具體語料格式如圖9所示。
圖9 語料格式Fig.9 Corpus format
實驗中數(shù)據(jù)的格式如圖9所示。訓(xùn)練集共有163 388對問句-答案句對, 測試集共有10 000對, 每個問句對應(yīng)20多個候選答案句, 因此, 相當(dāng)于訓(xùn)練集中的問題有8 000多個, 測試集中的問題有500多個。
在通常情況下, 一般使用準(zhǔn)確率、 召回率和F值評估模型的性能, 利用無序文檔集合進行計算, 但是筆者針對答案句抽取模型, 使用平均倒數(shù)MRR(Mean Reciprocal Rank,MMRR)和平均準(zhǔn)確率MAP(Mean Average Precision,MMAP)作為評價指標(biāo), 最常用的指標(biāo)為MRR。在筆者的實驗語料中, 大部分問句只有一個答案句與之對應(yīng), 極少部分有多個答案句或沒有答案句, 所以在筆者實驗結(jié)果中, MRR都會比MAP略高一些。
MRR和MAP的具體計算方式如下
(9)
(10)
(11)
其中Q為測試集中所有問題的數(shù)目, ranki表示在生成的預(yù)測答案集合中第1個標(biāo)準(zhǔn)答案的位置,AAveP表示平均準(zhǔn)確率;m為標(biāo)準(zhǔn)答案的數(shù)量;n為預(yù)測答案數(shù)量;k為候選答案句在模型返回的n個預(yù)測答案中排名。
MRR即第1個結(jié)果匹配, 分?jǐn)?shù)為1, 第2個匹配分?jǐn)?shù)為0.5,…, 第n個匹配分?jǐn)?shù)為1/n, 如果沒有匹配的句子分?jǐn)?shù)為0, 最終的分?jǐn)?shù)為所有得分之和。這是國際上通用的對搜索類和問答類系統(tǒng)進行評價的指標(biāo)。
MAP是每對〈問句, 答案句〉檢索后的準(zhǔn)確率的平均值。MAP反映系統(tǒng)在全部候選答案句上的性能指標(biāo)。在該模型中, 抽取到的答案句與問句越相關(guān)(值越高, 即包含答案), MAP的值越高。若問答系統(tǒng)沒有抽取到答案句, MAP則為0。
實驗使用雙向長短期記憶遞歸神經(jīng)網(wǎng)絡(luò)(Bi-LSTM)提取句子間的特征屬性, 將Bi-LSTM的隱藏層輸出做Max Pooling操作, 得到Rmax。Rmax在輸入到tanh激活函數(shù)出中輸出最后判斷結(jié)果
M=tanh(Rmax)
(12)
圖10 基于Bi-LSTM的特征提取模型Fig.10 Feature extraction model based on Bi-LSTM
實驗中各個參數(shù)設(shè)置如下: dropout設(shè)置為1, 詞向量的維度設(shè)置為50, 學(xué)習(xí)率設(shè)置為0.3, 學(xué)習(xí)率下降速度設(shè)置為0.1, 學(xué)習(xí)速度下降次數(shù)設(shè)置為4, 每次學(xué)習(xí)速度指數(shù)下降前執(zhí)行的完整epoch次數(shù)設(shè)置為100, LSTM cell中隱藏層神經(jīng)元的個數(shù)設(shè)置為100, 句子中的最大詞匯數(shù)目設(shè)置為100。
用Dropout防止網(wǎng)絡(luò)在訓(xùn)練過程中出現(xiàn)過擬合的現(xiàn)象, 該實驗中未發(fā)生過擬合現(xiàn)象, 故將dropout設(shè)置為1。若降低dropout值會使結(jié)果變差; epoch是訓(xùn)練的批次數(shù), epoch也需設(shè)定在合理的范圍內(nèi), epoch越大訓(xùn)練效果不一定越好, epoch過大, 也會發(fā)生過擬合的現(xiàn)象; 學(xué)習(xí)率、 學(xué)習(xí)率下降速度和學(xué)習(xí)下降次數(shù)3組數(shù)值相互影響, 3個值大小和epoch取值大小有直接關(guān)系, 筆者給出的數(shù)據(jù)是通過多次實驗取得的最佳結(jié)果; 詞向量的維度大小根據(jù)文獻[11]和平時實驗經(jīng)驗得到, 一般情況取值為50, 在該實驗中詞向量維度大小對實驗結(jié)果影響不大。
通過運行各個模型得實驗結(jié)果如表2所示。
表2 各個模型在實驗中的最優(yōu)結(jié)果
將LSTM模型的實驗結(jié)果作為參考, 在該語料中, 其MAP和MRR指數(shù)分別達(dá)到了0.339 5和0.339 4。
LSTM模型的優(yōu)點是能在存取輸入和輸出序列的過程中, 映射上下文相關(guān)信息。但標(biāo)準(zhǔn)的LSTM在遇到較長句子時, 對下文文字的利用和對上文前部文字的記憶能力下降, 使隱藏層的輸入對于網(wǎng)絡(luò)輸出的影響隨著網(wǎng)絡(luò)層數(shù)的增長而降低。
CNN最初應(yīng)用于圖像領(lǐng)域, 目前在NLP領(lǐng)域的應(yīng)用取得了不錯的效果, 卷積核在句子中進行卷積, 每次只對兩個詞進行組合, 從中選出最有可能的一組, 即進行Max Pooling操作, 使用不同的濾波器得到不同的結(jié)果, 最終進行加權(quán)組合得到一個新的詞。CNN這種卷積操作和池化操作同時使用的模型, 使句子空間特征消失, 這對于文本即不再考慮句子的語序關(guān)系, 而是將句子中的關(guān)鍵詞提取出, 再通過訓(xùn)練好的網(wǎng)絡(luò)進行新的排序, 組合成一個新的句子, 這會使句子的向量表征與原本的句子語義有所沖突。
針對這兩種模型的優(yōu)缺點, 分別取他們在文本處理中效果好的部分并加以修改, 最終建立了Bi-LSTM和Max pooling結(jié)合的模型。使用Bi-LSTM進行特征提取, 該方法既能改善單向LSTM網(wǎng)絡(luò)對較長句子中開始部分文字的記憶能力, 又能避免卷積操作不能充分利用句子間時序關(guān)系提取語句特征關(guān)系的問題。保留了卷積神經(jīng)網(wǎng)絡(luò)中的Max Pooling層以降低提取的句子維度, 同時可以保留主要特征。在相對于基線LSTM方法和CNN方法, 筆者答案句抽取模型取得良好效果, MAR和MRR指數(shù)達(dá)到了0.747 5和0.749 7。
李超等[12]通過在長短時記憶神經(jīng)網(wǎng)絡(luò)中借助依存句法樹分析句法結(jié)構(gòu)特征, 構(gòu)造深度學(xué)習(xí)網(wǎng)絡(luò)進行答案抽取, MRR取得了0.71; 俞霖霖[13]通過將CNN與SVM進行融合, 將CNN模型自動學(xué)習(xí)到的特征加入到SVM中, 答案抽取結(jié)果得到了很好的效果, MAP和MRR指數(shù)達(dá)到了0.786和0.789。這兩種方法都是將人工提取句子的語言學(xué)特征加入到神經(jīng)網(wǎng)絡(luò)中學(xué)習(xí), 其中文獻[12]選用NLPCC 2015 發(fā)布的QA 評測問題集, 候選答案句實驗數(shù)據(jù)爬取于百度知道, 文獻[13]使用從百度百科中爬取到數(shù)據(jù)構(gòu)建, 與本實驗的語料庫來源相同, 故存在可比性。筆者實驗結(jié)果和文獻[12]的實驗結(jié)果對比可知雙向循環(huán)網(wǎng)絡(luò)在時序問題中有更好的效果; 和文獻[13]的實驗結(jié)果對比可知, 在神經(jīng)網(wǎng)絡(luò)中加入人工提取的語句特征會有更好的效果。
筆者將問答系統(tǒng)中答案抽取任務(wù)分解為兩個步驟進行: 第1步從證據(jù)片段中進行答案句抽取; 第2步從抽取到的答案句中抽取最終答案。使用Bi-LSTM和Max Pooling結(jié)合的方法構(gòu)建答案句抽取模型, 提取問句與候選答案句之間的特征關(guān)系, 訓(xùn)練其抽取與標(biāo)注的結(jié)果。實驗結(jié)果證明, 在Bi-LSTM中加入CNN中的Max Pooling方法能有效提升答案句抽取的準(zhǔn)確率。
筆者主要的創(chuàng)新點主要分為3點: 1) 將答案抽取任務(wù)分解為兩步進行處理; 2) 對比傳統(tǒng)的方法使用了深度神經(jīng)網(wǎng)絡(luò)結(jié)果建模處理候選答案句抽取任務(wù); 3) 使用Bi-LSTM網(wǎng)絡(luò)代替CNN中的卷積操作提取句子特征, 與Max Pooling融合構(gòu)建了新的模型。
筆者方法對事實類問題有著較好的效果, 通過對比其他研究人員的實驗發(fā)現(xiàn), 雖然將語言學(xué)知識或人工提取的特征加入到神經(jīng)網(wǎng)絡(luò)訓(xùn)練中, 可使效果更好一些, 但會耗費人力和時間, 而筆者方法在此方面更具優(yōu)勢。