郭 浩,許 偉,盧 凱,唐 球
(華北計(jì)算機(jī)系統(tǒng)工程研究所,北京 100083)
文本語(yǔ)義相似度在不同的自然語(yǔ)言處理任務(wù)中扮演著重要角色,例如在自動(dòng)文本摘要[1]、信息檢索、機(jī)器翻譯、問(wèn)答系統(tǒng)等領(lǐng)域中都有著非常廣泛的應(yīng)用。
深度神經(jīng)網(wǎng)絡(luò)近年來(lái)發(fā)展迅速,并且已經(jīng)在文本語(yǔ)義相似度的任務(wù)中得到應(yīng)用。其中卷積神經(jīng)網(wǎng)絡(luò)CNN[2]和循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(Recurrent Neural Networks)是深度神經(jīng)網(wǎng)絡(luò)的兩種結(jié)構(gòu)。CNN是一種層次結(jié)構(gòu)模型,RNN是一種序列式模型。CNN能有效地提取局部特征和組合數(shù)據(jù)的重要特征,然而在解決變長(zhǎng)的序列問(wèn)題上存在缺陷。RNN通過(guò)傳遞和記住序列的歷史信息,能很好地處理時(shí)序問(wèn)題。最近,結(jié)合CNN和RNN各自優(yōu)勢(shì),構(gòu)建混合網(wǎng)絡(luò)結(jié)構(gòu)的方法被普遍應(yīng)用。
本文利用CNN和雙向LSTM[3]來(lái)提取句子的特征,結(jié)合attention機(jī)制賦予單詞不同大小的權(quán)重,得到句子的語(yǔ)義表示向量,根據(jù)此表示向量計(jì)算兩個(gè)句子的相似度評(píng)分,判斷其是否語(yǔ)義相同。實(shí)驗(yàn)結(jié)果表明本文的方法在對(duì)比CNN、LSTM和attention-LSTM時(shí),在性能上都得到了提升。
本文主要工作如下:(1)提出了基于CNN和BiLSTM的短文本相似度計(jì)算混合模型;(2)利用注意力機(jī)制使更重要的單詞得到更多的權(quán)重,同時(shí)減小無(wú)關(guān)單詞的注意力;(3)在Quora數(shù)據(jù)集上對(duì)比了多個(gè)模型的結(jié)果。
文本語(yǔ)義相似度的研究任務(wù)為給定兩個(gè)句子作為輸入,判定兩個(gè)文本的語(yǔ)義是否相同,即提出一個(gè)有效的方法和模型來(lái)學(xué)習(xí)和計(jì)算兩個(gè)句子的相似性。先前的研究工作中通常利用句子的多種統(tǒng)計(jì)特征(例如單詞重合度、同義詞、句子長(zhǎng)度等)來(lái)訓(xùn)練分類器(如SVM、樹模型等)。傳統(tǒng)的基于特征工程的方法只能提取文本的淺層語(yǔ)義,并且不能處理那些沒(méi)有相同單詞重疊卻表達(dá)同樣語(yǔ)義的句子,例如:“Obama speaks to the media in Illinois”和“The president greets the press in Chicago”兩句話表達(dá)同樣語(yǔ)義,利用傳統(tǒng)的基于特征工程的方法則不合適。
相比于傳統(tǒng)機(jī)器學(xué)習(xí)方法,深度學(xué)習(xí)模型是目前處理文本相似度效果更好的方法。Mikolov等人在2013年提出的word2vec方法提供了包含語(yǔ)義的預(yù)訓(xùn)練的詞向量。可以利用詞向量的加權(quán)平均來(lái)對(duì)句子進(jìn)行語(yǔ)義表示,進(jìn)而度量?jī)蓚€(gè)句子的相似度。但此方法和詞袋模型一樣沒(méi)有考慮句子間的每個(gè)單詞的相互關(guān)系,不能表達(dá)深層語(yǔ)義?;谏窠?jīng)網(wǎng)絡(luò)的監(jiān)督學(xué)習(xí)模型,如CNN、LSTM等主流的網(wǎng)絡(luò)結(jié)構(gòu)對(duì)文本提取語(yǔ)義特征,在文本語(yǔ)義相似度計(jì)算任務(wù)上相比傳統(tǒng)方法表現(xiàn)更好。KIM Y[4]第一次將CNN用來(lái)進(jìn)行文本特征提取以對(duì)文本分類。此后,卷積神經(jīng)網(wǎng)絡(luò)也應(yīng)用在文本相似度計(jì)算任務(wù)上,文獻(xiàn)[5]中利用CNN進(jìn)行復(fù)述識(shí)別任務(wù),在MSRP和SICK數(shù)據(jù)集上的準(zhǔn)確率分別達(dá)到了78.9% 和86.2%。此外,LSTM模型由于其能處理序列數(shù)據(jù),在自然語(yǔ)言處理任務(wù)上應(yīng)用更加普遍。MULLER J[6]在2015年提出基于LSTM的Siamese(孿生)網(wǎng)絡(luò)結(jié)構(gòu)框架來(lái)學(xué)習(xí)文本相似度,利用LSTM對(duì)句子進(jìn)行語(yǔ)義特征提取,得到句子語(yǔ)義表示向量,然后比較兩個(gè)向量的Manhattan(曼哈頓)距離來(lái)判斷其是否表達(dá)相同的語(yǔ)義,此模型在數(shù)據(jù)集SICK達(dá)到了0.882 2的皮爾遜相關(guān)系數(shù)。BAHDANAU D等[7]在2015年將attention機(jī)制應(yīng)用到機(jī)器翻譯任務(wù)中,在解碼階段利用attention來(lái)處理源語(yǔ)言句子。此后,attention機(jī)制在文本分類、自然語(yǔ)言生成等任務(wù)中都扮演著重要角色。JACOB D等[8]在2018年利用self-attention預(yù)訓(xùn)練語(yǔ)言模型,在此基礎(chǔ)上進(jìn)行微調(diào)(fine-tune),在數(shù)據(jù)集MRPC上達(dá)到了84.5%的準(zhǔn)確率。
本文提出利用神經(jīng)網(wǎng)絡(luò)表示句子的CNN-BiLSTM模型,該模型采用對(duì)稱的孿生網(wǎng)絡(luò)結(jié)構(gòu),其輸入是兩個(gè)句子的word2vec[9]預(yù)訓(xùn)練詞向量,采用CNN和LSTM共同學(xué)習(xí)句子語(yǔ)義的結(jié)構(gòu)化表示,同時(shí)結(jié)合attention機(jī)制來(lái)捕獲重要的特征,利用相似度函數(shù)輸出句子的相似度。
本文提出的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)由兩個(gè)相同的網(wǎng)絡(luò)結(jié)構(gòu)network1和network2組成,即network1和network2的權(quán)重相等(稱之為孿生網(wǎng)絡(luò)結(jié)構(gòu))。神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1所示,主要包括如下幾個(gè)部分:
(1)輸入層:兩個(gè)句子;
(2)嵌入層:將句子的每一個(gè)單詞映射為一個(gè)低維的稠密向量;
(3)CNN-LSTM層:結(jié)合CNN和LSTM分別提取句子的深層語(yǔ)義特征;
(4)Attention層:產(chǎn)生權(quán)重向量,將單詞級(jí)別的特征拼接成句子級(jí)別的語(yǔ)義表示向量;
(5)匹配層:計(jì)算句子語(yǔ)義表示向量的相似度得到輸出。
圖1 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)架構(gòu)圖
在輸入層對(duì)句子進(jìn)行預(yù)處理后輸入到模型。預(yù)處理的過(guò)程為:首先對(duì)文本進(jìn)行正規(guī)化,即去除停用詞,拼寫校正,縮寫的改寫,去除特殊字符等。規(guī)定句子的最大長(zhǎng)度為L(zhǎng),對(duì)于單詞數(shù)大于L的句子進(jìn)行截?cái)?,長(zhǎng)度不足L的進(jìn)行填補(bǔ),即利用字符
在嵌入層,得到等長(zhǎng)的句子序列s=(w1,w2,…,wL),每一個(gè)單詞wi都需要被轉(zhuǎn)換成一個(gè)詞嵌入向量Ei作為后面神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的輸入。此處,采用word2vec的預(yù)訓(xùn)練詞向量,根據(jù)look-up矩陣M來(lái)映射每個(gè)單詞的詞嵌入向量。即:
Ei=viM
(1)
其中矩陣M是Google利用大規(guī)模語(yǔ)料預(yù)訓(xùn)練得到的具有語(yǔ)義信息的參數(shù)矩陣[9],M∈Rd×|V|,d為詞向量嵌入的維度,|V|為詞表的長(zhǎng)度;vi為單詞基于詞表索引的獨(dú)熱編碼向量,在索引處為1,其他位置為0。經(jīng)過(guò)詞嵌入后,句子被表示為E=(L×d)的矩陣,再輸入到后面的神經(jīng)網(wǎng)絡(luò)層。
首先介紹CNN提取句子特征的過(guò)程[4]。CNN利用卷積核對(duì)句子矩陣E從上到下進(jìn)行一維卷積,得到大小為L(zhǎng)×f的特征映射,其中L為序列長(zhǎng)度,f為卷積核的數(shù)量,卷積層后面接入一個(gè)最大池化層,提取出局部的重要特征,可以得到CNN提取的單詞級(jí)別的特征。
LSTM是一個(gè)序列模型,其能解決RNN中的梯度消失和梯度爆炸問(wèn)題,同時(shí)對(duì)長(zhǎng)短時(shí)記憶有所控制。雙向LSTM是從兩個(gè)方向?qū)渥舆M(jìn)行編碼,既能利用從前往后的歷史信息,也能利用反方向的信息。本模型采取雙向的LSTM對(duì)句子進(jìn)行特征提取,并采用兩層的堆疊結(jié)構(gòu),即將第一層的每一個(gè)時(shí)間步的輸出作為下一層LSTM的輸入,將第二層的輸出作為L(zhǎng)STM層提取到的單詞級(jí)別的特征。
在文本中,不同的單詞對(duì)整個(gè)文本語(yǔ)義的貢獻(xiàn)不同,例如當(dāng)人讀到一句話時(shí),通常會(huì)將注意力放到幾個(gè)重要的單詞或短語(yǔ)上,所以利用attention機(jī)制將單詞級(jí)別的特征組合成句子級(jí)別的特征,能更準(zhǔn)確地表達(dá)句子的語(yǔ)義。
本文根據(jù)attention思想,將對(duì)句子語(yǔ)義有更重要貢獻(xiàn)的單詞賦予較大權(quán)重,貢獻(xiàn)較少的單詞則反之。
CNN網(wǎng)絡(luò)結(jié)構(gòu)的輸出向量表示為[C1,C2,…,Cn],式(2)先對(duì)卷積得到的特征Ci利用tanh激活函數(shù)進(jìn)行一次非線性變換得到vi,對(duì)輸出特征加入非線性因素以提升模型的表達(dá)能力。式(3)利用softmax函數(shù)得到各個(gè)分量vi的attention權(quán)重Wcnn=(α1,α2,…,αn),權(quán)重大小則代表單詞的重要程度大小。最后式(4)對(duì)CNN結(jié)構(gòu)輸出的向量[C1,C2,…,Cn]加權(quán)和,得到CNN提取的句子級(jí)別的語(yǔ)義向量表示Scnn。
vi=tanh(WcCi+bc)
(2)
αi=softmax(Wαvi)
(3)
(4)
同理,雙向LSTM網(wǎng)絡(luò)結(jié)構(gòu)的輸出向量表示為[h1,h2,…,hn],式(5)對(duì)LSTM編碼得到的特征hi利用tanh激活函數(shù)進(jìn)行一次非線性變換得到ui,式(6)利用softmax函數(shù)得到各個(gè)分量ui的attention權(quán)重Wlstm=(β1,β2,…,βn),最后式(7)對(duì)雙向LSTM結(jié)構(gòu)輸出的向量[h1,h2,…,hn]加權(quán)和,得到LSTM提取的句子級(jí)別的語(yǔ)義向量表示Slstm。
ui=tanh (Whhi+bh)
(5)
βi=softmax(Wβui)
(6)
(7)
最后,將CNN和LSTM分別提取到的語(yǔ)義向量表示進(jìn)行拼接,即[Scnn,Slstm],將其作為后面匹配層的輸入,這樣就結(jié)合了CNN和LSTM兩個(gè)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)各自的優(yōu)勢(shì),提取了更加豐富的特征。
這一階段,得到兩個(gè)句子的語(yǔ)義表示s1和s2后,在句子的語(yǔ)義空間中計(jì)算兩個(gè)向量的相似度,從而判斷兩個(gè)文本是否語(yǔ)義相同。選取余弦相似度作為評(píng)價(jià)函數(shù),如式(8)所示,輸出相似度的值,其大小在[0,1]之間。
(8)
實(shí)驗(yàn)選取Quora Question Pairs[10]數(shù)據(jù)集進(jìn)行驗(yàn)證與測(cè)試,數(shù)據(jù)來(lái)源于Quora網(wǎng)站,共包含404 000個(gè)問(wèn)題組合對(duì),圖2為部分樣例數(shù)據(jù),具有相同語(yǔ)義的兩個(gè)句子標(biāo)簽為1,反之則為0。利用spacy工具對(duì)文本進(jìn)行分詞,并對(duì)文本進(jìn)行預(yù)處理,如去除停用詞、去除特殊字符等。
圖2 Quora Question Pairs樣例數(shù)據(jù)
本實(shí)驗(yàn)選擇了其他模型來(lái)進(jìn)行對(duì)比實(shí)驗(yàn),包括傳統(tǒng)的機(jī)器學(xué)習(xí)模型Logistics Regression(LR)、深度學(xué)習(xí)模型CNN、雙向LSTM、基于attention的LSTM共四個(gè)模型。
在詞嵌入層采用Google的word2vec預(yù)訓(xùn)練詞向量,通過(guò)在谷歌新聞數(shù)據(jù)集[9]上的訓(xùn)練,得到大約三百萬(wàn)個(gè)單詞和短語(yǔ)的詞向量,其向量的維度為300。如果出現(xiàn)嵌入層預(yù)加載詞表以外的單詞時(shí),即出現(xiàn)未登錄詞時(shí),將其初始化為一個(gè)300維的0向量。優(yōu)化算法選取Adam[11](Adaptive Moment Estimation)優(yōu)化器通過(guò)反向傳播來(lái)更新參數(shù),學(xué)習(xí)率設(shè)為0.01。為了防止過(guò)擬合,在每一層加入dropout[12],參數(shù)值設(shè)為0.2。LSTM的隱節(jié)點(diǎn)數(shù)量設(shè)置為128,CNN的卷積核大小為3,濾波器的數(shù)量設(shè)置為128。在整個(gè)訓(xùn)練過(guò)程中,不更新預(yù)訓(xùn)練詞向量的權(quán)重,利用批處理的方法對(duì)其他參數(shù)進(jìn)行更新。批處理的參數(shù)大小設(shè)置為1 024,訓(xùn)練輪數(shù)設(shè)置為20。
將數(shù)據(jù)集進(jìn)行分割,80%的數(shù)據(jù)用來(lái)訓(xùn)練,20%用來(lái)驗(yàn)證。由于數(shù)據(jù)集正負(fù)樣本比較均衡,選取準(zhǔn)確率和F1值作為模型的評(píng)價(jià)指標(biāo)。各個(gè)模型結(jié)果的比較如表1所示,可以看出深度學(xué)習(xí)的方法都優(yōu)于傳統(tǒng)的機(jī)器學(xué)習(xí)方法LR。BiLSTM在此自然語(yǔ)言處理任務(wù)上的效果稍強(qiáng)于CNN,而結(jié)合attention機(jī)制的LSTM模型(Att-LSTM)能提升LSTM的效果,且優(yōu)于CNN和BiLSTM。
通過(guò)與其他模型對(duì)比,可以看出本文提出的方法效果最好。因?yàn)楸疚哪P徒Y(jié)合了CNN和BiLSTM的優(yōu)勢(shì),提取了局部特征和總體特征,對(duì)句子的語(yǔ)義表達(dá)更加豐富。
表1 模型效果比較
本文介紹了一種用于判斷兩個(gè)句子的語(yǔ)義相似度的方法。首先,運(yùn)用CNN和BiLSTM來(lái)提取句子的語(yǔ)義特征。然后探究了基于attention機(jī)制的神經(jīng)網(wǎng)絡(luò)在此任務(wù)上的應(yīng)用。最后在Quora數(shù)據(jù)集上測(cè)試了本文提出的方法,取得了84.58%的準(zhǔn)確率和85.02%的F1值,而且本文提出的模型在準(zhǔn)確率和F1值上都優(yōu)于其他四個(gè)經(jīng)典模型。