周映宇
(北京郵電大學理學院,北京 100876)
隨著人們互聯網的參與度的逐年提高,網絡信息的體量也呈指數級增長,面對如今的網絡信息洪流,傳統的人工方法很難在龐大的信息海洋中找到有用的信息。因此,如何高效的挖掘和利用文本形式的交互資源中所包含的信息,成為目前計算機領域的熱門研究方向。而最近興起的文本情感分析相關技術正是解決此問題的方法之一。現有的情感分析技術大體上分為三類:基于統計的、基于機器學習的以及基于深度學習的情感分析。基于統計的情感分析方法[1]的主要模式是建立情感詞庫,賦予情感詞語極性,然后通過情感詞庫對每個句子的語義及情感極性做出計算。但是這類方法過于依賴情感詞庫,且情感詞庫需要不斷更新,模型的泛化能力較弱。因此,機器學習的相關方法被引入了情感分析領域中。基于機器學習的情感分析方法[2-3]的主要模式是通過人工對文本進行分析,使用相應的模型來構造文本的特征表示,然后輸入分類器(如支持向量機SVM)中進行分類。但是人工構建文本特征需要一定的先驗知識(比如LDA 主題模型等等),因此提取到的特征信息相對不完善。基于深度學習的情感分析方法[4-5]不再需要人工來構造文本特征,通過深層次的神經網絡,模型可以自行為每個文本構建不同方面的特征信息用于分類。但不同的深度學習模型提取的特征有不同的側重(如CNN 難以提取文本長依賴特征),導致同一個模型在不同的數據集上的效果可能并不相同(如卷積神經網絡CNN 在短文本上的效果一般比長文本好[5])。對于上述問題,本文根據已有研究,將卷積神經網絡(CNN)、雙向長短時記憶網絡(BiLSTM)、注意力機制等模型的特點進行了充分的融合,提出了一個基于深度學習的中文微博情感分析融合模型。
本文模型的整體結構如圖1 所示。主要流程分為文本預處理、文本詞嵌入、特征提取、情感分類4 個步驟。
圖1 中,模型首先對文本進行了預處理,將中文句子拆分為單獨的詞語并去掉了無意義的標點符號及停用詞。然后對每個詞進行詞嵌入,這里使用的是Word2vec。接著通過BiLSTM 提取文本的長距離時序特征,然后以此為CNN 的輸入來提取微博的空間特征。與此同時,利用一種雙層注意力結構提取原文本的時序特征。最后將這兩部分提取到的特征進行拼接,以全連接層相接并進行分類。

圖1 本文模型總體結構
深度學習模型不能直接對中文微博的原文本進行處理。在將數據輸入模型處理之前,需要對數據進行預處理。主要完成了以下3 個步驟:①過濾無實際意義的標點等符號,只保留包含語義信息的文本。②使用jieba對剩下的中文文本進行分詞,使每一個句子都變成一個個詞語的形式。③去掉一些對情感分析無意義的停用詞(如虛詞等)。
在預處理流程過后,文本變成了擁有實際意義的詞語的集合。但是即使分成了詞語的集合,還需要將每一個詞語轉換為計算機能夠識別的語言,即詞語的向量化。這個過程便被稱為詞嵌入。本文使用的是Word2vec 詞袋模型,通過Word2vec 算法計算出每個詞語相對應的詞向量。在訓練完成之后,我們不僅可以得到不同單詞相對應的詞向量,還可以實現諸如尋找某一個詞的最相近的詞集合、比較兩個詞的相似程度等功能。
在將文本中的詞語向量化后,就可以使用模型進行特征提取了,本文主要使用的是CNN、BiLSTM、注意力機制等模型。本文模型的特征提取模塊分為上下兩部分。上半部分為了將BiLSTM 提取的時序特征和CNN 提取的空間特征結合起來,采用了一個BiLSTM和CNN 的串聯結構。通過實驗,串聯結構是BiLSTM 和CNN 效果最好的結合方式。下半部分為了防止在句子中出現的較早的情感詞所包含的信息丟失,采取了一個注意力結構來動態為每個詞語和句子分配權重。最后,兩部分得到的特征做一個拼接,作為整體模型提取的特征。
1.4.1 BiLSTM 和CNN 的串聯模塊
卷積神經網絡(CNN)是一種最為經典的神經網絡,由于卷積核的存在,能夠有效捕獲文本的局部空間信息。與圖形處理CNN 不同的是,針對文本處理的卷積神經網絡的卷積核并不是正方形的,且滑動窗口大小一般遠遠小于詞嵌入的維度,因此卷積核為長方形。
STM 是RNN 的一種,能夠有效的提取文本的時序特征,并且解決了傳統循環神經網絡的長期依賴和梯度消失問題,但其只能關注每個單詞的上文信息。BiLSTM 在前者的基礎上又做出了改進,使得模型能夠同時關注到詞語的上下文信息。一般使用BiLSTM 的隱藏層向量作為文本的特征向量進行分類,這里由于該模型的輸出與卷積神經網絡CNN 的輸入比較類似,可以在后面接入一個CNN 網絡來繼續提取文本的空間特征。
在BiLSTM 和CNN 的串聯模塊中。首先是輸入層:這里完成了文本的預處理及詞嵌入,使用Word2vec 詞袋模型,詞向量大小設置為100 維。接下來使用BiLSTM 提取文本的時序特征。進入BiLSTM 的數據的維度為[batch_size,seq_len,embedding_dim],BiLSTM 的輸出的 維 度 是 [batch_size,seq_len,hidden_dim*2]。這 里batch_size 為批樣本個數,seq_len 為文本長度,embedding_dim 為詞向量維度,hidden_dim 為BiLSTM 隱藏層節點個數,這里取256。之后使用CNN 提取文本空間特征。卷積核大小為3*512、4*512、5*512,每種卷積核使用100 個。CNN 的輸入維度為[batch_size,1,seq_len,hidden_dim*2],這里相比BiLSTM 的輸出多了一個維度,代表通道數為1。經過CNN 處理后,通過一個全連接層將不同卷積核得到的輸出進行拼接,作為此模塊的總體輸出,輸出維度為[batch_size,3*100],這里的3對應卷積核的種類,100 對應每個種類卷積核的個數。
1.4.2 注意力機制模塊
注意力機制是一個模仿人類注意力的機制,在循環神經網絡(RNN)中,隨著句子序列長度的增加,越靠前的詞語所包含的信息越容易丟失。為此,注意力機制使用了一個上下文向量來動態的為每個詞語分配權重,以保證重要的詞語(如情感詞)所包含的信息不會丟失。
這里將每一條文本看作若干個句子組成,每一個句子看作若干個詞語構成。進行情感分析時,不同的詞語對每個句子的重要度不一樣,不同的句子對每個文本的重要程度也不一樣。因此,這里采用了詞語級注意力機制和句子級注意力機制的兩層結構。由于兩層結構類似,這里對詞語級注意力機制進行一個詳細說明。首先是一個詞語級編碼器,這里使用門控循環網絡GRU(LSTM 的一種較為簡單的變體)來進行編碼。設句子i 含有T 個詞語wit,t∈[1,T],則每個詞語的表征向量hit可以由式(1)~式(4)得到。

其中:We——詞嵌入矩陣,接下來經過詞語級注意力層得到句子i 的表征向量si,具體計算過程如下:

其中:Ww、bw——注意力層的權重矩陣和偏置;uw——上下文向量,在訓練過程中被隨機初始化和聯合學習。
經過上面的步驟,已經得到了兩個單獨的文本表征,接下來將兩種途徑獲得的文本表征進行拼接,通過全連接層接入后進行分類。分類函數選用sigmoid。本文的損失函數為二元交叉熵函數,學習率采用10-3。
本文采用的情感數據集是一個開源數據集,一共有12 萬條帶情感標注的新浪微博評論,其中正負向評論數量相同,是一個較為平衡的數據集。數據集中取八成為訓練集。
混淆矩陣是一個評判分類器效果的常用方法。參如表1 所示。本文所關注的主要評價標準為準確率和F1 值。準確率的計算公式為A=(TP+TN)/(TP+FP+FN+TN)。F1 值的計算公式為F1=2RP/(R+P)。其中,準確率代表了模型分類正確的樣本數占總樣本數的比率。F1值主要作用是防止出現樣本中90%都為正樣本,而模型將所有樣本判定為正即可達到90%準確率的無效模型,是一個綜合評價指標。

表1 混淆矩陣
表2 為模型結果比較。
表2 展示了本文提出的模型與其他模型的效果對比。其中BiLSTM+CNN 是串行方法,GRU+ATT 代表上面提到的注意力模塊。相較于單獨的模型,融合模型無論是在準確率,還是在F1 值上面都有不錯的提升,這說明單獨的CNN 或BiLSTM 在提取語義特征信息時是有一定缺失的。另外本文的模型相較于自身兩個單獨的模塊在效果上也有一定的提升,這說明本文的模型結合方式也是確實有效的。

表2 本文模型與其他模型的比較
本文針對傳統深度學習模型的不足,給出了一個基于深度學習的情感分析融合模型。實驗表明:本文提出的模型相較于單獨的傳統模型和部分混合模型的準確度與F1 值都有所提升,證明了本文所提出模型的有效性。