馮文政,唐 杰
(清華大學(xué) 計算機(jī)科學(xué)與技術(shù)系,北京 100084)
答案選擇是自動問答系統(tǒng)中的關(guān)鍵問題。其主要任務(wù)是給定一個問題q和一組候選答案集合C={ai│i=1,2,…,n},計算q與每個候選答案ai的相似度,并根據(jù)相似度對所有的候選答案進(jìn)行排序??梢詫⑵淇醋鰹橐环N文本匹配問題,即如何計算兩個文本之間的相關(guān)度。
由于自然語言的復(fù)雜性,計算文本之間的匹配程度存在著多項挑戰(zhàn)[1],主要有:1)詞語語義的多元性。不同的詞語可能表示相同的語義如“荷花”、“蓮花”都是表示一種植物,同理一個相同的詞在不同的語境下會有不同的語義,例如,“蘋果”既可以是一種水果也可以是一家公司。2)短語匹配的結(jié)構(gòu)性,多個詞語可以按照一定的結(jié)構(gòu)組合成短語,匹配兩個短語需要考慮短語的結(jié)構(gòu)信息。例如,“機(jī)器學(xué)習(xí)”和“機(jī)器學(xué)習(xí)”是兩個詞之間的順序匹配,而“機(jī)器學(xué)習(xí)”和“學(xué)習(xí)機(jī)器”只有詞語是匹配的,而順序是打亂的。這兩種情況的匹配程度是不一樣的。3)文本匹配的層次性。文本是以層次化的方式組織起來的,詞語組成短語,短語再組成句子,這導(dǎo)致兩個相似問題往往會具有不同的語法或結(jié)構(gòu)特點。這樣的特性使得我們在考慮文本匹配時要考慮不同層次的匹配信息。
為了解決上述三種挑戰(zhàn),我們提出了一種融合深度匹配特征的排序模型。模型除了利用傳統(tǒng)自然語言特征之外,還使用雙向LSTM模型、2D神經(jīng)網(wǎng)絡(luò)模型等深度匹配模型對文本對之間的語義匹配特征進(jìn)行抽取。在Qatar Living社區(qū)問答數(shù)據(jù)集中的實驗結(jié)果顯示,融合深度匹配特征的答案選擇模型比基于傳統(tǒng)特征的模型MAP值高5%左右。
如圖1所示,整個模型分為三個部分:文本預(yù)處理,特征抽取和特征融合。首先,對原始文本進(jìn)行預(yù)處理;隨后對處理后的文本進(jìn)行特征抽取,模型從傳統(tǒng)自然語言處理模型、深度匹配模型兩個方面進(jìn)行特征抽??;最后將這些特征進(jìn)行融合,將抽取出來的特征利用XGBoost排序框架[2]進(jìn)行排序。下面本文對這三部分做具體描述。
圖1 模型結(jié)構(gòu)圖
在文本預(yù)處理過程中,首先去除停用字,并將所有字母換成小寫,然后對每個句子進(jìn)行句法分析,獲取所有句子的句法樹。我們使用NLTK[3]工具包進(jìn)行文本分詞,使用斯坦福大學(xué)PCFG文法解析器[4]進(jìn)行句法解析。
針對答案選擇任務(wù),我們首先使用了一些傳統(tǒng)的自然語言處理模型進(jìn)行了詞法分析和句法分析,并抽取了關(guān)于詞語和句子結(jié)構(gòu)的特征。
1.2.1 Tf-idf 余弦相似度
Tf-idf(term frequency-inverse document frequency)[5]是一種常用的詞語加權(quán)技術(shù),可以評估詞語在一個語料庫中的重要程度,廣泛應(yīng)用于信息檢索系統(tǒng)中。Tf-idf加權(quán)技術(shù)主要從兩方面考慮:詞頻(term frequency,tf)和逆文檔頻率(inverse document frequency,idf)。
詞頻被定義為一個單詞w在文檔D中出現(xiàn)的次數(shù),如式(1)所示。
其中,tfi,j表示文檔dj中單詞wi的詞頻值:分子ni,j是單詞wi在文檔dj中出現(xiàn)的次數(shù);分母表示文檔dj出現(xiàn)的所有單詞的總次數(shù),其主要用來進(jìn)行歸一化以防止詞頻值偏向于較長的文檔。
相對于詞頻用來衡量單個文檔中詞語的重要性,逆文檔頻率則用來衡量多個文檔中詞語的普遍性。假如一個單詞在過多的文檔中都有出現(xiàn),則說明這個詞比較常見,重要程度就會偏低,如式(2)所示。
其中,分子|D|為文檔庫中的所有文檔數(shù)量,分母|{dj:ti∈dj}|為所有文檔中包含單詞wi的數(shù)量,分母加1是為了防止除數(shù)為0。
從中可以看出,文檔中一個單詞的重要程度與詞頻和逆文檔頻率分別成正比。因此,單詞wi在文檔dj中的Tf-idf權(quán)值可以定義為:
我們將每個文本當(dāng)作一個文檔dj,所有文本集合當(dāng)作文檔集合D。 利用Tf-idf模型,即為文本中的每一個單詞計算Tf-idf權(quán)值。因此每個文本對(q,a)就可以用一個One-Hot權(quán)值向量(vq,va)來表示。通過計算兩個向量間的余弦cos(vq,va)即可得到文本對之間關(guān)于重要單詞覆蓋的相似度,一定程度上反應(yīng)了文本之間的相似程度。
1.2.2 最長公共子序列
若一個序列S分別是兩個序列(q,a)的子序列,且是所有符合條件的序列中最長的,則稱S為q和a的最長公共子序列(longest common subsequence,LCS)[6],最長公共子序列經(jīng)常被用于兩個字符串之間的相似度衡量。本文將最長公共子序列應(yīng)用于衡量兩個文本序列之間的詞法相似度,即將一個句子看作一個序列,序列的元素為每個句子中的所有單詞。最長公共子序列可以使用動態(tài)規(guī)劃(dynamic programming,DP)的方法求解。對于文本對(q,a),其LCS算法描述如下:
(1) 輸入文本對q,a ,其中q=q1,q2,…,qN ,a=a1,a2,…,aM (2) 定義函數(shù)same(x,y): if x == y,return 1,else re-turn 0(3) 初始化二維數(shù)組LCSi,j ,表示q中第i位和a中第j位之間的最長公共子序列,其中,LCS1,1 =same(q1,a1)(4) For i = 1 to N,do: lcsi,j =max(lcsi-1,j-1 +same(q,i,a-j),lcsi-1,j ,lcsi,j-1 ) endFor(5) 輸出lcsN,M
為了避免LCS的值偏向比較長的文本,本文中的模型在計算出兩個文本的LCS之后還要用兩個文本的最大長度進(jìn)行歸一化,最終的LCS相似性如式(4)所示。
傳統(tǒng)的自然語言處理模型主要從詞語和句子結(jié)構(gòu)的角度對文本之間的相似關(guān)系進(jìn)行建模,不能充分考慮兩個句子之間的語義聯(lián)系。因此,除了上述傳統(tǒng)模型之外,我們還利用詞向量技術(shù)和深度匹配模型對文本對之間的語義聯(lián)系進(jìn)行了建模,抽取了句子之間的語義特征。
1.3.1 詞向量余弦相似度
詞向量(word emdedding)技術(shù)可以把每個單詞映射為連續(xù)空間中的向量,詞語之間的語義相似度可以用詞向量之間的余弦相似度表示。本文采用Google開發(fā)的Word2Vec[7-8]在Qatar Living數(shù)據(jù)集上訓(xùn)練得到每個單詞的詞向量,設(shè)置向量維度為200。
得到每個詞向量之后,下一步就是利用詞向量計算出句子之間的相似度,在這里本研究先采用了一個簡單的詞袋模型(Bag of Word)得到每個句子的向量表示,即對句子中的每個詞向量求平均值,計算如式(5)所示。
其中,s為句子的向量表示,si為句子中每個詞的向量表示。計算出每個句子的相似度之后,便可以采用余弦相似度衡量兩個句子之間的語義相似性,對于每個文本對(q,a),詞向量余弦相似度計算方法如式(6)所示。
這種方法計算簡單有效,計算效率高,但不能處理好短語匹配的結(jié)構(gòu)性,文本匹配的層次性等挑戰(zhàn),因此我們還使用了雙向LSTM模型、2D神經(jīng)網(wǎng)絡(luò)模型對文本匹配進(jìn)行建模。
1.3.2 雙向LSTM匹配模型
LSTM(long short term memory)[9]單元是由Hochreiter等提出的一種網(wǎng)絡(luò)結(jié)構(gòu),其將傳統(tǒng)RNN網(wǎng)絡(luò)中的隱含節(jié)點替換成了LSTM單元,可以有效避免傳統(tǒng)RNN模型中的梯度消失等問題。
LSTM用狀態(tài)變量cell當(dāng)前時刻的信息,通過“門控”單元控制cell中的信息更新,其總共分為三個門:輸入門,輸出門和遺忘門,“門控”單元一般用一組sigmoid單元表示,若函數(shù)輸出為1代表信息完全通過,函數(shù)為0代表信息沒有任何信息通過。Cell單元更新的公式如式(7)~式(11)所示:
其中的it,ft,ot,ct和ht分別代表在t時刻輸入門、遺忘門、輸出門和cell的輸出。bi,bf,bo,bc為偏置向量,Wi,Wf,Wo,Wc,Vi,Vf,Vo,Vc為權(quán)重矩陣。LSTM神經(jīng)網(wǎng)絡(luò)模型通過使用門限控制單元,使得反向傳播時梯度由傳統(tǒng)RNN的累乘變成了累加,成功避免了梯度消失問題。除此之外,LSTM表達(dá)力強(qiáng)且容易訓(xùn)練,在實際中被廣泛應(yīng)用。
由于單向LSTM是將文本中的單詞順序輸入的,在訓(xùn)練過程中只能利用之前單詞的信息。所以在文本建模任務(wù)中,為了充分利用前面單詞和后面單詞的信息,充分掌握整個句子的語義信息,生成更全面的句子向量表示,我們使用雙向LSTM型進(jìn)行特征抽取。雙向LSTM模型使用兩個LSTM模型分別對文本進(jìn)行順序建模和倒序建模,對兩個LSTM的隱狀態(tài)輸出連接起來作為整個模型的隱狀態(tài)輸出,整個結(jié)構(gòu)如圖2所示。
圖2 雙向LSTM模型架構(gòu)
這樣計算出的ht可以更全面地表示出詞語的上下文信息。
我們采用的雙向LSTM模型具體結(jié)構(gòu)如圖3所示。對于文本對(q,a),首先將句子中每個詞的詞向量輸入到雙向LSTM中,將兩個LSTM的隱狀態(tài)輸出連接成為一個向量表示,作為雙向LSTM的隱含輸出,之后將所有單詞的隱含輸出取平均分別得到兩個句子的向量表示。最后將兩個句子的向量輸入到一個MLP模型中進(jìn)行分類,計算出整個兩個文本的相似度。模型采用上節(jié)中用的詞向量作為輸入,使用交叉熵作為代價函數(shù),交叉熵函數(shù)定義如式(13)所示。
其中,li∈{0,1}為類別標(biāo)記,f(sx,i,sy,i)表示需要訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型。
圖3 雙向LSTM匹配模型
1.3.3 2D神經(jīng)網(wǎng)絡(luò)模型
為了解決文本匹配的層次性,我們還采用2D神經(jīng)網(wǎng)絡(luò)模型對文本匹配關(guān)系進(jìn)行了建模,利用分層卷積操作層次化地抽取文本對之間的匹配特征。不同于上節(jié)的Bi-LSTM模型,2D神經(jīng)網(wǎng)絡(luò)借鑒了MatchPyramid模型[10]的思想將句子間的交互提前,利用二維卷積神經(jīng)網(wǎng)絡(luò)直接在句子的交互空間上進(jìn)行建模,再對文本間的匹配模式進(jìn)行分層次抽象。
2DMN模型四個部分組成:雙向LSTM、匹配矩陣、二維卷積神經(jīng)網(wǎng)絡(luò)和多層感知機(jī)(MLP)組成,其整個架構(gòu)如圖4所示。
M2的第(i,j)個元素采用如下方式計算:
(16)
圖4 2D神經(jīng)網(wǎng)絡(luò)模型
經(jīng)過多層卷積、池化操作之后,最后將最高層的特征向量輸入到MLP分類器中即可得到最終的匹配得分。
與雙向LSTM模型類似,模型同樣采用1.1節(jié)中用的詞向量作為輸入,使用交叉熵作為代價函數(shù)進(jìn)行訓(xùn)練。
對數(shù)據(jù)集進(jìn)行特征抽取之后就是將抽取到的不同的特征融合在一起,本文使用XGBoost訓(xùn)練了一個基于梯度提升回歸樹(gradient boosted regression)的回歸模型,將所有的特征連接成一個特征向量作為XGBoost的輸入。訓(xùn)練中選用pairwise loss作為目標(biāo)函數(shù)。
本文使用Qatar Living社區(qū)問答數(shù)據(jù)集[12]數(shù)據(jù)集,其詳細(xì)統(tǒng)計數(shù)據(jù)見表1。
表1 答案選擇數(shù)據(jù)集
訓(xùn)練集中總共的“問題—答案”對共有43 558個,測試集中共有2 930個。對于“問題—答案”對的匹配關(guān)系,數(shù)據(jù)集中共有三種類型?!癎ood”,“PotentiallyUseful”,“Bad”三種類型,在實際應(yīng)用中,一般把“Good”當(dāng)作正類(即相關(guān)),把“PotentiallyUseful”,和“Bad”當(dāng)做負(fù)類(即不相關(guān))。表1中的“原始問題”即為用戶輸入的問題,“相關(guān)問題”為可能與“原始問題”相關(guān)的候選問題。
本文中答案選擇和問題檢索任務(wù)采用平均精度均值(Mean Average Precision,MAP),平均召回率(Average Recall,AvgRec),平均排序倒數(shù)(Mean Reciprocal Rank ,MRR)作為評價指標(biāo)。MAP可以衡量模型整體的排序效果,具體定義見式(18)和式(19)。其中,AP(qi)表示第i個檢索的精確率;|RD|為檢索對應(yīng)的相關(guān)文本總數(shù),rankrdi為第i個相關(guān)文本在排序結(jié)果中的次序。MRR注重于排序結(jié)果中的第一個相關(guān)項,具體定義見式(20),其中ranki為第i個檢索結(jié)果中第一個相關(guān)文本的排名。AvgRec用來衡量模型整體的“查全率”,即查出來的相關(guān)項占所有相關(guān)項的比例,如式(21),其中,Rec(q)為檢索q的召回率。
為了達(dá)到比較精確的排序效果,XGBoost排序模型需要設(shè)置很多參數(shù),因此調(diào)參和模型選擇非常關(guān)鍵,XGBoost中需要調(diào)整的參數(shù)有eta、max_depth、min_child_weight、gamma、subsample、colsample_bytree 6個參數(shù),為了縮小參數(shù)范圍,我們首先找出了3個敏感參數(shù):gamma、subsample和colsample_tree,之后固定其它參數(shù)的值,主要對這3個參數(shù)進(jìn)行調(diào)節(jié)。
表2 XGBoost主模型參數(shù)
為了避免過擬合,本工作將每個參數(shù)的值設(shè)定為一定范圍內(nèi)的等差數(shù)列,采用5折交叉驗證的方式分別對答案選擇和問題檢索兩個任務(wù)的模型參數(shù)進(jìn)行選擇,找出交叉驗證MAP平均分值最高的參數(shù)作為主模型的參數(shù),XGBoost主模型參數(shù)如表2所示。除了主模型之外,我們還選出交叉驗證MAP分值方差最小的兩組參數(shù),訓(xùn)練出兩個對照模型,用以同主模型進(jìn)行對比分析。
對于特征提取時用到的神經(jīng)網(wǎng)絡(luò)模型,本文采用Adagrad[13]的優(yōu)化方法進(jìn)行訓(xùn)練。Adagrad是一種基于隨機(jī)梯度下降(stochastic gradient descent)的優(yōu)化方法,其可以根據(jù)每個參數(shù)的數(shù)值大小對隨機(jī)梯度下降中的學(xué)習(xí)率進(jìn)行動態(tài)調(diào)整,加快模型的收斂速率。此外,為了防止模型會過擬合,本文在訓(xùn)練模型雙向LSTM模型和2D神經(jīng)網(wǎng)絡(luò)匹配模型時采用dropout[14]機(jī)制和early-stopping[15]策略。兩個模型的詳細(xì)參數(shù)如表3所示。
表3 深度匹配模型參數(shù)
本文對模型中用到的所有模型做了特征重要性分析,即將每類特征一一去掉,利用5折交叉驗證得出相應(yīng)的平均評價分值進(jìn)行對比分析。詳細(xì)結(jié)果如表4所示。
表4 答案選擇模型特征重要性
從表中可以看出,在使用全部特征時,模型效果達(dá)到最高,其中MAP分值為70.65。在去掉傳統(tǒng)自然語言特征后,模型MAP分值降到69.06;而在去掉深度匹配特征后,模型的MAP分值降到64.81,大約降了5個百分點,顯示出深度匹配特征在答案選擇任務(wù)中的重要性。
針對自動問答系統(tǒng)中的關(guān)鍵任務(wù)——答案選擇,我們提出一種融合深度匹配特征的排序模型。其中采用詞向量模型、雙向LSTM、2D神經(jīng)網(wǎng)絡(luò)等深度學(xué)習(xí)技術(shù)對文本對的語義匹配特征進(jìn)行提取,可以有效應(yīng)對文本匹配問題中的三個挑戰(zhàn):詞語語義的多元性、短語匹配的結(jié)構(gòu)性和文本匹配的層次性。實驗結(jié)果顯示,融合深度匹配特征的答案選擇模型比基于傳統(tǒng)特征的模型MAP值高5%左右。