張衍坤,陳羽中,劉漳輝
(福州大學 數(shù)學與計算機科學學院,福州 350116) (福建省網(wǎng)絡(luò)計算與智能信息處理重點實驗室,福州 350116)
E-mail:zhliu@163.com
近年來,社區(qū)問答網(wǎng)站越來越受到人們的歡迎,人們可以在問答社區(qū)上提問,同時也能夠回答其他人的提問.對于一個問題可以由多個社區(qū)成員進行回答,用戶通過他人的回答來得到正確的答案,隨著社區(qū)問答的發(fā)展,大量的問題和答案形成了特定的知識庫,自動為問題匹配正確的答案也成為智能問答的一個重要的任務(wù).
表1展示了一個CQA問答的經(jīng)典例子,答案C1和C2是好的答案,都對提問者有幫助,C3是對C1和C2的回復,表達了對這兩個回答者的感謝.C4是對C1的進一步補充回答,C5表達了對C4答案的認同,C5和C3有助于確定之前的答案是好答案、壞答案或潛在有幫助的答案,但本身不包含對問題有用的信息,因此被視為壞答案.除此之外,問題和答案的文本長度較短,且由不規(guī)范,非正式的句子組成.可以看出,CQA問答具有序列上下文相關(guān),且問答對匹配較為復雜的特點.
對于社區(qū)問答中的問答匹配,現(xiàn)有方法大都通過問答之間的語義進行匹配.較早的工作主要是通過特征工程對候選答案進行匹配,工作量較大,也難以適應(yīng)不同的問題領(lǐng)域.
隨著深度學習的發(fā)展,目前有許多研究工作利用深度學習來進行問題和答案對間的匹配.一些方法基于CNN來抽取問答對的語義進行問答匹配[1,2].另外一些方法在通過CNN學習問答對的語義的基礎(chǔ)上,利用LSTM學習問答序列的上下文相關(guān)性[3,4].除此之外,一些方法引入注意力機制來對問答對進行匹配[5,6].與特征工程方法相比,深度學習方法無需進行復雜的特征選擇工作.
先前的研究工作在社區(qū)問答中的問答匹配問題上取得了一定的效果,但是問答匹配仍然是一件具有挑戰(zhàn)性的任務(wù),其原因主要在于:1)問題和答案之間存在詞匯鴻溝,數(shù)據(jù)具有稀疏性;2)答案質(zhì)量不一,并且有些回答是用戶之間的討論,上下文具有相關(guān)性.3)不同回答者更可能對擅長的領(lǐng)域提供高質(zhì)量的答案,分析用戶所擅長領(lǐng)域,有助于減輕數(shù)據(jù)的稀疏性問題,提升問答匹配的效果.
表1 社區(qū)問答案例Table 1 Example of CQA
針對上述問題,基于社區(qū)問答的問答匹配方法應(yīng)從問題/答案的語義相關(guān)性、答案序列的上下文相關(guān)性、用戶-問題的相關(guān)性三個方面入手.因此,本文提出了一種面向社區(qū)問答匹配的混合神經(jīng)網(wǎng)絡(luò)模型HNNMA(Hybrid Neural Network with Multi-dimensional Attention),工作的主要貢獻可歸納如下:
·融合CNN和LSTM,更加準確地學習問答對的語義信息和上下文相關(guān)性.
·對用戶歷史回答進行建模,通過注意力機制分析問題與用戶歷史回答之間的相關(guān)性,提升問答匹配的效果.
·在SemEval-2015CQA官方數(shù)據(jù)集上與多個現(xiàn)有的模型進行了實驗對比,驗證了HNNMA模型的有效性.
問答匹配是社區(qū)問答的一項關(guān)鍵性任務(wù),通??杀徽J為是分類或者排序任務(wù).早期的問答匹配研究多基于特征工程的、語言工具和外部資源等方法.文獻[7]利用線索級特征來改進問答匹配分類的性能.文獻[8]提取詞匹配特征,非文本特征等5組特征后,使用SVM對答案質(zhì)量進行預測.文獻[9]提出了層次分類的方法,其使用集成學習以先將答案分成好壞兩類,再對壞答案進行細分的方式來進行問答匹配.文獻[10]使用基于樹編輯的特征,構(gòu)造一個線性鏈條件隨機場,將社區(qū)問答的問答匹配看作答案序列標注問題.文獻[11]結(jié)合句法和淺層語義信息,使用SVM進行訓練,實驗表明兩者在問答匹配上具有一定的貢獻.上述方法往往需要手工進行特征構(gòu)造,工作量大,并且對領(lǐng)域知識有一定的要求,也難以處理多語言的問答匹配問題.
近年來深度學習在包括社區(qū)問答在內(nèi)的很多領(lǐng)域獲得了應(yīng)用.文獻[1]基于CNN來計算語義,不需要額外的語義分析工具,而是引入問答對詞之間的相關(guān)程度作為特征附加到詞向量矩陣,輸入CNN中來得到問答對匹配分數(shù).文獻[2]提出了結(jié)合全局句子語義信息和局部特征的CNN模型進行問答匹配.文獻[12]使用LSTM與2D神經(jīng)網(wǎng)絡(luò)等深度學習模型進行語義特征提取,并與傳統(tǒng)的NLP特征相融合來進行問答匹配.在提取問答對語義信息的同時,問答序列的上下文相關(guān)性也得到了關(guān)注.文獻[3]將問答匹配看作序列標注問題,使用CNN學習問題和答案的語義表示,使用LSTM學習答案序列的上下文相關(guān)性.文獻[4]在文獻[3]的基礎(chǔ)上設(shè)計了一個雙階段策略來提高上下文相關(guān)性的學習能力,并結(jié)合線索特征來進行問答匹配.
除此之外,一些研究在問答匹配模型中引入了注意力機制.文獻[5]在LSTM上使用注意力機制來增強對問答序列的上下文相關(guān)性的學習,并結(jié)合條件隨機場來進行問答匹配.文獻[6]結(jié)合RNN與CNN,并加入注意力機制來學習問答對的語義匹配關(guān)系以進行問答匹配.文獻[13]認為問題主題和問題主體具有相似性和差異性,使用多重注意力機制[14]學習問答對的語義相似度.文獻[15]使用混合注意力機制學習句子中的局部相關(guān)性和句子間的相關(guān)性,進行問答對匹配,并利用CNN學習用戶的歷史回答,從而對用戶建模.文獻[16]使用transformer network[17]的多頭注意力機制來對詞向量間的依賴關(guān)系建模,再輸入LSTM來獲取問題或者答案句中的全局信息和序列特征,最后通過加權(quán)平均池化,最大池化,注意力池化三種聚合策略來產(chǎn)生句子的向量從而進行問答對匹配.
上述方法雖然考慮到問答序列的上下文相關(guān)性,但抽取文本的長距離信息的能力較差,本文的HNNMA模型引入類似文獻[18]的CNN架構(gòu),能夠抽取更長距離語義信息,更加準確的抽取問答對的語義,以便于問答對的語義匹配和上下文相關(guān)性學習.用戶的歷史回答在一定程度上反應(yīng)了用戶的興趣點和擅長領(lǐng)域,也是用戶權(quán)威度的體現(xiàn).文獻[15]雖然有對用戶進行建模,但是只是簡單的通過卷積網(wǎng)絡(luò)得到用戶的向量表示,沒有實際與問題交互.文獻[14]提出了多維注意力機制,其與傳統(tǒng)注意力機制不同之處在于計算的注意力分數(shù)是一個特征向量,而不是一個張量,能夠?qū)W習到更多維度的語義特征.文獻[13]采用了多維度注意力機制,但是只是在問答對之間進行交互.本文的HNNMA模型使用多維度注意力機制分析問題和用戶歷史回答的相關(guān)性,判斷用戶擅長領(lǐng)域和當前問題的相關(guān)性,從而得到更加準確的用戶表示.最后通過用戶表示和問答對表示的融合提升問答匹配的精度.
本文將社區(qū)問答中的問答匹配作為分類任務(wù).模型的總體架構(gòu)如圖1所示,其中模型包括以下組件:詞向量層,問答對語義層,問答序列上下文相關(guān)性層,用戶模型層,特征融合和歸一化層.
對問題、答案和用戶歷史回答的輸入句子,用s=[w1,w2,…,wk]來表示,k表示輸入句子長度,wk表示第k個單詞對應(yīng)的詞向量,wk∈Rd,d是詞向量的維度大小.
對給定的問題和對應(yīng)候選答案池中的每個答案,可以形成問答對(q,at),q表示問題,at表示第t個候選答案,使用CNN來對問答對的語義進行學習.CNN在自然語言處理任務(wù)中的文本分類廣泛使用,并取得了不錯的效果[18,19],其中文獻[18]提出的深度金字塔卷積網(wǎng)絡(luò)是嚴格意義上第一個單詞級別上的深層文本分類卷積網(wǎng)絡(luò),文獻[19]對文本的長距離依賴關(guān)系學習的能力較弱,但是文獻[18]網(wǎng)絡(luò)層數(shù)更深,所以可以學習到更長距離的文本依賴關(guān)系.因此使用類似文獻[18]的CNN架構(gòu)來學習問答對的語義表示,對于輸入的問答對句子(q,at),使用并列的CNN架構(gòu)來分別得到句子的語義表示.
對輸入句子s,首先進行一維卷積,卷積核為3,過濾器數(shù)量為250,結(jié)果作為CNN架構(gòu)最底層的輸入向量,接著對向量進行兩次的等長一維卷積操作,卷積大小為3,過濾器數(shù)量為250.同時,為了避免梯度彌散問題,使用文獻[20]的shortcut方法對區(qū)域向量和兩次卷積后的向量連接.使用大小為3,步長為2的最大池化對向量序列進行處理,增加網(wǎng)絡(luò)能夠感知到的文本片段,再進行兩次的等長卷積操作,重復兩次池化卷積操作.最后得到語義表示vq和va.對于輸入問答對(q,at),
vq=CNNq(q,Wq)
(1)
va=CNNa(at,Wa)
(2)
其中,vq,va分別是問答對經(jīng)過CNN后學習到的語義表示,Wq,Wa分別是CNN模型的參數(shù).
為了學習到問題和答案對(q,at)的融合語義表示,將vq,va連接,vqa=[vq,va]輸入到隱藏層獲得聯(lián)合語義表示st.
st=σ(Whvqa+bh)
(3)
其中Wh,bh是隱藏層的參數(shù),σ是relu激活函數(shù).
在社區(qū)問答中,對回答者的答案并沒有嚴格的要求,因此答案有可能是提問者經(jīng)過實踐后對上一個回答者的答案表示認同或者感謝.也可能是回答者對問題的一系列討論,如當一個答案內(nèi)容不詳細或者不正確時,其他回答者有可能對這個答案進行補充或者反駁.因此社區(qū)問答的問題和答案序列間存在著一定且關(guān)鍵的上下文關(guān)系.
LSTM被廣泛應(yīng)用于對文本上下文關(guān)系的學習.LSTM包括輸入門it,遺忘門ft,輸出門ot和記憶單元ct.對一個問題答案對序列R,使用問題答案對的語義序列進行表示.R=[s1,…,st,…,sn],st表示第t個問答對的語義表示,n表示問題答案對的語義序列長度.將每個問答對語義表示作為一個時間步輸入到Bi-LSTM中進行學習.則對第t個時間步st有:
it=σ(Wsist+Whiht-1+bi)
(4)
ft=σ(Wsfst+Whfht-1+bf)
(5)
ct=ftct-1+ittanh(Wscst+Whcht-1+bc
(6)
ot=tanh(Wsost+Whoht-1+bo)
(7)
ht=ottanh(ct)
(8)
其中,Wsi,Whi,bi,Wsf,Whf,bf,Wsc,Whc,bc,Wso,Who,bo是可訓練參數(shù),σ是sigmoid激活函數(shù).
在社區(qū)問答匹配問題中,數(shù)據(jù)的稀疏性和詞匯鴻溝是兩個關(guān)鍵性的挑戰(zhàn),特別是當多數(shù)回答十分簡短時.因此可以通過使用用戶的歷史回答來對用戶建模.類似文獻[13],本文采用多維度注意力機制來對用戶建模,使用戶歷史回答和問題進行交互,從而更好地學習問題和用戶歷史回答文本間的相關(guān)性,如圖2所示.
圖2 基于多維注意力機制的用戶建模結(jié)構(gòu)Fig.2 User modeling structure based on multi-dimensional attention mechanism
qs=[s1,s2,…,sl]
(9)
qb=[b1,b2,…,bm]
(10)
(11)
(12)
其中qs是問題主題的詞向量表示,si表示問題主題第i個詞的向量化表示,qb是問題主體的詞向量表示,bj表示問題主體第j個詞的向量化表示.
通過全連接層計算多維注意力權(quán)重,激活函數(shù)為tanh函數(shù),然后將獲得的向量歸一化計算,最后得到的輸出是問題主體中的每個詞向量乘上對問題主題的詞向量注意力權(quán)重的乘積之和,計算公式如下:
(13)
(14)
(15)
獲取問題的相似表征向量,計算公式如下:
Fp=σ(Wqfqs+WsfSap+bf)
(16)
Sp=FpΘqs+(1-Fp)ΘSap
(17)
其中Wqf,Wsf,bf是訓練參數(shù),σ是激活函數(shù),Θ表示逐點相乘,得到問題的相似表征向量Sp,類似得到問題的差異表征向量So,將Sp和So和連接得到問題表征向量Qr.
將問題和用戶歷史回答對齊,計算問題表征Qr和用戶歷史回答表征Ua的注意力加權(quán)和,計算公式如下:
(18)
(19)
(20)
(21)
將問題和用戶歷史回答對齊,通過多維注意力機制得到問題表征qsum和用戶歷史回答表征向量usum,計算公式如下:
As=Watanh(WsaSai+bs)+bas
(22)
(23)
其中Wa,Wsa,bs,bas是可訓練的參數(shù),usum通過同樣的方法得到.
最后將問題的表征向量和用戶的歷史表征回答向量連接,得到用戶表征向量:
Ur=[qsum,usum]
(24)
對得到的問答對表征向量ht,t表示第t個問答對,和用戶表示向量Ur,使用一個隱藏層來對特征學習以便于將特征融合.
h=tanh(Wqaht+WuUr)
(25)
其中Wqa,Wu是可訓練的參數(shù),h是最終的向量表示.
將得到的最終向量表示h輸入到softmax進行歸一化操作,計算答案屬于各個類別的概率:
p(yi)=softmax(h)
(26)
其中,p(yi)為預測為類別i的概率,0≤p(yi)≤1,L為類別的總數(shù).
模型訓練的目標是最小化損失函數(shù),損失函數(shù)的計算公式如下:
(27)
其中D為問答對訓練集.t∈{0,1,2},0表示答案是好的,1表示答案是潛在有幫助的,2表示答案是壞的.通過梯度優(yōu)化算法AdaGrad進行學習率更新以及利用反向傳播迭代更新模型參數(shù),以最小化損失函數(shù)來訓練模型.
本文實驗采用SemEval-2015CQA數(shù)據(jù)集對提出的模型進行評估.在SemEval-2015CQA數(shù)據(jù)集中,每個問題有對應(yīng)的候選答案池,對應(yīng)若干個答案.數(shù)據(jù)集分為已標注的數(shù)據(jù)和未標注的數(shù)據(jù).在已標注的數(shù)據(jù)中,每個答案被分為3類中的其中一類:好的,壞的,潛在有幫助的.數(shù)據(jù)集的統(tǒng)計信息如表2所示,數(shù)據(jù)集來自QatarLiving(1)https://www.qatarliving.com/forum論壇,且每個問題和答案包含用戶id.實驗采用Macro-F1、Macro-precision以及Macro-recall作為評估指標.
表2 SemEval-2015社區(qū)問答數(shù)據(jù)集的統(tǒng)計Table 2 Statistics of SemEval-2015 dataset
首先對數(shù)據(jù)集包含的問答對進行預處理,詞向量使用預訓練的Glove詞向量,通過300維的Glove詞向量將所有的詞進行詞向量化,對于未登錄詞使用全0的詞向量表示.將問題、答案和用戶歷史回答的長度分別設(shè)為100,100,400的固定值,當文本長度小于設(shè)定長度時用0填充,大于設(shè)定長度時截斷.在卷積網(wǎng)絡(luò)中,過濾器的寬度設(shè)為3,過濾器的大小設(shè)為250.在長短時記憶網(wǎng)絡(luò)中,記憶單元的數(shù)量設(shè)為360.L2系數(shù)設(shè)為0.01.
實驗包含以下部分:1)模型HNNMA和對比算法在SemEval-2015CQA數(shù)據(jù)集上的實驗性能對比.2)模型HNNMA和對比算法在好的、壞的和潛在有用的3個類別上的性能對比,評估指標為Macro-F1.3)不同詞向量對模型HNNMA的實驗性能的影響.4)各個子模型對模型HNNMA性能的貢獻分析.
實驗所對比的算法包括基于特征工程的JAIST[8]、HITSZ[9],以及基于深度學習的F-RCNN[3]、B-RCNN+[4]以及A-ARC[5]等算法.
·JAIST:將特征分為5組,如詞匹配特征組,非文本特征組,基于詞向量的特征等.然后使用SVM-regression模型來對特征進行學習從而對答案質(zhì)量進行預測.
·HITSZ:對答案使用兩級層次分類,先分成兩類再對第一級分類進行細分.除此之外,使用多個分類器同時進行學習,選擇前N個分類器投票作為最終的結(jié)果.
·F-RCNN:結(jié)合CNN和前向RNN來對問答對序列進行處理.首先使用CNN分別對問答對句子語義進行學習,然后使用前向RNN對問答對語義序列上下文相關(guān)性進行學習,最后使用softmax來對答案進行分類.
·B-RCNN+:相比F-RCNN,在CNN上使用了雙向RNN,并且添加了額外的外部特征向量,在雙向RNN訓練時進行微調(diào)的操作.用B-RCNN表示未經(jīng)過微調(diào)和添加外部特征的深度學習模型.
·A-ARC:提出了一個帶有注意力機制的深度神經(jīng)網(wǎng)絡(luò),在CNN對句子編碼后,使用帶有注意力機制的LSTM來對答案序列間相關(guān)性學習,然后輸入條件隨機場來進行學習問答匹配.
表3是HNNMA模型和對比算法在SemEval-2015CQA數(shù)據(jù)集上的Macro-average分數(shù)對比結(jié)果.表4是HNNMA模型和對比算法在好的,壞的,潛在有幫助的這3個類別上的Macro-F1分數(shù)對比結(jié)果.從表3中可以看到,HNNMA取得了優(yōu)于其他對比算法的結(jié)果,其中在Macro-P上優(yōu)于最優(yōu)對比算法0.15%,在Macro-R上優(yōu)于最優(yōu)對比算法0.63%,在Macro-F1上,HNNMA相對最優(yōu)對比算法B-RCNN+提高0.69%.但是B-RCNN+在深度學習模型的基礎(chǔ)上,引入了外部特征.在同樣沒有引入外部特征的情況下,HNNMA模型相對模型B-RCNN提高2.64%,相對于排名第二的對比算法A-ARC提高了1.11%,證明了HNNMA模型的有效性.
表3 SemEval-2015數(shù)據(jù)集性能比較結(jié)果Table 3 Comparison on Semeval-2015 data set
表3中的JAIST和HITSZ需要大量的特征工程工作,而HNNMA是一個端到端的深度學習模型,通過訓練能夠自動得到特征向量,從而避免大量人工提取特征.從實驗結(jié)果來看,HNNMA獲得了遠超JAIST與HTISZ的性能,表明其自動學到的特征向量更為有效.對比F-RCNN與A-ARC的結(jié)果發(fā)現(xiàn),可以通過學習問答對語義和語義序列相關(guān)性提高問答匹配的效果.基于上述想法,使用類似文獻[18]的架構(gòu)來對問答對的語義進行學習,從而更好地學習問答對的上下文相關(guān)性.從表3可以看到實驗結(jié)果得到提高,表明對問答對的語義和問答序列的上下文相關(guān)性學習性能得到改善.
從表4可以發(fā)現(xiàn),HNNMA在3個分類上的都取得了較高的評分,在潛在有幫助的類別上,更是取得了24.30%的最高Macro-F1分數(shù).潛在有幫助的類是中間類,也是最小的類,只有訓練數(shù)據(jù)的10%是中間類.通過比較可以得到,HNNMA模型在其他類性能接近的情況下,能夠更好地識別潛在有幫助的類.HNNMA在潛在答案上性能有所提高的原因在于能夠更好地捕捉問題和答案序列的語義相關(guān)性,有利于識別潛在答案.因為潛在答案可能包含部分答案信息,或者是對好的答案的評論和補充.除此之外,用戶建模也有所幫助,其原因是有經(jīng)驗或者對話題感興趣的用戶更能提供好的答案,其答案也更可能是潛在有用的.
表4 SemEval-2015數(shù)據(jù)集上的Macro-F1分數(shù)Table 4 Macro-F1 scores on Semeval-2015 data set
表5顯示了不同詞向量模型對HNNMA的影響.本文分別使用100、200、300維的Glove詞向量以及word2vec詞向量進行實驗.從表5可以看出,Glove詞向量能夠取得優(yōu)于word2vec的實驗結(jié)果.在詞向量的維度上,維度更多的Glove詞向量能夠取得更好的實驗結(jié)果,其原因在于維度多的詞向量包含更多的語義信息,更有利于識別出答案類別.
表5 HNNMA使用不同詞向量模型的性能比較Table 5 Performance of HNNMA model on different word embedding
除此之外,本文對模型子結(jié)構(gòu)對HNNMA的貢獻進行對比實驗,HNNMA(CRNN)相較完整的HNNMA模型沒有使用多維注意力機制來對問題和用戶歷史回答進行交互,而是使用CNN學習問答對的語義表示后,輸入Bi-LSTM對問答序列間序列相關(guān)性進行學習.HNNMA(UCNN)相較完整的HNNMA模型沒有對問答序列間的上下文相關(guān)性進行學習,而是使用CNN對問答對語義進行學習,同時通過多注意力機制對用戶建模.
表6是子模型在SemEval-2015CQA數(shù)據(jù)集上的Macro-average分數(shù)對比結(jié)果.表7是子模型在好的,壞的,潛在有幫助的這3個類別上的Macro-F1分數(shù)對比結(jié)果.表6中HNNMA(CRNN)的Macro-F1分數(shù)為57.78%,對比表3的B-RCNN的56.82%提高了0.96%,表明HNNMA模型能夠更好的對問題和答案對的語義和問題和答案對間的語義序列相關(guān)性進行學習.HNNMA(UCNN)的Macro-F1分數(shù)為57.10%,實驗結(jié)果同樣較B-RCNN高,表明對用戶歷史回答建模有利于問答匹配.完整的HNNMA模型的Macro-F1分數(shù)相較兩個子模型分別提高了1.68%和2.36%,表明兩個模型子結(jié)構(gòu)對HNNMA模型性能提高都有較大貢獻.在表7可以看到,HNNMA(CRNN)和HNNMA(UCNN)與HNNMA相比,在好的和壞的這兩類上取得了相近的精度.但是在潛在有幫助類上,HNNMA模型取得遠高于兩者的實驗結(jié)果.實驗表明這兩個模型子結(jié)構(gòu)有助于識別出潛在有幫助的類,能學習到有益于問答匹配的不同隱藏信息.
表6 子模型性能比較Table 6 Performance comparison of submodels
表7 子模型在3個類別上的Macor-F1分數(shù)Table 7 Macro-F1 scores of submodels on individual categories
本文提出了一種在社區(qū)問答的問答匹配的解決方案.首先使用CNN模型來對問題和答案對的語義信息進行抽取,再使用LSTM來對問題和答案對語義序列間的上下文相關(guān)性進行學習.同時,利用多維注意力機制來對用戶歷史回答和問題交互,從而對用戶建模.通過結(jié)合問答對語義和問答對語義序列上下文相關(guān)性以及用戶建模來對答案進行匹配.在SemEval-2015CQA數(shù)據(jù)集上進行的實驗表明,HNNMA模型在性能上優(yōu)于現(xiàn)有的系統(tǒng)和神經(jīng)網(wǎng)絡(luò)模型.HNNMA模型對問題和答案對的序列上下文相關(guān)性和用戶建模的學習是有效的,能夠改善問答匹配.在未來,我們將考慮旋轉(zhuǎn)記憶單元[21]等模型對問答對的語義序列上下文相關(guān)性進行學習,進一步提升模型性能.