黃曉洲,段隆振,周玲元
(1. 南昌大學(xué)信息工程學(xué)院,江西 南昌 330029;2. 南昌航空大學(xué)經(jīng)濟(jì)管理學(xué)院,江西 南昌 330063)
文本匹配是自然語(yǔ)言理解中的一個(gè)核心問題,許多自然語(yǔ)言理解任務(wù)都可以抽象為文本匹配問題。具體到自動(dòng)問答任務(wù),則是問句和答案的語(yǔ)義相似性匹配問題。
自動(dòng)問答最典型的應(yīng)用之一就是智能客服問答系統(tǒng)。隨著互聯(lián)網(wǎng)的發(fā)展,不斷增加的用戶量使得傳統(tǒng)的人工客服行業(yè)面臨著很大的挑戰(zhàn)。智能客服系統(tǒng)因此誕生,智能客服問答系統(tǒng)以簡(jiǎn)捷、快速的方式回答著用戶提出的大量重復(fù)的問題。但所提問題存在著特征稀疏性強(qiáng)、上下文相關(guān)性弱、問法多樣性、錯(cuò)別字、口語(yǔ)化嚴(yán)重等特點(diǎn),導(dǎo)致不能準(zhǔn)確地返回對(duì)應(yīng)的答案。如何提高智能客服問答系統(tǒng)對(duì)中文句子的相似度計(jì)算能力是當(dāng)下的研究熱點(diǎn)之一。句子相似度的研究任務(wù)是衡量?jī)蓚€(gè)句子的相似程度[1]。傳統(tǒng)的句子相似度計(jì)算一般采用基于特征的方法。例如抽取兩個(gè)句子的TF-IDF,BM25以及詞法等特征,再使用傳統(tǒng)的機(jī)器學(xué)習(xí)方法如線性回歸,支持向量機(jī)等進(jìn)行訓(xùn)練。如翟社平等[2]通過統(tǒng)計(jì)詞形、詞序、句長(zhǎng)等特征,使用層次分析法設(shè)置不同的權(quán)重,綜合考慮語(yǔ)義、詞序相似度來計(jì)算句子之間的相似度。基于統(tǒng)計(jì)特征的句子相似度計(jì)算方法只能提取出較為淺層的句子含義,容易受詞語(yǔ),錯(cuò)別字的影響,泛化性能不佳。有利用句子語(yǔ)義的相似度計(jì)算方法。如閆紅[3]等在知網(wǎng)的詞匯語(yǔ)義基礎(chǔ)上,加入對(duì)義關(guān)系、符號(hào)義原和定義信息等額外的特征來計(jì)算詞語(yǔ)的相似度。基于語(yǔ)義的句子相似度方法能夠很好的處理語(yǔ)義問題,但準(zhǔn)確率受語(yǔ)義資源質(zhì)量和規(guī)模的影響。隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,深度學(xué)習(xí)技術(shù)在計(jì)算視覺,自然語(yǔ)言處理等多個(gè)領(lǐng)域應(yīng)用并取得了巨大的成功。2013年,微軟提出DSSM[4],率先將深度學(xué)習(xí)技術(shù)引入到文本檢索任務(wù)中,開啟了文本匹配方向的深度學(xué)習(xí)時(shí)代。使用深度學(xué)習(xí)來計(jì)算2個(gè)句子的相似度是目前常用的方法。黃江平等[5]在Word2Vec詞向量的基礎(chǔ)上,通過句子變換矩陣來度量句子間的語(yǔ)義距離。李曉等[6]使用Word2Vec進(jìn)行句子語(yǔ)義上的相似度計(jì)算,并將句子的結(jié)構(gòu)信息添加到句子相似度計(jì)算中。Yin等[7]使用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)模型來提取句子的特征,模型雖然簡(jiǎn)單,但是卻有著很好的性能。Mueller等[8]將Siamese網(wǎng)絡(luò)應(yīng)用于句子之間的相似度計(jì)算,該模型使用孿生循環(huán)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)語(yǔ)義結(jié)構(gòu)化的表示空間,使得簡(jiǎn)單的度量足以捕獲句子相似度。Neculoiu等[9]提出利用雙向長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)(Bidirectional Long Short Term Memory,Bi-LSTM)同時(shí)獲取上下文的信息,提取更深層的句子特征。然而,上述方法都是基于詞的映射方式。由于中文詞語(yǔ)之間無明顯分割符,詞向量映射方法的性能很大程度上依賴于分詞的準(zhǔn)確性。
為了提高模型識(shí)別的準(zhǔn)確率,一些新的方法被不斷的提出,注意力機(jī)制就是其中代表之一。2014年,Bahdanau等首次將注意力機(jī)制應(yīng)用到自然語(yǔ)言處理領(lǐng)域進(jìn)行機(jī)器翻譯,相比于傳統(tǒng)神經(jīng)完了翻譯模型準(zhǔn)確率有了較大的提升。2017年,谷歌團(tuán)體提出一種自注意力機(jī)制[10](self-attention mechanism)應(yīng)用于機(jī)器翻譯,取得不錯(cuò)的效果。自注意力機(jī)制又稱內(nèi)部注意力,通常不會(huì)使用其它額外的信息,同時(shí)能關(guān)注本身關(guān)鍵的特征進(jìn)而從句子中抽取相關(guān)信息。2019年,馮興杰[11]等人提出一種多注意力CNN的問題相似度計(jì)算模型,使用2個(gè)不同的注意力同時(shí)關(guān)注詞匯間的語(yǔ)義信息和句子間的整體語(yǔ)義信息。2020年,胡艷霞[12]等人提出一種多頭注意力機(jī)制的句子語(yǔ)義相似度計(jì)算模型,使用多頭注意力機(jī)制和Tree-LSTM提高模型的識(shí)別率。上述這些方法均使用注意力機(jī)制,雖然使用的注意力機(jī)制各有不同,但都是將提取的特征賦予相同的權(quán)重,無法較好的關(guān)注問句中稀疏特征中關(guān)鍵的特征。
為解決傳統(tǒng)詞向量性能依賴于分詞的準(zhǔn)確性,解決普通注意力機(jī)制無法關(guān)注問句稀疏特征中關(guān)鍵特征的問題。本文在Bi-LSTM基礎(chǔ)上加入Self-Attention機(jī)制,提出一種新的問句相似度計(jì)算模型SA-BiLSTM(Self-Attention BiLSTM)。該模型采用字向量表示作為輸入,使用自注意力機(jī)制減少外部參數(shù)依賴,動(dòng)態(tài)的調(diào)整問句中不同特征的權(quán)值,更擅長(zhǎng)捕捉問句的內(nèi)部相關(guān)性。
為了有效的避免中文分詞帶來的影響以及更好的獲得問句中的關(guān)鍵特征,本文提出一種基于字向量表示并結(jié)合Self-Attention機(jī)制的BiLSTM的問句相似度模型SA-BiLSTM。使用改進(jìn)后的模型,可以解決中文分詞帶來的影響并且可以更完整的保留稀疏特征的問句中的信息。SA-BiLSTM模型共分6層,主要包含字向量輸入層、雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)層以及Self-Attention層,具體的SA-BiLSTM模型結(jié)構(gòu)如圖1所示。

圖1 SA-BiLSTM模型結(jié)構(gòu)圖
2003年,Begio等首次使用神經(jīng)網(wǎng)絡(luò)對(duì)詞進(jìn)行分布式的表示,即詞向量。2013年,Mikolov等提出的Word2Vec模型包括CBOW(Continuous Bag-of-Words)和Skip-gram(Continuous Skip-gram)兩種訓(xùn)練模型,可在海量的數(shù)據(jù)集上進(jìn)行詞向量訓(xùn)練。CBOW原理是用一個(gè)詞語(yǔ)的上下文作為輸入,來預(yù)測(cè)這個(gè)詞語(yǔ)本身;而Skip-gram則是用一個(gè)詞語(yǔ)作為輸入,來預(yù)測(cè)它周圍的上下文詞語(yǔ)。但無論CBOW模型還是Skip-gram模型都是將文本分詞處理后將詞語(yǔ)映射到多維空間中,依賴于分詞的準(zhǔn)確性。例如,“乒乓球拍賣完了”,可以切分為“乒乓球拍/賣/完了”和“乒乓球/拍賣/完了”等多種不同的切分方式。這是由于中文詞語(yǔ)之間并無明顯的分隔符號(hào),導(dǎo)致基于分詞的向量化方法存在著局限性。而字作為中文文本最小組成單位,字本身包含了豐富的語(yǔ)義信息,使用字向量進(jìn)行分析能夠獲得更好的語(yǔ)義信息。而且常用漢字?jǐn)?shù)量較詞語(yǔ)數(shù)量低幾個(gè)數(shù)量級(jí),也可以在一定程度上降低矩陣維度及稀疏性。本文使用Skip-gram模型訓(xùn)練字向量,為了對(duì)比不同粒度向量在模型上的效果,額外訓(xùn)練了詞向量,分詞工具使用jieba分詞。
2.2.1 LSTM
1997年,Hochreiter提出LSTM模型,它解決了RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))模型存在著無法“長(zhǎng)期記憶”和梯度爆炸、梯度消失等問題。LSTM的原理是通過門(Gates)的結(jié)構(gòu)來實(shí)現(xiàn),使用門機(jī)制可以實(shí)現(xiàn)選擇性地讓信息通過。LSTM有3個(gè)門:遺忘門ft、輸入門it和輸出門ot和Ct記憶單元實(shí)現(xiàn)歷史信息的更新和保留。具體內(nèi)部結(jié)構(gòu)如圖2所示。

圖2 LSTM內(nèi)部結(jié)構(gòu)圖
遺忘門起控制內(nèi)部狀態(tài)信息的作用,通過計(jì)算上一時(shí)刻的輸出與本時(shí)刻的輸入的加權(quán)和,由sigmoid函數(shù)將其轉(zhuǎn)化為一個(gè)0到1的數(shù)決定是否遺忘。0代表完全拋棄,1代表全部保留。其計(jì)算如式(1)所示。
ft=σ(Wf·[ht-1,xt]+bf)
(1)
輸入門控制信息的輸入,決定著此時(shí)刻哪些信息需要被存儲(chǔ)。其具體的計(jì)算過程如式(2)、式(3)所示。
it=σ(Wi·[ht-1,xt]+bi)
(2)
Ct=ft×Ct-1+it×(tanh(Wf·[ht-1,xt]+bC))
(3)
輸出門起控制輸出信息的作用,決定著此時(shí)刻的任務(wù)輸出,其具體的計(jì)算過程如式(4)、式(5)所示。
ot=σ(Wo·[ht-1,xt]+bo)
(4)
ht=ot·tanh(Ct)
(5)
其中,Wi,Wf,Wo分別為輸入門、遺忘門、輸出門的權(quán)重矩陣;bi,bf,bo為輸入門、遺忘門、輸出門的偏置矩陣;σ、tanh為激活函數(shù)。
2.2.2 Bi-LSTM
由于LSTM存在著語(yǔ)義依賴問題,無法充分的提取出問句包含的所有特征,故本文使用雙向長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)。雙向長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)由兩個(gè)單向的長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)組成的。在每一個(gè)時(shí)刻t,輸入會(huì)同時(shí)提供給這兩個(gè)方向相反的長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò),而輸出則是由這兩個(gè)單向長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)共同決定。具體的計(jì)算過程為:
1) 前向LSTM層從1時(shí)刻到t時(shí)刻正向計(jì)算一遍,得到并保存每個(gè)時(shí)刻向前隱含層的輸出。
2) 后向LSTM層沿著時(shí)刻t到時(shí)刻1反向計(jì)算一遍,得到并保存每個(gè)時(shí)刻向后隱含層的輸出。
3) 最后在每個(gè)時(shí)刻結(jié)合前向?qū)雍秃笙驅(qū)拥南鄳?yīng)時(shí)刻輸出的結(jié)果得到最終的輸出,其計(jì)算式如(6)-(8)所示
ht=f(w1·xt+w2·ht-1)
(6)
htb=f(w3·xt+w5·ht+1)
(7)
ot=g(w4·ht+w6·htb)
(8)
其中,xt為t時(shí)刻字向量的輸入,w1和w3分別為輸入門到前向和后向單元的權(quán)值矩陣,w2和w5分別為前向隱含層到前向隱含層和后向隱含層到后向隱含層的權(quán)值矩陣,w4和w6分別為前向單元后向單元到輸出門的權(quán)值矩陣。ht-1、ht+1分別為t-1,t+1時(shí)刻的隱含層權(quán)值矩陣,ht、htb、ot分別為t時(shí)刻的前向隱含層、后向隱含層權(quán)值矩陣以及輸出門的權(quán)值矩陣。
自注意力機(jī)制是注意力機(jī)制的改進(jìn),其減少了對(duì)外部信息的依賴,使得模型能夠?qū)W習(xí)到內(nèi)部本身的相關(guān)特征。
Self-Attention函數(shù)本質(zhì)上是一個(gè)由諸多Query和Key以及Value組成的映射函數(shù)。其中Query(Q),Key(K),Value(V)三個(gè)矩陣均來自同一輸入矩陣,其計(jì)算公式,如式(9)所示。

(9)

本文在字向量表示方法的基礎(chǔ)上結(jié)和Self-Attention機(jī)制和Bi-LSTM網(wǎng)絡(luò)進(jìn)行中文問句相似度計(jì)算。將訓(xùn)練數(shù)據(jù)采用字向量化表示,輸入模型迭代訓(xùn)練,最后輸出為預(yù)測(cè)值。實(shí)驗(yàn)環(huán)境如表1所示。

表1 實(shí)驗(yàn)環(huán)境
數(shù)據(jù)集采用CCKS2018-Task3(微眾銀行智能客服問句匹配大賽)提供的語(yǔ)料來進(jìn)行試驗(yàn)。CCKS2018-Task3是微眾銀行提供的自動(dòng)問答系統(tǒng)語(yǔ)料,該數(shù)據(jù)集的訓(xùn)練集、驗(yàn)證集、測(cè)試集分別有100000個(gè)句子對(duì)、10000個(gè)句子對(duì)、10000個(gè)句子對(duì)。實(shí)驗(yàn)時(shí),從訓(xùn)練集中隨機(jī)抽取80000個(gè)句子對(duì),與測(cè)試集和驗(yàn)證集構(gòu)成8:1:1的比例,保證訓(xùn)練集、驗(yàn)證集以及測(cè)試集不會(huì)存在重復(fù)的句子。
實(shí)驗(yàn)數(shù)據(jù)樣例如表2所示。標(biāo)簽0表示兩個(gè)句子意思不同,標(biāo)簽1表示兩個(gè)句子意思相同。

表2 實(shí)驗(yàn)數(shù)據(jù)樣例
由表2可知,這些數(shù)據(jù)都是用戶的提問語(yǔ)句,具有錯(cuò)別字、上下文相關(guān)性弱、內(nèi)容短、指代缺失以及口語(yǔ)化嚴(yán)重等特點(diǎn)。在該數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),模型的識(shí)別難度增加,更能驗(yàn)證本文提出模型的有效性。
本文采用國(guó)際通用評(píng)價(jià)標(biāo)準(zhǔn),精確率(Precision)、召回率(Recall)和F1值對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行評(píng)價(jià)。精確率是指在所有被預(yù)測(cè)為正的樣本中實(shí)際為正樣本的概率;召回率是指在實(shí)際為正的樣本中被預(yù)測(cè)為正樣本的概率;F1值是精確率和召回率的調(diào)和均值。其相關(guān)計(jì)算如式(10)~式(12)所示。

(10)

(11)

(12)
其中,TP,TN,F(xiàn)P,F(xiàn)N含義如表3所示。

表3 混淆矩陣表
深度學(xué)習(xí)模型的超參數(shù)設(shè)置非常重要,字向量表示層主要參數(shù)為字向量維度、滑動(dòng)窗口大小,BiLSTM層主要參數(shù)有隱藏層單元數(shù)、Dropout值等,其余參數(shù)如表4所示。本文使用Adam算法進(jìn)行模型的訓(xùn)練,損失函數(shù)選用交叉熵?fù)p失函數(shù),交叉熵的計(jì)算公式如式(13)

(13)
其中,L為損失值、x為樣本、n為樣本總數(shù)、y為實(shí)際的標(biāo)簽、a為預(yù)測(cè)的標(biāo)簽。

表4 實(shí)驗(yàn)參數(shù)表
本文選擇字向量維度(200、300、400)、選擇隱藏層單元數(shù)(90、100、110)、神經(jīng)元丟棄率(10%、20%、30%)進(jìn)行試驗(yàn)取優(yōu),實(shí)驗(yàn)結(jié)果如下表5、6、7所示。

表5 字向量維度不同時(shí)的結(jié)果對(duì)比

表6 隱藏層單元數(shù)不同時(shí)的結(jié)果對(duì)比

表7 隱藏層神經(jīng)元丟棄率不同時(shí)的結(jié)果對(duì)比
通過對(duì)比表5中的F1的值,可以知道選擇字向量的維度為300時(shí),模型可以取得最優(yōu)的效果。通過對(duì)比表6中的F1的值,可以發(fā)現(xiàn)選擇隱藏層單元數(shù)選擇為100時(shí),模型可以取得最好的值。通過對(duì)比表7中的F1的值,不難發(fā)現(xiàn)當(dāng)BiLSTM隱藏層中神經(jīng)元的丟棄率為0.2時(shí),模型的性能達(dá)到最優(yōu)。
為了驗(yàn)證SA-BiLSTM模型的有效性,本文構(gòu)建了6種不同的模型在相同環(huán)境下進(jìn)行對(duì)比實(shí)驗(yàn)。模型中詞向量或字向量使均用Skip-gram模型在維基百科中文語(yǔ)料(zhwiki-latest-pages-articles.xml.bz2,1.75GB)上進(jìn)行預(yù)訓(xùn)練得到,為了保證對(duì)比實(shí)驗(yàn)單一變量原則,均采用同一類預(yù)訓(xùn)練的詞向量或字向量。
1) Word2Vec-TextCNN。Kim[13]提出將卷積神經(jīng)詞運(yùn)用到自然語(yǔ)言處理領(lǐng)域。使用Word2Vec訓(xùn)練得到詞向量,使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征的提取。
2) Word2Vec-LSTM。紀(jì)明宇等[14]提出的方法,使用詞向量并結(jié)合長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)捕捉句子中的特征。
3) Word2Vec-BiLSTM。文獻(xiàn)[9]提出的方法使用詞向量作為模型的輸入,使用雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)捕捉句子的上下文的特征。
4) Character-BiLSTM。基于字的文本向量表示,使用雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)捕捉句子的上下文的語(yǔ)義信息。
5) Character-ATT-BiLSTM。基于字的文本向量表示,使用BiLSTM捕捉問句的上下文的語(yǔ)義信息,使用 Attention機(jī)制,獲取問句局部的關(guān)鍵特征。
6) Character-SATT-BiLSTM。本文提出的模型,使用字向量表示方法對(duì)文本向量化表示,并結(jié)和Self-Attention和Bi-LSTM網(wǎng)絡(luò)的問句相似度計(jì)算模型。
本文算法與其它對(duì)比算法分別在相同數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果如表8所示。

表8 不同方法之間對(duì)比實(shí)驗(yàn)結(jié)果
1) 通過對(duì)比第1、2組實(shí)驗(yàn)結(jié)果可知,使用循環(huán)神經(jīng)網(wǎng)絡(luò)的效果優(yōu)于使用卷積神經(jīng)網(wǎng)絡(luò)。
2)通過對(duì)比第2、3組的實(shí)驗(yàn)結(jié)果可知,由于BiLSTM增加了后向傳播層,可以同時(shí)考慮句子的上下文信息,實(shí)驗(yàn)結(jié)果往往比LSTM更好。
3) 通過對(duì)比第3、4組的實(shí)驗(yàn)結(jié)果可知,因本文使用的數(shù)據(jù)集來源于智能客服問答,因此語(yǔ)料庫(kù)句子存在錯(cuò)別字、上下文相關(guān)性弱、特征稀疏、口語(yǔ)化嚴(yán)重等特點(diǎn)。故使用字向量以更細(xì)粒度的方式提取問句的稀疏特征,保留更多的細(xì)節(jié)信息。同時(shí),也可以降低因分詞錯(cuò)誤產(chǎn)生的影響,在數(shù)據(jù)集上的F1值分別較word2vec-BiLSTM算法提高2.73%。
4)通過對(duì)比第4、5組的實(shí)驗(yàn)結(jié)果可知,通過加入注意力機(jī)制,能很大程度上獲取句子的局部信息,模型的F1值提高2.34%。
5) 通過對(duì)算法5、6的實(shí)驗(yàn)結(jié)果可知,使用Self-Attention機(jī)制相比標(biāo)準(zhǔn)的Attention機(jī)制有不錯(cuò)的性能提升。因?yàn)镾elf-Attention不需要依賴外部信息,僅通過自身的信息來更新學(xué)習(xí)參數(shù),同時(shí)由于Self-Attention是每個(gè)詞都要計(jì)算在句子中的Attention,所以不管它們中間有多長(zhǎng)距離,最大的路徑長(zhǎng)度也都是只是1,因此可以捕獲長(zhǎng)距離依賴關(guān)系,最終的F1值較標(biāo)準(zhǔn)的注意力機(jī)制提高了1.42%。
本文提出一種新的中文問句相似度計(jì)算模型SA-BiLSTM。對(duì)問句進(jìn)行字向量化作為BiLSTM的輸入,利用BiLSTM提取中文問句的上下文語(yǔ)義特征,使用Self-Attention機(jī)制對(duì)特征進(jìn)行動(dòng)態(tài)調(diào)整。實(shí)驗(yàn)結(jié)果證明SA-BiLSTM模型在中文問句相似度計(jì)算上的有效性。然而,本文算法僅僅考慮了問句的特征稀疏性,未來將會(huì)使用更多的句子特征進(jìn)行建模,并且由于BiLSTM的結(jié)構(gòu)比較復(fù)雜,訓(xùn)練的時(shí)間較長(zhǎng),將來也會(huì)考慮使用其它的較為簡(jiǎn)單的網(wǎng)絡(luò)模型作為基本框架進(jìn)行訓(xùn)練,以減少訓(xùn)練的時(shí)長(zhǎng)和參數(shù)量。