任 勉,甘 剛
(成都信息工程大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,四川 成都 610225)
通常對文本情感傾向性的傳統(tǒng)方法有基于詞典、基于語義分析等[1-6]。在之前的自然語言處理中,通常針對文本分類部分采用的是基于機器學(xué)習(xí)[7]的分類算法。發(fā)展至今,深度學(xué)習(xí)在自然語言處理中應(yīng)用廣泛。其中Yong Zhang等提出基于卷積神經(jīng)網(wǎng)絡(luò)的語句建模情感分析方法[8],Bolan su等提出基于循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行對文本的分詞處理[9]。但這些方法存在訓(xùn)練過程中會丟失單詞在上下文中關(guān)系的問題,因此在后續(xù)的情感傾向性分析任務(wù)中引入了深度循環(huán)神經(jīng)網(wǎng)絡(luò)。通過對比以上信息,循環(huán)神經(jīng)網(wǎng)絡(luò)中的長短期記憶網(wǎng)絡(luò)(long short-term memory,LSTM)作為語言模型在解決文本分類問題上有很大的進(jìn)步[10],但也存在梯度消失和爆炸等問題,在上下文的記憶關(guān)聯(lián)上也容易丟失信息。
針對以上問題,本文提出基于雙向長短時記憶的循環(huán)神經(jīng)網(wǎng)絡(luò)模型(bi-directional long short-term memory,Bi-LSTM)。通過該模型中的雙向傳播機制能降低上下文丟失信息的情況,在文本情感分析任務(wù)中獲得更好的分類效果。
本文采用CBOW(continuous bag of words)來訓(xùn)練詞向量[11]。CBOW是一種預(yù)測模型,是從原始語句來推測目標(biāo)字詞,在CBOW模型中,已知詞w中上下文context(w),同時預(yù)測w,因此指定context(w),詞w就是一個正樣本,其它詞就是負(fù)樣本,可以通過采樣負(fù)樣本得到一個關(guān)于w的負(fù)樣本子集NEG(w),因此詞的標(biāo)簽可以表示如下
(1)
CBOW模型目標(biāo)函數(shù)表示如下
(2)
其中
(3)
長短時記憶網(wǎng)絡(luò)(LSTM)解決了長程依賴的問題,不需要特別復(fù)雜地調(diào)試超參數(shù),默認(rèn)地記住了長期信息。而且解決了傳統(tǒng)RNN模型存在梯度的消失和爆炸的問題[12]。
圖1為一個LSTM網(wǎng)絡(luò)單元[13],使用門控單元來控制信息的流向。
圖1 LSTM單元網(wǎng)絡(luò)結(jié)構(gòu)
圖1中的it代表輸入門、ot代表輸出門、ft代表遺忘門、Ct代表細(xì)胞控制單元結(jié)構(gòu)。
LSTM單元結(jié)構(gòu)中Wij是指神經(jīng)元i到j(luò)的連接權(quán)重,神經(jīng)元輸入是用a表示,輸出用b表示。
從細(xì)胞初始狀態(tài)值到輸入門狀態(tài)值,遺忘門狀態(tài)值和輸出門狀態(tài)值的權(quán)重分別記做Wc ι,Wc φ以及Wc ω,Sc表示Cell的狀態(tài)。
控制門的激活函數(shù)用f表示,g,h分別表示cell的輸入輸出激活函數(shù)。
(4)
it=σ(Wixt+Uiht-1+bi)
(5)
其次計算當(dāng)時存儲單元的遺忘門的激活值
ft=σ(Wfxt+Ufht-1+bf)
(6)
(7)
隨著存儲單元的新狀態(tài),我們可以計算其輸出門激活值,然后計算其輸出值
οt=σ(Woxt+Uoht-1+VoCt+bo)
(8)
(1)lstm-peephole連接模型:
lstm-peephole連接模型(如圖2所示)在LSTM單元網(wǎng)絡(luò)結(jié)構(gòu)上增加了peephole connection,控制門層接收輸入門的激活值,同時接收細(xì)胞狀態(tài)的輸入[14,15]。
圖2 lstm-peephole連接模型
改進(jìn)的peephole設(shè)計門結(jié)構(gòu)用來除去或增加信息細(xì)胞狀態(tài)值,包含一個sigmoid神經(jīng)網(wǎng)絡(luò)層和一個逐點乘法操作。Sigmoid層輸出[0,1]間的數(shù)據(jù),敘述每個連接之間有多少流量可以通過,0表示“禁止任何量通過”,1代表“允許任意量通過”。
通常在語言模型中,我們可以基于已經(jīng)看到的詞來預(yù)測下一個詞,比如說“中國”-“北京”這對詞組。一般細(xì)胞狀態(tài)可能包含當(dāng)前語句中主語的類別,選擇出正確的代詞,在此出現(xiàn)新的代詞時,該結(jié)構(gòu)會忘記較為久的代詞。在式(9)中,Ct-1代表前一個時序的向量,首先讀取Ct-1和xt,輸出一個在0到1之間的數(shù)值給每個細(xì)胞狀態(tài)Ct-1的數(shù)字
ft=σ(Wf·[Ct-1,ht-1,xt]+bf)
(9)
式(10)是確定更新的信息
it=σ(Wi·[Ct-1,ht-1,xt]+bi)
(10)
更新細(xì)胞狀態(tài)在Ct-1狀態(tài)的值更新為Ct,把舊狀態(tài)Ct-1與ft相乘,丟棄將要確定丟棄的信息,加上it與Ct就是候選的新值,最終根據(jù)每個狀態(tài)的跟新程度進(jìn)行變化
(11)
在語言模型的例子中,如果首先得到一個代詞,可能需要輸出與一個與動詞相關(guān)的信息
οt=σ(Wo·[Ct,ht-1,xt]+bo)
(12)
通過確定需要輸出的值來決定當(dāng)前cell的狀態(tài),也是一個過濾后的狀態(tài)。首先運行一個sigmoid層來確定細(xì)胞狀態(tài)的哪個部分將輸出出去。把細(xì)胞狀態(tài)通過tanh進(jìn)行處理,得到一個在-1到1之間的值并將它和sigmoid門的輸出相乘,最終輸出確定輸出的那部分。
(2)coupled遺忘門和輸入門
雙門結(jié)構(gòu)[16]通過使用coupled遺忘門和輸入門如圖3所示。
圖3 coupled遺忘門和輸入門
不同于其它結(jié)構(gòu)中把遺忘門的更新信息與其它位置信息分開,此結(jié)構(gòu)可以同時完成把遺忘門和輸入門值信息更新,在未來時間段輸入在當(dāng)前位置時忘記。輸入新的值到已經(jīng)忘記的舊信息的狀態(tài)位置處
(13)
通過改進(jìn)兩種LSTM模型后,結(jié)合分類器實現(xiàn)基于雙向循環(huán)網(wǎng)絡(luò)的情感傾向性分類模型。
該模型主要分為以下3個部分:詞向量化、通過Bi-LSTM特征提取、深度神經(jīng)網(wǎng)絡(luò)分類器,如圖4所示。
圖4 基于Bi-LSTB語言模型情感傾向性分類模型結(jié)構(gòu)
詞向量化部分:詞向量通常用于分類的文本數(shù)據(jù)量比較大,需要從大量未標(biāo)注的普通文本數(shù)據(jù)中無監(jiān)督地學(xué)習(xí)出詞向量。在在詞向量訓(xùn)練之前,通常將字詞轉(zhuǎn)換成離散的單獨的符號,一個詞對應(yīng)一個向量,接著在文本分類模型中,將文章對應(yīng)的稀疏矩陣合并成一個向量,即把每一個詞對應(yīng)的向量加到一起,此部分采用CBOW模型。
特征抽取部分:采用Bi-LSTM作為特征提取部分模型,同時在該部分的矩形框單元格代表一個LSTM單元,在后續(xù)的訓(xùn)練模型中,采用兩種變型的LSTM模型。
Bi-LSTM訓(xùn)練層:通過構(gòu)造兩個循環(huán)神經(jīng)網(wǎng)絡(luò)實現(xiàn)以兩個不同的方向獲取信息,同時這兩層都連接相同的輸入層。這個結(jié)構(gòu)能夠提供給上一層中每個單元結(jié)構(gòu)完整的上下文信息。
其中一層信息在同一時步向前傳遞,更新所有隱含層的信息
(14)
另一層信息的傳播是與上一層相反,通過先計算輸出層然后得到不同方向的隱含層值
(15)
情感分類層:此處采用棧式自編碼式神經(jīng)網(wǎng)絡(luò)作為分類器[17]。棧式自編碼神經(jīng)網(wǎng)絡(luò)參數(shù)是通過逐層貪婪訓(xùn)練獲得。以包含2個隱藏層,輸出層為softmax的神經(jīng)網(wǎng)絡(luò)。
實驗工具采用的是TensorFlow,TensorFlow使用數(shù)據(jù)流式圖來規(guī)劃計算流程,它可以將計算映射到不同的硬件和操作系統(tǒng)平臺。本文使用TensorFlow工具結(jié)合Word2vec生成詞向量并實現(xiàn)Bi-LSTM模型的訓(xùn)練。
本次實驗設(shè)計兩組對比實驗,第一組是利用不同的LSTM單元結(jié)構(gòu)進(jìn)行對比,其中一個LSTM變型結(jié)構(gòu)是LSTM-peephole連接模型,另一個LSTM變型結(jié)構(gòu)是coupled遺忘門和輸入門構(gòu)成。第二組對比實驗是基于Bi-LSTM和LSTM結(jié)構(gòu),測試雙向循環(huán)網(wǎng)絡(luò)結(jié)構(gòu)對分類的影響。
實驗語料來自Github上開源兩萬條中文標(biāo)注預(yù)料,涉及到書籍、酒店、計算機、牛奶、熱水器、手機6個方面的購物評論數(shù)。其中16 000條評論作為訓(xùn)練數(shù)據(jù)、4000條作為測試數(shù)據(jù)。另一部分語料來自已經(jīng)標(biāo)注分類的兩萬條微博數(shù)據(jù),主要是針對網(wǎng)絡(luò)上某些熱點事件的評論,其中10 000條為積極評價,另10 000條為消極評價。其中以15 000 條作為訓(xùn)練數(shù)據(jù),5000條作為測試數(shù)據(jù)。
首先是利用語料文本生成詞向量,首先使用CBOW模型訓(xùn)練用少量噪聲詞匯來估計。當(dāng)模型預(yù)測到真正的目標(biāo)詞匯為最高概率,同時預(yù)測其它噪聲詞匯為低概率。用編造的噪聲詞匯訓(xùn)練的方法被稱為Negative Sampling。這種方法計算loss function有非常高的效率,方法是選擇K個隨機詞匯而非詞匯表中的詞匯。
在訓(xùn)練模型時通過調(diào)整詞向量的維度、詞頻閾值、窗口大小來調(diào)整參數(shù)。
首先詞向量的維度是從50到200之間進(jìn)行測試,通過測試發(fā)現(xiàn)詞向量維度在120左右時,測試數(shù)據(jù)F值最優(yōu),如圖5所示。
圖5 基于詞向量維度增長的F值變化
由于詞頻閾值在小于5時不能生成詞向量同時也會造成不能產(chǎn)生索引,因此詞頻閾值選擇為5。
窗口大小在訓(xùn)練過程中接近20時為準(zhǔn)確率最高,如圖6所示。
圖6 基于窗口大小增長的準(zhǔn)確率值變化
在訓(xùn)練Bi-LSTM時,通過損失值來觀察迭代次數(shù)。在實驗過程中,發(fā)現(xiàn)使用LSTM模型時,迭代次數(shù)到5之后損失值維持不變,而Bi-LSTM在迭代次數(shù)到10時損失值維持不變,如圖7所示。
圖7 基于迭代次數(shù)增加損失值變化
最后分類器訓(xùn)練結(jié)果是一個[0,1]區(qū)間的連續(xù)的實數(shù),而程序的在默認(rèn)的情況下將0.5設(shè)置為閾值,因此最后將大于0.5的值判斷為正,小于0.5的結(jié)果判斷為負(fù)。
本實驗通過兩組對比實驗,分析LSTM的兩種變型結(jié)構(gòu)與Bi-LSTM模型之間的評價指標(biāo)數(shù)據(jù)。
首先第一組是利用不同的LSTM單元結(jié)構(gòu)進(jìn)行對比,第一組LSTM變型結(jié)構(gòu)是LSTM-peephole連接模型,另一個是coupled 遺忘門和輸入門在下表中分別稱為Bi-LSTM-1與Bi-LSTM-2,見表1。
第二組對比實驗是通過分析標(biāo)準(zhǔn)LSTM與Bi-LSTM之間的差異,見表2。
表1 兩種LSTM結(jié)構(gòu)對比
表2 標(biāo)準(zhǔn)LSTM與Bi-LSTM對比
下面對實驗結(jié)果數(shù)據(jù)進(jìn)行分析:
(1)根據(jù)第一組的對比實驗看,LSTM結(jié)構(gòu)的兩種變型運用在情感分類的語言模型中,第二種模型使用coupled遺忘門和輸入門的結(jié)構(gòu)有較高的準(zhǔn)確率。
(2)從第二組對比實驗來看,使用雙向循環(huán)神經(jīng)網(wǎng)絡(luò)對只使用單層LSTM結(jié)構(gòu)準(zhǔn)確率要高,說明使用上下文信息之間關(guān)聯(lián)同時考慮時序問題的這種方式能夠更好地解決文本情感傾向性分類問題。
本文在總結(jié)之間的文本情感分類基礎(chǔ)上,提出一種Bi-LSTM語言模型來完成對文本傾向性的分類,通過訓(xùn)練序列向前和向后的兩個循環(huán)神經(jīng)網(wǎng)絡(luò),得到完整的過去和未來的上下文信息。通過實驗對比不同的LSTM變型結(jié)構(gòu),結(jié)合深度神經(jīng)網(wǎng)絡(luò)分類器更好地完成分類任務(wù),得到雙向循環(huán)網(wǎng)絡(luò)結(jié)構(gòu)能更好地解決上下文聯(lián)系的問題。本次實驗中同時也有待完善的部分,如在語料的選擇上,需要對比不同語料的分類情況來完善模型,在后續(xù)的工作中將會改進(jìn)這一部分并研究不同的分類器構(gòu)造方法。