韓 虎,劉國(guó)利 ,孫天岳,趙啟濤
1.蘭州交通大學(xué) 電子與信息工程學(xué)院,蘭州 730070
2.甘肅省人工智能與圖形圖像工程研究中心,蘭州 730070
目前,隨著互聯(lián)網(wǎng)的發(fā)展,越來(lái)越多的人傾向于在購(gòu)物APP上進(jìn)行消費(fèi),這種方式不僅方便了人們的日常生活,而且拓展了商家的銷售渠道。同時(shí)消費(fèi)者可以對(duì)自己購(gòu)買的產(chǎn)品給出及時(shí)的評(píng)價(jià),商家通過對(duì)這些評(píng)論數(shù)據(jù)進(jìn)行情感分析來(lái)判斷消費(fèi)者對(duì)產(chǎn)品的褒貶態(tài)度,從而來(lái)調(diào)整產(chǎn)品的定位和營(yíng)銷策略[1-2]。
神經(jīng)網(wǎng)絡(luò)以其優(yōu)越的性能在文本情感分析領(lǐng)域取得了重大的突破[3-5]。Bahdanau 等人利用神經(jīng)網(wǎng)絡(luò)進(jìn)行語(yǔ)言模型的構(gòu)建,將詞向量在低維空間中進(jìn)行表示,能夠更好地度量詞與詞之間的相關(guān)性[6];Kim等人采用多個(gè)大小不同卷積核的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)模型進(jìn)行局部特征提取,并成功應(yīng)用于文本分類[7];Wang 等人利用長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)解決句子中詞語(yǔ)的時(shí)序關(guān)系以及詞語(yǔ)之間的交互性問題,有效提高了情感分析的準(zhǔn)確度[8];Tang 等人在詞向量中加入了情感信息,有效提高了情感分析的準(zhǔn)確度[9];Graves 等人提出使用循環(huán)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行文本的分類,該方法采用雙向循環(huán)結(jié)構(gòu)對(duì)文本進(jìn)行建模,在減少句子中詞的歧義噪聲的同時(shí)可以更好地保留詞序信息[10];Tai等人在LSTM網(wǎng)絡(luò)的基礎(chǔ)上引入樹形結(jié)構(gòu)來(lái)提高句子的語(yǔ)義表達(dá)[11]。
為了區(qū)分句子中不同詞語(yǔ)對(duì)分類的不同貢獻(xiàn),注意力模型也被廣泛地引入到深度學(xué)習(xí)模型中。Yin等人在CNN 模型的基礎(chǔ)上加入了注意力機(jī)制,較未加入注意力機(jī)制的模型有更好的效果[12];Wang 等人結(jié)合LSTM網(wǎng)絡(luò)和注意力機(jī)制進(jìn)行基于特定方面的情感分類,使得模型在訓(xùn)練中只關(guān)注特定方面,從而避免對(duì)所有文本做相同處理,取得了比之前模型更好的效果[13]。
本文將LSTM 網(wǎng)絡(luò)與CNN 模型相結(jié)合,提出了多注意力機(jī)制層次神經(jīng)網(wǎng)絡(luò)模型。該模型主要包含兩個(gè)組成部分:模型第一部分首先利用CNN 提取句子的局部特征,其次將得到的結(jié)果作為下一個(gè)LSTM模型的輸入得到句子級(jí)的語(yǔ)義表示,最后將得到的句子級(jí)語(yǔ)義表示作為下一個(gè)LSTM的輸入,最終形成篇章級(jí)的語(yǔ)義表示用于分類。模型第二部分針對(duì)評(píng)論數(shù)據(jù)中用戶特征和商品屬性對(duì)評(píng)論數(shù)據(jù)情感極性判定的重要貢獻(xiàn),采用注意力模型分別在句子級(jí)和篇章級(jí)把評(píng)價(jià)語(yǔ)料中用戶特征和商品屬性加入進(jìn)去,在不同層次上更好地反映語(yǔ)義信息。
使用神經(jīng)網(wǎng)絡(luò)構(gòu)建模型時(shí),首先需要將文本中的每個(gè)單詞轉(zhuǎn)換為低維的詞向量表示,作為模型的輸入。利用word2vec將已分好詞的語(yǔ)料單詞進(jìn)行詞向量的轉(zhuǎn)化,定義詞向量的維度為k,則某個(gè)詞的詞向量表示為:
假設(shè)輸入句子S的長(zhǎng)度為n,則句子可以用一個(gè)向量矩陣來(lái)表示,,其中表示句子中第i個(gè)詞的向量表示。
卷積神經(jīng)網(wǎng)絡(luò)的具體結(jié)構(gòu)如圖1所示。
圖1 卷積神經(jīng)網(wǎng)絡(luò)
主要由以下幾個(gè)部分組成:
(1)輸入層
(2)卷積層
其中,ci表示經(jīng)過卷積操作后的第i個(gè)局部特征值,f(*)表示激活函數(shù),和分別表示卷積核的權(quán)重和偏置,Si:i+m-1表示從第i個(gè)詞到第i+m-1 個(gè)詞的詞窗口。多個(gè)卷積核經(jīng)過卷積后的全體特征矩陣C為:
(3)池化層
池化層是CNN 的重要網(wǎng)絡(luò)層,對(duì)通過卷積操作得到的特征C進(jìn)行池化操作,提取最重要的局部特征,輸出一個(gè)固定大小的矩陣。
(4)全連接層和輸出層
池化層的輸出通過連接一個(gè)全連接層傳遞給sigmoid輸出層進(jìn)行計(jì)算,得到最后的分類標(biāo)簽。
長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)是在循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)的基礎(chǔ)上進(jìn)行改進(jìn),可以解決原始RNN 網(wǎng)絡(luò)中存在的梯度消失問題,同時(shí)避免文本數(shù)據(jù)中由于間隔和延遲較長(zhǎng)而忽略的重要信息,增加了長(zhǎng)時(shí)記憶的能力。其單一節(jié)點(diǎn)的結(jié)構(gòu)如圖2所示。
圖2 長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)
根據(jù)LSTM的網(wǎng)絡(luò)結(jié)構(gòu),每個(gè)LSTM單元的計(jì)算公式如下:
其中,σ表示sigmoid 函數(shù),tanh 是雙曲正切函數(shù),ft和ii分別代表遺忘門和輸入門,表示前一時(shí)刻狀態(tài),Ct表示t時(shí)刻的狀態(tài),ot為輸出門,ht表示t時(shí)刻LSTM單元的輸出,ht-1表示前一時(shí)刻LSTM單元的輸出。
雖然CNN 和LSTM 能夠很好地提取文本信息,但是評(píng)論文本中的句子或詞對(duì)情感分析的重要性是不一樣的。注意力機(jī)制(Attention Mechanism)在高層語(yǔ)義中對(duì)重要詞的捕捉有很好的表現(xiàn)。注意力機(jī)制最早是在圖像處理領(lǐng)域被提出,隨后在翻譯系統(tǒng)和對(duì)齊任務(wù)上取得了很好的結(jié)果。
注意力機(jī)制把LSTM 輸出的隱層向量表達(dá)進(jìn)行加權(quán)求和計(jì)算,其中權(quán)重的大小表示每個(gè)詞或句子的重要程度。公式如下:
其中,e表示一個(gè)重要性評(píng)分函數(shù),定義如下:
在文本情感分析的研究中,一條評(píng)論所包含的語(yǔ)義信息有不同的粒度,分為詞語(yǔ)級(jí)別、句子級(jí)別和篇章級(jí)別等,其中句子級(jí)和篇章級(jí)情感分析將評(píng)論作為一個(gè)整體進(jìn)行建模,分類結(jié)果過于粗糙。因此提出一種基于CNN 和LSTM 的多粒度層次神經(jīng)網(wǎng)絡(luò)模型,命名為HNN。該模型分別從詞級(jí)別、句子級(jí)別和篇章級(jí)別獲取語(yǔ)義信息,模型結(jié)構(gòu)如圖3所示。
圖3 層次神經(jīng)網(wǎng)絡(luò)
給定一條商品評(píng)論d,按照標(biāo)點(diǎn)符號(hào)分為m個(gè)句子,即d={s1,s2,…,sm},其中每個(gè)句子si都包含n個(gè)詞語(yǔ),即si={w1,w2,…,wn}。提出基于 CNN 和 LSTM 的多粒度層次神經(jīng)網(wǎng)絡(luò)模型分別進(jìn)行文本向量化處理,使用卷積操作獲取詞的上下文語(yǔ)義信息,利用LSTM計(jì)算不同級(jí)別的語(yǔ)義信息,最后使用softmax 函數(shù)實(shí)現(xiàn)文本的情感分類。具體步驟如下:
步驟1 通過word2vec得到每個(gè)詞的向量表示:
步驟2 在模型的第二層使用卷積操作對(duì)句子中詞的上下文語(yǔ)義信息進(jìn)行提取。
其中,f函數(shù)為卷積操作,wi,context為通過當(dāng)前詞wi學(xué)習(xí)到的上下文表達(dá)。Wi-1、Wi、Wi+1表示權(quán)重,b為偏置。
步驟3 使用LSTM學(xué)習(xí)句子表達(dá):
其中,H為學(xué)習(xí)到的當(dāng)前句子表達(dá),w1,context,w2,context,…,wd,context為一個(gè)句子中的d個(gè)詞的上下文向量。
步驟4 把步驟3中句子級(jí)別的輸出再次作為L(zhǎng)STM的輸入,學(xué)習(xí)得到篇章的整體表示。
其中,Doc2Vec是整個(gè)評(píng)論的向量表示,h1,h2,…,hk為篇章中的每一個(gè)句子的向量表達(dá)。
步驟5 使用softmax函數(shù)把網(wǎng)絡(luò)的最后輸出轉(zhuǎn)換為概率輸出,具體公式如下:
其中,C表示情感的類別數(shù),p為評(píng)論屬于各個(gè)類別的概率大小。通過最小化交叉熵?fù)p失函數(shù)對(duì)模型進(jìn)行優(yōu)化:
其中,D為訓(xùn)練集中所有數(shù)據(jù),d為訓(xùn)練集中的一條數(shù)據(jù),為實(shí)際類別,pi(d)為模型預(yù)測(cè)類別。
基于CNN和LSTM的層次神經(jīng)網(wǎng)絡(luò)首先利用CNN的卷積和池化操作提取句子中詞的局部特征,然后將其輸入分層的LSTM模型中再次訓(xùn)練,但是卻忽略了用戶信息以及商品信息同樣對(duì)分類結(jié)果有著重要的影響。因此為了提取不同層次(句子層次、篇章層次)的重要性,提出一個(gè)命名為UP-HNN 的新模型,在句子層次和篇章層次都加入了基于用戶信息和商品信息的注意力機(jī)制來(lái)計(jì)算不同詞和句子的重要性,將評(píng)論中重要的詞和句子進(jìn)行突出表現(xiàn)。模型結(jié)構(gòu)如圖4所示。
圖4 基于注意力機(jī)制的層次模型
區(qū)別于原始的Attention權(quán)重公式,UP-HNN模型在計(jì)算Attention權(quán)重時(shí)加入了用戶信息和商品信息,計(jì)算公式如下:
其中,u、p分別表示用戶和商品的向量表達(dá)。評(píng)分函數(shù)e的公式如下:
本文實(shí)驗(yàn)基于Google 的深度學(xué)習(xí)框架Tensorflow進(jìn)行實(shí)現(xiàn)。Tensorflow支持多種語(yǔ)言(Python、Java、C++等),同時(shí)提供CPU/GPU 并行計(jì)算能力,并集成了多種神經(jīng)網(wǎng)絡(luò)模型,例如卷積神經(jīng)網(wǎng)絡(luò)和LSTM 等,降低了模型代碼構(gòu)建的難度,提高了實(shí)驗(yàn)效率。
實(shí)驗(yàn)平臺(tái)的具體設(shè)置如表1所示。
表1 實(shí)驗(yàn)平臺(tái)設(shè)置
本文在三個(gè)公開的評(píng)論數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)與測(cè)試,對(duì)提出的HNN 模型和UP-HNN 模型的有效性進(jìn)行驗(yàn)證。實(shí)驗(yàn)數(shù)據(jù)集的信息統(tǒng)計(jì)如表2所示。
表2 IMDB、Yelp2013和Yelp2014數(shù)據(jù)集統(tǒng)計(jì)信息
表中Yelp2014 和Yelp2013 數(shù)據(jù)集的情感傾向值均為 1~5 分,IMDB 的情感分值為 1~10 分。1 分代表評(píng)論的情感傾向是負(fù)的,分?jǐn)?shù)越高表示評(píng)論情感趨于正向。在實(shí)驗(yàn)中,對(duì)每個(gè)數(shù)據(jù)集進(jìn)行劃分(訓(xùn)練集、測(cè)試集和驗(yàn)證集的比例為8∶1∶1)。
本文使用準(zhǔn)確度Acc和均方誤差RMSE作為評(píng)價(jià)模型分類結(jié)果的指標(biāo)。
其中,T是本文模型預(yù)測(cè)正確的類別個(gè)數(shù),N是所有的評(píng)論數(shù),gd是真實(shí)類別,pr是預(yù)測(cè)類別。Acc越大,表示模型預(yù)測(cè)越準(zhǔn)確。RMSE越小,表示真實(shí)值和預(yù)測(cè)值之間的差異越小。
表3是實(shí)驗(yàn)所用參數(shù)的具體說(shuō)明,其中詞向量的維度設(shè)為200 維,用戶向量和商品向量的維數(shù)也給定為200 維初始化全0 的向量,LSTM 的神經(jīng)元個(gè)數(shù)為200。神經(jīng)網(wǎng)絡(luò)優(yōu)化算法使用梯度下降法來(lái)更新參數(shù),并利用Dropout機(jī)制來(lái)避免實(shí)驗(yàn)的過擬合。
表3 實(shí)驗(yàn)參數(shù)
采用以下幾種文本情感分類的方法與提出的模型進(jìn)行比較:
Majority:對(duì)訓(xùn)練集中概率最大的標(biāo)簽值進(jìn)行統(tǒng)計(jì),作為測(cè)試集最終的情感標(biāo)簽。
Trigram:在SVM分類器中使用unigrams和trigrams作為特征進(jìn)行訓(xùn)練。
SSWE+SVM:在SVM 分類器中利用SSWE 進(jìn)行特征表示,然后訓(xùn)練[9]。
Paragraph Vector:基于PVDM算法的文本情感分析[14]。
JMARS:在主題模型和協(xié)同過濾的基礎(chǔ)上加入用戶信息和商品信息,用于文檔級(jí)別的情感分類。
UPNN:在CNN分類模型中加入用戶和商品的向量表達(dá)作為特征,并計(jì)算文本偏好矩陣進(jìn)行情感分類[15]。
NSC:分別在句子級(jí)別和篇章級(jí)別使用分層的LSTM進(jìn)行建模[16]。
NSC-UPA:在NSC的基礎(chǔ)上加入用戶和商品信息,利用注意力機(jī)制提取重要信息的分層LSTM模型[16]。
實(shí)驗(yàn)結(jié)果由包含用戶和商品信息與不包含用戶和商品信息兩部分構(gòu)成,具體結(jié)果如表4和表5所示。
表4 不包含用戶和商品信息的實(shí)驗(yàn)結(jié)果
表5 包含用戶和商品信息的實(shí)驗(yàn)結(jié)果
由表4和表5可以看出,HNN模型和UP-HNN模型在兩部分均取得較好的效果。
在表4 中可以看出Majority 的效果是最差的,這是因?yàn)樵摲椒]有提取到任何的文本信息。基于unigrams和trigrams 的Trigram 方法遠(yuǎn)好于Majority 方法。NSC方法通過在模型中分別引入句子級(jí)別和篇章級(jí)別的層次LSTM 網(wǎng)絡(luò)進(jìn)行建模,取得了比SSWE+SVM 和Paragraph Vector更好的效果。其中在Yelp2013數(shù)據(jù)集中,HNN 模型的均方誤差低于Paragraph Vector 算法但比NSC算法略高,這是由于HNN在CNN池化操作的時(shí)候選擇的是最大池化的方式。
在表5第二組實(shí)驗(yàn)中,可以看到加入用戶和商品信息后的UP-HNN 模型較第一組未考慮用戶和商品信息的HNN 模型而言,準(zhǔn)確率分別提升了6.9、2.3 和2.7 個(gè)百分點(diǎn),這表明在模型中加入用戶信息和產(chǎn)品信息的確有助于提高情感分析的精度。此外,UP-HNN 模型和NSC+UPA 模型使用的是同一種注意力機(jī)制,可以看到在相同的條件下,UP-HNN模型在三個(gè)數(shù)據(jù)集上的實(shí)驗(yàn)效果均優(yōu)于NSC+UPA模型,取得了更好的實(shí)驗(yàn)結(jié)果。
針對(duì)評(píng)價(jià)語(yǔ)料數(shù)據(jù)中存在詞語(yǔ)級(jí)別、句子級(jí)別和篇章級(jí)別等不同粒度的語(yǔ)義信息,提出一種基于CNN 和LSTM 的多粒度層次神經(jīng)網(wǎng)絡(luò)模型。該模型首先利用卷積神經(jīng)網(wǎng)絡(luò)來(lái)提取句子的局部特征,其次將得到的結(jié)果作為下一個(gè)LSTM模型的輸入得到句子級(jí)語(yǔ)義表示,最后將得到的句子級(jí)語(yǔ)義表示作為下一個(gè)LSTM 的輸入,最終形成篇章級(jí)語(yǔ)義信息用于分類;同時(shí)針對(duì)評(píng)論數(shù)據(jù)中用戶特征和商品屬性對(duì)評(píng)論數(shù)據(jù)情感極性判定的重要貢獻(xiàn),在第一階段給出的層次神經(jīng)網(wǎng)絡(luò)模型基礎(chǔ)上,采用注意力模型分別在句子級(jí)和篇章級(jí)把評(píng)價(jià)語(yǔ)料中用戶特征和商品屬性加入進(jìn)去,計(jì)算不同詞和句子的注意力權(quán)重,在不同層次上更好地反映語(yǔ)義信息。在三個(gè)公開數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果也表明,加入用戶和商品信息的模型較傳統(tǒng)的方法更能提高情感分類的精度。