周映宇
(北京郵電大學(xué)理學(xué)院,北京 100876)
隨著人們互聯(lián)網(wǎng)的參與度的逐年提高,網(wǎng)絡(luò)信息的體量也呈指數(shù)級增長,面對如今的網(wǎng)絡(luò)信息洪流,傳統(tǒng)的人工方法很難在龐大的信息海洋中找到有用的信息。因此,如何高效的挖掘和利用文本形式的交互資源中所包含的信息,成為目前計算機(jī)領(lǐng)域的熱門研究方向。而最近興起的文本情感分析相關(guān)技術(shù)正是解決此問題的方法之一?,F(xiàn)有的情感分析技術(shù)大體上分為三類:基于統(tǒng)計的、基于機(jī)器學(xué)習(xí)的以及基于深度學(xué)習(xí)的情感分析?;诮y(tǒng)計的情感分析方法[1]的主要模式是建立情感詞庫,賦予情感詞語極性,然后通過情感詞庫對每個句子的語義及情感極性做出計算。但是這類方法過于依賴情感詞庫,且情感詞庫需要不斷更新,模型的泛化能力較弱。因此,機(jī)器學(xué)習(xí)的相關(guān)方法被引入了情感分析領(lǐng)域中。基于機(jī)器學(xué)習(xí)的情感分析方法[2-3]的主要模式是通過人工對文本進(jìn)行分析,使用相應(yīng)的模型來構(gòu)造文本的特征表示,然后輸入分類器(如支持向量機(jī)SVM)中進(jìn)行分類。但是人工構(gòu)建文本特征需要一定的先驗(yàn)知識(比如LDA 主題模型等等),因此提取到的特征信息相對不完善?;谏疃葘W(xué)習(xí)的情感分析方法[4-5]不再需要人工來構(gòu)造文本特征,通過深層次的神經(jīng)網(wǎng)絡(luò),模型可以自行為每個文本構(gòu)建不同方面的特征信息用于分類。但不同的深度學(xué)習(xí)模型提取的特征有不同的側(cè)重(如CNN 難以提取文本長依賴特征),導(dǎo)致同一個模型在不同的數(shù)據(jù)集上的效果可能并不相同(如卷積神經(jīng)網(wǎng)絡(luò)CNN 在短文本上的效果一般比長文本好[5])。對于上述問題,本文根據(jù)已有研究,將卷積神經(jīng)網(wǎng)絡(luò)(CNN)、雙向長短時記憶網(wǎng)絡(luò)(BiLSTM)、注意力機(jī)制等模型的特點(diǎn)進(jìn)行了充分的融合,提出了一個基于深度學(xué)習(xí)的中文微博情感分析融合模型。
本文模型的整體結(jié)構(gòu)如圖1 所示。主要流程分為文本預(yù)處理、文本詞嵌入、特征提取、情感分類4 個步驟。
圖1 中,模型首先對文本進(jìn)行了預(yù)處理,將中文句子拆分為單獨(dú)的詞語并去掉了無意義的標(biāo)點(diǎn)符號及停用詞。然后對每個詞進(jìn)行詞嵌入,這里使用的是Word2vec。接著通過BiLSTM 提取文本的長距離時序特征,然后以此為CNN 的輸入來提取微博的空間特征。與此同時,利用一種雙層注意力結(jié)構(gòu)提取原文本的時序特征。最后將這兩部分提取到的特征進(jìn)行拼接,以全連接層相接并進(jìn)行分類。
圖1 本文模型總體結(jié)構(gòu)
深度學(xué)習(xí)模型不能直接對中文微博的原文本進(jìn)行處理。在將數(shù)據(jù)輸入模型處理之前,需要對數(shù)據(jù)進(jìn)行預(yù)處理。主要完成了以下3 個步驟:①過濾無實(shí)際意義的標(biāo)點(diǎn)等符號,只保留包含語義信息的文本。②使用jieba對剩下的中文文本進(jìn)行分詞,使每一個句子都變成一個個詞語的形式。③去掉一些對情感分析無意義的停用詞(如虛詞等)。
在預(yù)處理流程過后,文本變成了擁有實(shí)際意義的詞語的集合。但是即使分成了詞語的集合,還需要將每一個詞語轉(zhuǎn)換為計算機(jī)能夠識別的語言,即詞語的向量化。這個過程便被稱為詞嵌入。本文使用的是Word2vec 詞袋模型,通過Word2vec 算法計算出每個詞語相對應(yīng)的詞向量。在訓(xùn)練完成之后,我們不僅可以得到不同單詞相對應(yīng)的詞向量,還可以實(shí)現(xiàn)諸如尋找某一個詞的最相近的詞集合、比較兩個詞的相似程度等功能。
在將文本中的詞語向量化后,就可以使用模型進(jìn)行特征提取了,本文主要使用的是CNN、BiLSTM、注意力機(jī)制等模型。本文模型的特征提取模塊分為上下兩部分。上半部分為了將BiLSTM 提取的時序特征和CNN 提取的空間特征結(jié)合起來,采用了一個BiLSTM和CNN 的串聯(lián)結(jié)構(gòu)。通過實(shí)驗(yàn),串聯(lián)結(jié)構(gòu)是BiLSTM 和CNN 效果最好的結(jié)合方式。下半部分為了防止在句子中出現(xiàn)的較早的情感詞所包含的信息丟失,采取了一個注意力結(jié)構(gòu)來動態(tài)為每個詞語和句子分配權(quán)重。最后,兩部分得到的特征做一個拼接,作為整體模型提取的特征。
1.4.1 BiLSTM 和CNN 的串聯(lián)模塊
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種最為經(jīng)典的神經(jīng)網(wǎng)絡(luò),由于卷積核的存在,能夠有效捕獲文本的局部空間信息。與圖形處理CNN 不同的是,針對文本處理的卷積神經(jīng)網(wǎng)絡(luò)的卷積核并不是正方形的,且滑動窗口大小一般遠(yuǎn)遠(yuǎn)小于詞嵌入的維度,因此卷積核為長方形。
STM 是RNN 的一種,能夠有效的提取文本的時序特征,并且解決了傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)的長期依賴和梯度消失問題,但其只能關(guān)注每個單詞的上文信息。BiLSTM 在前者的基礎(chǔ)上又做出了改進(jìn),使得模型能夠同時關(guān)注到詞語的上下文信息。一般使用BiLSTM 的隱藏層向量作為文本的特征向量進(jìn)行分類,這里由于該模型的輸出與卷積神經(jīng)網(wǎng)絡(luò)CNN 的輸入比較類似,可以在后面接入一個CNN 網(wǎng)絡(luò)來繼續(xù)提取文本的空間特征。
在BiLSTM 和CNN 的串聯(lián)模塊中。首先是輸入層:這里完成了文本的預(yù)處理及詞嵌入,使用Word2vec 詞袋模型,詞向量大小設(shè)置為100 維。接下來使用BiLSTM 提取文本的時序特征。進(jìn)入BiLSTM 的數(shù)據(jù)的維度為[batch_size,seq_len,embedding_dim],BiLSTM 的輸出的 維 度 是 [batch_size,seq_len,hidden_dim*2]。這 里batch_size 為批樣本個數(shù),seq_len 為文本長度,embedding_dim 為詞向量維度,hidden_dim 為BiLSTM 隱藏層節(jié)點(diǎn)個數(shù),這里取256。之后使用CNN 提取文本空間特征。卷積核大小為3*512、4*512、5*512,每種卷積核使用100 個。CNN 的輸入維度為[batch_size,1,seq_len,hidden_dim*2],這里相比BiLSTM 的輸出多了一個維度,代表通道數(shù)為1。經(jīng)過CNN 處理后,通過一個全連接層將不同卷積核得到的輸出進(jìn)行拼接,作為此模塊的總體輸出,輸出維度為[batch_size,3*100],這里的3對應(yīng)卷積核的種類,100 對應(yīng)每個種類卷積核的個數(shù)。
1.4.2 注意力機(jī)制模塊
注意力機(jī)制是一個模仿人類注意力的機(jī)制,在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)中,隨著句子序列長度的增加,越靠前的詞語所包含的信息越容易丟失。為此,注意力機(jī)制使用了一個上下文向量來動態(tài)的為每個詞語分配權(quán)重,以保證重要的詞語(如情感詞)所包含的信息不會丟失。
這里將每一條文本看作若干個句子組成,每一個句子看作若干個詞語構(gòu)成。進(jìn)行情感分析時,不同的詞語對每個句子的重要度不一樣,不同的句子對每個文本的重要程度也不一樣。因此,這里采用了詞語級注意力機(jī)制和句子級注意力機(jī)制的兩層結(jié)構(gòu)。由于兩層結(jié)構(gòu)類似,這里對詞語級注意力機(jī)制進(jìn)行一個詳細(xì)說明。首先是一個詞語級編碼器,這里使用門控循環(huán)網(wǎng)絡(luò)GRU(LSTM 的一種較為簡單的變體)來進(jìn)行編碼。設(shè)句子i 含有T 個詞語wit,t∈[1,T],則每個詞語的表征向量hit可以由式(1)~式(4)得到。
其中:We——詞嵌入矩陣,接下來經(jīng)過詞語級注意力層得到句子i 的表征向量si,具體計算過程如下:
其中:Ww、bw——注意力層的權(quán)重矩陣和偏置;uw——上下文向量,在訓(xùn)練過程中被隨機(jī)初始化和聯(lián)合學(xué)習(xí)。
經(jīng)過上面的步驟,已經(jīng)得到了兩個單獨(dú)的文本表征,接下來將兩種途徑獲得的文本表征進(jìn)行拼接,通過全連接層接入后進(jìn)行分類。分類函數(shù)選用sigmoid。本文的損失函數(shù)為二元交叉熵函數(shù),學(xué)習(xí)率采用10-3。
本文采用的情感數(shù)據(jù)集是一個開源數(shù)據(jù)集,一共有12 萬條帶情感標(biāo)注的新浪微博評論,其中正負(fù)向評論數(shù)量相同,是一個較為平衡的數(shù)據(jù)集。數(shù)據(jù)集中取八成為訓(xùn)練集。
混淆矩陣是一個評判分類器效果的常用方法。參如表1 所示。本文所關(guān)注的主要評價標(biāo)準(zhǔn)為準(zhǔn)確率和F1 值。準(zhǔn)確率的計算公式為A=(TP+TN)/(TP+FP+FN+TN)。F1 值的計算公式為F1=2RP/(R+P)。其中,準(zhǔn)確率代表了模型分類正確的樣本數(shù)占總樣本數(shù)的比率。F1值主要作用是防止出現(xiàn)樣本中90%都為正樣本,而模型將所有樣本判定為正即可達(dá)到90%準(zhǔn)確率的無效模型,是一個綜合評價指標(biāo)。
表1 混淆矩陣
表2 為模型結(jié)果比較。
表2 展示了本文提出的模型與其他模型的效果對比。其中BiLSTM+CNN 是串行方法,GRU+ATT 代表上面提到的注意力模塊。相較于單獨(dú)的模型,融合模型無論是在準(zhǔn)確率,還是在F1 值上面都有不錯的提升,這說明單獨(dú)的CNN 或BiLSTM 在提取語義特征信息時是有一定缺失的。另外本文的模型相較于自身兩個單獨(dú)的模塊在效果上也有一定的提升,這說明本文的模型結(jié)合方式也是確實(shí)有效的。
表2 本文模型與其他模型的比較
本文針對傳統(tǒng)深度學(xué)習(xí)模型的不足,給出了一個基于深度學(xué)習(xí)的情感分析融合模型。實(shí)驗(yàn)表明:本文提出的模型相較于單獨(dú)的傳統(tǒng)模型和部分混合模型的準(zhǔn)確度與F1 值都有所提升,證明了本文所提出模型的有效性。