曹 宇,李天瑞,賈 真,殷成鳳
西南交通大學 信息科學與技術學院,成都 611756
伴隨著Web2.0技術的迅速發(fā)展,互聯(lián)網(wǎng)已經(jīng)占據(jù)了每個人生活的方方面面。其中社交網(wǎng)絡已成為人們獲取外界信息、發(fā)表觀點、表述情感的重要平臺。微博、論壇、博客等社交平臺每天產(chǎn)生著大量的帶有情感傾向的非結構化文本信息,而通過對這些信息利用情感分析技術進行數(shù)據(jù)挖掘,可以發(fā)現(xiàn)用戶在產(chǎn)品、事件上的情感傾向信息。這些信息對多個行業(yè)有著十分重要的作用,例如商業(yè)產(chǎn)品推薦、網(wǎng)絡輿情分析以及群眾意見調查[1]。目前,由于大數(shù)據(jù)時代的到來,社交網(wǎng)絡信息呈爆炸式增長,而如何高效、快速地從中獲取用戶的情感傾向信息變得極其重要。因此,文本情感分析已成為自然語言處理領域的一個研究熱點[2]。
目前,文本情感分析的方法主要有兩種:基于語義的情感詞典方法和基于機器學習的方法?;谡Z義的情感詞典方法首先需要構建情感詞典,然后設計傾向性計算算法,最后通過確定閾值來判斷文本的情感傾向性。例如,趙妍妍等[3]利用海量的微博數(shù)據(jù)構建了一個十萬詞語的大規(guī)模情感詞典,以提高情感分類性能。該方法的優(yōu)點在于實現(xiàn)較為簡單,不需要人工標注好的訓練集,但其效果卻十分依賴情感詞典的大小和質量?;跈C器學習的方法首先需要人工標注的文本情感傾向性訓練集,然后通過人工設計特征,對文本情感特征進行提取,最后利用機器學習的方法構建分類器,對文本情感傾向性分類。常用的機器學習方法有樸素貝葉斯、最大熵模型和支持向量機等。例如,汪淳[4]改進情感詞的選取方式和權值計算方式,并把集成學習方法和投票方法與傳統(tǒng)機器學習方法進行融合。該方法具有計算量小、容易實現(xiàn)的特點,但在面對復雜分類問題的時候,其泛化能力表現(xiàn)不足。本文提出一種基于BGRU(bidirectional gated recurrent unit)的中文文本情感分析方法。該方法不需要人工構造情感特征,而直接由深度神經(jīng)網(wǎng)絡訓練提取文本情感特征,再對文本情感傾向性分類。通過實驗結果證明該方法在解決中文文本情感分析問題上具有較好的效果。
本文的組織結構如下:第2章概述情感分析以及深度學習的相關研究工作;第3章闡述了BGRU網(wǎng)絡結構和模型訓練方法;第4章為實驗驗證與性能對比;第5章對本文進行了總結,并給出了下一步工作方向。
情感分析又稱為傾向性分析,自2002年提出后,受到了廣大學者的關注[2]。目前情感分析領域研究最多的部分是將文本分為褒揚或貶抑兩種。例如,Pang等[5]利用詞袋模型將文本的N元語法和詞性作為其情感特征,然后分別利用樸素貝葉斯、最大熵模型和支持向量機對文本情感特征分類,在電影評論數(shù)據(jù)上獲得了較好的效果。后續(xù)研究則主要是針對文本的情感特征進行優(yōu)化[6-8]。姚天昉等[9]提出通過提取語句的主題,然后通過句法分析,對主題和情感描述項進行判別,從而確定情感傾向性。Ding等[10]提出特定領域下的情感詞配對方法來判斷情感傾向性。Hu等[11]通過利用WordNet中的同義詞、反義詞關系,得到詞匯的情感極性,然后根據(jù)句子中占主導的詞匯情感極性來確定句子的情感傾向。朱嫣然等[12]通過對知網(wǎng)HowNet進行擴充,利用語義相似度和語義相關詞來判斷詞語的情感傾向。
自2006年Hinton等[13]首次提出深度學習概念后,伴隨著其成功應用于計算機視覺和語言識別領域,國內外開始將深度學習方法應用在自然語言處理上。Bengio等[14]提出通過神經(jīng)網(wǎng)絡來構建語言模型的方法。Mikolov等[15]在Log-Bilinear[16]模型基礎上提出了word2vec模型,將詞轉換成空間詞向量。隨后Kim[17]使用基于深度學習的卷積神經(jīng)網(wǎng)絡模型處理文本情感分類問題,但在處理中文文本過程中存在多重語義現(xiàn)象。梁軍等[18]使用LSTM(long short term memory)遞歸神經(jīng)網(wǎng)絡提取特征并結合情感極性轉移模型來進行中文微博文本的情感分類。Xiao等[19]提出基于雙向LSTM和詞向量的中文情感分析模型。劉龍飛等[20]提出的利用字級別詞向量和詞級別詞向量作為特征,利用卷積神經(jīng)網(wǎng)絡進行微博情感傾向性分析。馮興杰等[21]提出基于卷積神經(jīng)網(wǎng)絡和注意力模型的方法進行文本情感分析。梁斌等[22]提出基于多注意力卷積神經(jīng)網(wǎng)絡的特定目標情感分析方法。
目前,深度學習模型已在中文文本情感分析領域取得了不錯的效果,其中CNN(convolutional neural network)不完全適用于文本序列問題,而LSTM能記憶序列上下文,具有十分適合文本序列情感特征提取的特點。鑒于GRU(gated recurrent unit)作為LSTM的變體模型,不僅能解決長距離依賴問題,而且結構相比LSTM更為簡單,訓練速度較快。本文提出了基于BGRU的模型結構來解決中文文本情感分析的方法,并通過實驗驗證了該方法的有效性。
詞向量(word embedding)是詞語通過神經(jīng)網(wǎng)絡模型得到的一種低維實數(shù)向量表示,通過將離散型詞匯映射到N維實數(shù)空間上,表達詞匯豐富的語義信息,解決詞袋模型的向量稀疏問題,同時挖掘出詞語間的語義關聯(lián)[23]。本文選用Google提供的開源詞向量工具word2vec[15],基于skip-gram模型訓練得到詞向量。skip-gram模型如圖1所示。
Fig.1 Model of skip-gram圖1 skip-gram模型
該模型是由窗口中間詞語w(t)預測其上下文詞語,該目標函數(shù)如式(1)所示:
式中,t為訓練時的上下文窗口的大小。本文設置t的大小為5,詞向量維度為100。
在傳統(tǒng)的神經(jīng)網(wǎng)絡模型中,一般由輸入層、隱含層、輸出層組成,層與層之間的節(jié)點進行全連接,而每層之間的節(jié)點是沒有連接的。這種傳統(tǒng)模型在處理序列問題上因無法刻畫輸入序列前后之間的關聯(lián)而導致效果較差。而RNN(recurrent neural networks)便是在傳統(tǒng)網(wǎng)絡的基礎上,將隱藏層之間的節(jié)點進行了連接[24]。對于給定的輸入序列(x1,x2,…,xn),RNN能有效地動態(tài)學習數(shù)據(jù)的序列特征,并具有一定的記憶能力。所謂的記憶能力指的是網(wǎng)絡會將t-1時刻的輸出信息保存在網(wǎng)絡的內部狀態(tài)中,并應用于t時刻的計算中。即在t時刻隱含層的輸入包含了t時刻輸入層的輸出和t-1時刻的隱含層輸出。
RNN應用于中文文本情感分析上,其網(wǎng)絡結構如圖2所示。圖中,輸入文本為“今天的天氣真好”,在分詞處理后變?yōu)椤敖裉?的/天氣/真好”,首先將每個詞語轉換成對應的詞向量(x1,x2,x3,x4),然后依次輸入到RNN網(wǎng)絡中,U為從輸入層連接到隱含層的權重,W為隱含層連接到自身的權重,V為隱含層到輸出層的權重。
Fig.2 Sentiment analysis network based on RNN圖2 RNN情感分析網(wǎng)絡模型
RNN的計算過程如下:
(1)在t時刻,輸入xt到隱含層。
(2)st為隱含層第t步的輸出,st是根據(jù)當前輸入層的輸出xt和前一時刻隱含層的狀態(tài)st-1得到的,st=f(Uxt+Wst-1),其中f一般取用非線性函數(shù),如tanh或ReLU。
(3)給出輸出ot,ot=softmax(Vst)。
對于文本情感分析問題,不需要每個詞語的輸出,只需要文本的最后一個詞語的輸出作為該序列的情感特征表示,將其輸入到分類器中,對文本的情感信息進行分類。
RNN模型按時間序列展開,則為多層前饋神經(jīng)網(wǎng)絡,在訓練過程中會存在梯度消失和梯度爆炸的問題。RNN在面對處理長序列時,無法解決長時間依賴的問題,而出現(xiàn)難以學習長距離信息的現(xiàn)象。Hochreiter等提出的LSTM記憶單元是在RNN記憶單元的基礎上加入了門限機制[25],其結構如圖3所示。從圖中可以看出LSTM記憶單元主要由細胞狀態(tài)和門結構組成,細胞狀態(tài)負責對歷史信息進行存儲,門結構負責保護和控制細胞狀態(tài)。一個記憶單元具有三個門結構,分別是輸入門i、輸出門o、遺忘門f。其中遺忘門f決定了從細胞狀態(tài)中舍棄的信息,從而可以達到對歷史信息進行過濾的效果,解決了梯度消失的問題。
Fig.3 Memory unit of LSTM圖3 LSTM記憶單元
由于LSTM記憶單元的結構較為復雜,存在著訓練時間較長的問題。Cho等提出一種LSTM的變體模型GRU[26],其結構如圖4所示。
Fig.4 Memory unit of GRU圖4 GRU記憶單元
從圖4中可看出,GRU記憶單元將LSTM中的遺忘門f和輸入門i合成為一個更新門z,不僅能將重要特征保留,解決長依賴問題,同時結構相比LSTM更加簡單。在t時刻,對于給定的輸入xt,GRU的隱藏層輸出ht,其具體計算過程如下所示:
(1)zt=σ(Wz?[ht-1,xt])
(2)rt=σ(Wr?[ht-1,xt])
(4)ht=(1-zt)*ht-1+zt*h?t
其中,W為連接兩層的權重矩陣,σ和tanh為激活函數(shù),z、r分別為更新門和重置門。
標準的RNN在處理序列問題上,按正向輸入序列,利用到了過去的上文信息,卻沒有考慮到未來的下文信息。針對該問題,Schuster等提出的BRNN(bidirectional recurrent neural network)模型[27],在記憶上文信息的同時,也記憶了下文信息,其基本思想是用兩個RNN分別處理正向、反向序列,然后再將其輸出連接到同一個輸出層上,這樣便能記錄特征序列的雙向上下文信息。在BRNN的基礎上,將BRNN中的隱藏層神經(jīng)元替換成GRU記憶單元,可得到BGRU模型。本文將BGRU應用于中文文本情感分析上,其網(wǎng)絡結構如圖5所示。
對于給定的n維輸入(x1,x2,…,xn),在t時刻,BGRU的隱藏層輸出ht,其具體計算過程如下所示:
Fig.5 Sentiment analysis network based on BGRU圖5BGRU情感分析網(wǎng)絡模型
其中,W為連接兩層的權重矩陣,b為偏置向量,σ為激活函數(shù),t和t分別為正向、負向GRU的輸出。
本文模型將正向、反向GRU的最后一個節(jié)點的輸出進行拼接,作為文本的情感特征,然后連接到輸出層,得到輸出y,如式(2)所示:
文本情感分析實則為一個分類問題。本文將其作為二分類進行處理,將文本情感分為正極和負極,因此在訓練BGRU過程中,本文的激活函數(shù)選擇sigmoid函數(shù),如式(3)所示:
則模型的輸出取值為{0,1},而目標函數(shù)選擇對數(shù)損失函數(shù),如式(4)所示:
式中,X為文本的真實情感分布,Y為模型的預測情感分布。模型訓練的目標為最小化對數(shù)損失函數(shù)。對于模型優(yōu)化器選擇,由于Adam(adaptive moment estimation)算法能計算每個參數(shù)的自適應學習率,具有快速實現(xiàn)優(yōu)良結果的特點,因此使用Adam作為優(yōu)化器。同時為了在網(wǎng)絡權重的更新速度和更新次數(shù)之間取得平衡,采用了Mini-batch梯度下降策略,并設置batch-size為128,達到提高學習速度、保證模型收斂性的效果。為了防止深度學習網(wǎng)絡訓練過程中過擬合現(xiàn)象的發(fā)生,在BGRU層與輸出層之間加入了Dropout策略,通過放棄部分權重的修改以提高模型的泛化能力,其中Dropout的丟棄率設置為0.5。
本文實驗選用了中科院譚松波博士收集整理的一個較大規(guī)模的酒店評論中文語料ChnSentiCorp(http://www.datatang.com/data/11936)。該語料是從攜程網(wǎng)上自動采集并經(jīng)整理后得到,其總規(guī)模為10 000篇,標簽分為兩類(正類,負類),示例如表1所示。
語料被整理成了4個子集,其信息如表2所示。其中ChnSentiCorp-Htl-ba-10000的數(shù)據(jù)量最大,但是正負樣本是非平衡的,另外3個子集為平衡數(shù)據(jù)。為避免訓練模型過擬合,本文決定使用平衡數(shù)據(jù)集中數(shù)量最大的ChnSentiCorp-Htl-ba-6000作為數(shù)據(jù)集,并結合10折交叉驗證進行實驗。
在數(shù)據(jù)預處理階段,首先需要對數(shù)據(jù)樣本進行分詞處理。然后,出于減少數(shù)據(jù)噪聲的考慮,將樣本中與情感無關的停用詞進行過濾。本文通過對各停用詞表進行整理,集成了哈工大停用詞表、百度停用詞表、四川大學機器智能實驗室停用詞等詞表,并對集成后的詞表進行去重處理后,得到集合停用詞表,其規(guī)模為2 043條。清理后的數(shù)據(jù)再作為詞向量的訓練語料,利用word2vec工具進行詞向量的訓練,得到詞向量模型。
Table1 Examples of ChnSentiCorp表1 ChnSentiCorp示例
Table2 Information of ChnSentiCorp subset表2 ChnSentiCorp子集信息
數(shù)據(jù)集中樣本所含有的詞語數(shù)量為該樣本的長度,對數(shù)據(jù)集的樣本長度進行統(tǒng)計,其分布情況如圖6所示,其中長度小于100的樣本數(shù)量占據(jù)90%以上。本文設定MaxLen為樣本長度的最大值,若樣本長度大于MaxLen,則將對樣本進行截斷處理,大于MaxLen的部分進行舍棄,若樣本長度小于MaxLen,則需要對樣本進行填充處理,在樣本末尾添加零向量,直到長度達到MaxLen。
Fig.6 Sample length of data set圖6 數(shù)據(jù)集的樣本長度情況
MaxLen的設置關系到輸入模型的數(shù)據(jù),若MaxLen過大,數(shù)據(jù)中零向量填充過多,若MaxLen過小,數(shù)據(jù)舍棄的信息過多,故MaxLen對模型的性能有較大的影響。因此進行MaxLen的選擇實驗。通過改變MaxLen的大小,觀察模型的性能變化。實驗結果如表3所示。MaxLen對F1值的影響如圖7所示。
Table3 Experimental results of different MaxLen表3 不同MaxLen的實驗結果
Fig.7 F1of different MaxLen圖7 不同MaxLen的F1值
根據(jù)實驗結果,可以看出當MaxLen為25的時候,由于對數(shù)據(jù)的信息舍棄過多,F(xiàn)1值只有88.45%,而當MaxLen增加后,F(xiàn)1值開始上升,MaxLen=75時,F(xiàn)1值為最高,達到90.61%。當MaxLen再繼續(xù)增加,F(xiàn)1值又呈現(xiàn)出下降趨勢,這是因為數(shù)據(jù)中零向量填充過多,影響了模型記錄數(shù)據(jù)的情感特征。因此模型的MaxLen大小選擇為表現(xiàn)最好的75。
BGRU的隱含層節(jié)點數(shù)對模型的復雜度和效果具有一定的影響,若節(jié)點數(shù)過少,則網(wǎng)絡缺少必要的學習能力和信息處理能力;若節(jié)點數(shù)過多,不僅會增加網(wǎng)絡結構的復雜性,而且在訓練過程中更容易陷入局部極小點,網(wǎng)絡學習速度會下降。因此進行節(jié)點數(shù)的選擇實驗,通過改變隱含層節(jié)點數(shù)大小,觀察模型的性能變化。實驗結果如表4所示。節(jié)點數(shù)對F1值的影響如圖8所示。
Table4 Experimental results of different units表4 不同節(jié)點數(shù)的實驗結果
Fig.8 F1of different units圖8 不同節(jié)點數(shù)的F1值
根據(jù)實驗結果,可以看出當節(jié)點數(shù)由50個增加為100個時,F(xiàn)1值有略微提升,而當節(jié)點數(shù)超過100個時,F(xiàn)1值開始呈現(xiàn)下降趨勢,說明隨著節(jié)點數(shù)增加,模型的效果開始越來越差。因此模型的隱含層節(jié)點數(shù)選擇為100個最為合適。
本文將BGRU與SVM(support vector machine)、CNN、Att-CNN、BLSTM(bidirectional long short-term memory)等模型進行對比。實驗結果如表5所示。通過實驗結果,可以看出在處理中文文本情感分析問題上,BGRU模型具有較好的效果,與BLSTM模型相比F1值提高了0.74%,與Att-CNN模型相比F1值提高了3.42%。對該實驗結果進行分析,BGRU、BLSTM模型相比Att-CNN模型,在處理文本序列的特征提取問題上,能夠充分利用文本的上下文信息,得到了更好的情感特征,使得模型達到了更好的效果;BGRU模型相比BLSTM模型,由于對細胞狀態(tài)進行了融合和改進,得到了效果的提升。
Table5 Experimental results of different models表5 不同模型的實驗結果
為進一步說明BGRU模型的學習效率,將其與BLSTM模型在不同詞向量維度下的訓練時間進行對比,實驗結果如圖9所示。
Fig.9 Comparison of training time by different embedding sizes圖9 不同詞向量維度的訓練時間對比
根據(jù)實驗結果,可以看出BGRU模型相比BLSTM模型在訓練速度上有著明顯優(yōu)勢。當取不同的詞向量維度時,BGRU模型的平均訓練速度是BLSTM模型的1.36倍。這得益于GRU融合了LSTM中的輸入門和遺忘門為更新門,模型結構簡化,因此訓練速度更快。
本文提出了一種基于BGRU深度神經(jīng)網(wǎng)絡解決中文文本情感分析的有效方法。該方法將文本轉換為詞向量序列后,通過BGRU網(wǎng)絡自動提取文本的上下文情感特征,再對文本情感傾向性進行分類。實驗結果表明了該方法的有效性,相比其他模型在中文文本情感分析問題上能更好地捕獲情感特征,具有更好的效果,而且訓練速度是BLSTM的1.36倍。在下一步的工作中,可以考慮將注意力模型、語言學知識結合到本文模型中,使得網(wǎng)絡模型對情感特征更具有針對性,能更有效地學習文本的情感特征。