厙向陽 楊瑞麗
(西安科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 陜西 西安 710054)
智能終端的普及和互聯(lián)網(wǎng)技術(shù)的高速發(fā)展使得更多的消費(fèi)者可以選擇更加快捷方便的網(wǎng)絡(luò)購物方式。網(wǎng)絡(luò)口碑是決定消費(fèi)者是否做出購物決策的最主要因素,對于商家在銷售中及時(shí)調(diào)整銷售方案也具有重要參考價(jià)值。依靠人力在海量的評價(jià)信息中挖掘有價(jià)值的信息較為困難,所以情感分析問題成為了一個(gè)熱門的研究話題。目前,情感分析研究方法主要是基于詞典的方法[1]、基于機(jī)器學(xué)習(xí)的方法[2]、基于神經(jīng)網(wǎng)絡(luò)語言模型word2vect[3]以及基于深度學(xué)習(xí)[4]。
基于詞典的方法是通過匹配情感詞典中的情感詞,通過一定的規(guī)則計(jì)算出句子的情感極性完成分類。文獻(xiàn)[5]提出一種基于詞典的算法,該方法采用引導(dǎo)策略構(gòu)成新的情感詞典,通過乘以句子中情緒詞的分?jǐn)?shù)來確定句子的情感方向。文獻(xiàn)[6]利用情感詞典并根據(jù)詞語的詞性分別定義每個(gè)情感詞語的語義傾向得分,將文本中所有情感特征詞按特定規(guī)則組合計(jì)算,得到文本的情感傾向性得分,以此判斷文本的情感傾向性。雖然這些方法能夠很好地獲得句子的情感信息且容易理解,但基于詞典的方法會忽略掉語序及上下文信息,造成句子的情感指向性不明確?;跈C(jī)器學(xué)習(xí)的方法,是通過對訓(xùn)練數(shù)據(jù)進(jìn)行特征提取訓(xùn)練模型對測試數(shù)據(jù)進(jìn)行識別。文獻(xiàn)[7]為了解決詞典中存在詞語有時(shí)不能在特定語境中表達(dá)情感傾向這一問題,提出了一種基于最大熵分類模型的方法以識別給定評論語句的情緒詞,模型準(zhǔn)確率高于詞典的方法,但機(jī)器學(xué)習(xí)的方法需要人為進(jìn)行復(fù)雜特征提取。word2vect將文本轉(zhuǎn)化為向量表示,它的詞向量是根據(jù)上下文得到的。文獻(xiàn)[8]提出了基于多特征融合的中文評論情感分析方法,通過word2vect和SVM進(jìn)行訓(xùn)練和分類來判斷情感傾向,提高了情感分類準(zhǔn)確率。word2vect能夠很好地反映語義信息,但不能夠很好地獲取文本的情感信息。深度學(xué)習(xí)可以自動(dòng)提取深層復(fù)雜特征,在解決情感分析問題上表現(xiàn)非常優(yōu)秀。文獻(xiàn)[9]提出使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行句子建模,解決情感分析任務(wù),在多個(gè)數(shù)據(jù)集上均取得了很好的結(jié)果,文獻(xiàn)[10]使用更加復(fù)雜的長短期記憶模型(Long-Short Term Memory,LSTM)來解決情感分析問題。文獻(xiàn)[11]提出結(jié)合注意力的雙向LSTM商品評價(jià)情感分析方法,該方法不僅可以獲取到詞的上下文深度特征也可以突出重要信息,還能夠很好地提取句子的深度特征和語序信息,但它不能夠很好地獲取句子的情感信息且要求輸入句子為固定的長度,造成了信息遺漏等問題。本文在前人研究的基礎(chǔ)上提出了一種融合深度特征的AttBilstm_Sword2vect算法對中文在線評價(jià)進(jìn)行情感分析。將得到的情感向量Sword2vect融合經(jīng)AttBilstm模型處理輸出的含有深度特征的向量輸入到網(wǎng)絡(luò)的全連接層,很好地保留了句子的情感信息、深度特征信息以及語義信息。
word2vect[12]由神經(jīng)概率語言模型演進(jìn)而來,是Google公司在2013年開源的一種將詞語轉(zhuǎn)化為向量表示的模型。word2vect可以從大量文本語料中以無監(jiān)督的方式學(xué)習(xí)語義信息,通過一個(gè)嵌入空間使得語義上相似的單詞在該空間內(nèi)距離很近,可以較好地比較不同詞之間的相似和類比關(guān)系。word2vect有兩種主要模型:連續(xù)詞袋模型[13](cbow)和skip-gram模型,兩種高效的訓(xùn)練方法:負(fù)采樣(negative sampling)和層序softmax(hierarchi softmax)。cbow模型如圖1所示。
圖1 CBOW模型
cbow模型的思想是用已知的上下文Context(ω)來預(yù)測當(dāng)前詞ω,目標(biāo)是最大化對數(shù)似然函數(shù):
(1)
式中:ω表示語料庫C中任意詞;Context(ω)表示ω的上下文。
cbow得到詞向量的過程如下:
(1) 輸入層。輸入層為ω的上下文Context(ω)的大小為m的隨機(jī)向量,隨著訓(xùn)練的進(jìn)行不斷被更新。
(2) 投影層。將輸入層Context(ω)的向量相加平均作為隱層輸入。
(3) 輸出層。利用梯度上升法使目標(biāo)函數(shù)最大時(shí),輸出最可能的ω以及詞向量的更新值,將更新的詞向量和初始的向量求和得到cbow模型最終訓(xùn)練的詞向量。
1997年Schuster和Paliwal提出了雙向循環(huán)神經(jīng)網(wǎng)絡(luò)。在BiLSTM中有三個(gè)控制門(遺忘門,輸入門,輸出門)和一個(gè)記憶細(xì)胞,可以有效地保留歷史信息即上下文信息,學(xué)習(xí)到更長序列依賴信息。BiLSTM網(wǎng)絡(luò)模型[15]如圖2所示,hi為雙向LSTM兩個(gè)隱藏層輸出的結(jié)果,wi為詞向量。
圖2 BiLSTM模型圖
Attention機(jī)制模擬人腦注意力的特點(diǎn),核心思想是給重要的信息分配大的權(quán)重,其他部分分配小的權(quán)重。將Attention應(yīng)用在自然語言領(lǐng)域,文獻(xiàn)[14]在RNN中引入了Attention進(jìn)行篇章級別的文本分類,文獻(xiàn)[15]提出了基于CNN和ATTBiLSTM的文本情感分析方法,文獻(xiàn)[16]提出了結(jié)合詞性的基于注意力的雙向LSTM的中文文本分類方法。在Attention機(jī)制中:
ui=tanh(Wwhi+bw)
(2)
(3)
(4)
式中:ui為hi經(jīng)過一次全連接運(yùn)算的結(jié)果;uw為上下文向量,隨機(jī)初始化,在訓(xùn)練過程中更新;Ww、bw分別為注意力的權(quán)值矩陣和偏置項(xiàng);αi為第i個(gè)詞的注意力權(quán)重。
算法思想:首先,計(jì)算句子向量;其次,計(jì)算句子情感得分,用情感得分來加權(quán)句向量;最后,將情感詞向量輸入分類器中進(jìn)行分類。算法流程如圖3所示。
圖3 Sword2vect算法流程
設(shè)評論集為S={s1,s2,…,sn},將句子sj∈S(j=1,2,…,n)用jieba分詞工具分詞并去除停用詞后,得到句子分詞集合sj={wj1,wj2,…,wjk}。
分別從情感詞表、程度副詞表、否定詞表搜索句子sj中的情感詞wji、程度副詞wjd、否定詞wjo。其中:i,d,o∈{1,2,…,k},且wji,wjd,wjo∈{wj1,wj2,…,wjk}。
設(shè)情感詞wji的初始情感值為pwji,當(dāng)wji為正的情感詞時(shí),初始情感值為pwji=1,wji為負(fù)的情感詞時(shí)初始情感值pwji=-1。
當(dāng)程度副詞wjd修飾情感詞wji時(shí),wji的情感值更新為p1。
p1=pwji×pwjd
(5)
式中:pwjd表示程度副詞wjd的權(quán)重。
當(dāng)否定詞wjo修飾情感詞wji時(shí),pwjo為wjo的權(quán)重取值為-1,wji的情感值更新為p2。
p2=pwji×pwjo
(6)
當(dāng)感嘆號修飾wji時(shí),wji的情感值更新為p3。
p3=pwji×2
(7)
當(dāng)wji同時(shí)被不同的詞修飾時(shí),wji最終情感得分Pwji。
Pwji=p1+p2+p3
(8)
將該條評論中的所有情感詞的情感得分求和得到句子情感得分psj。
(9)
將正向評論情感得分修正為:
(10)
式中:scoremin表示所有正向評論句子中最小得分。
將負(fù)向評論情感得分修正為:
(11)
式中:scoremax表示所有負(fù)向評論句子中最大得分。
式(10)和式(11)保證了所有的正向評論的情感得分都為正,負(fù)向評論的情感得分都為負(fù)。
當(dāng)前語句sj的特征詞向量Vsj:
(12)
由式(10)、式(11)以及式(12)得到情感得分加權(quán)的Sword2vect模型。Qsj表示句子sj加權(quán)情感值之后的句向量。
Qsj=Psj×Vsj
(13)
2.2.1算法模型
圖4為融合深度特征的AttBilstm_Sword2vect算法模型。
圖4 AttBilstm_Sword2vect算法模型
該模型主要包括三層:輸入層、隱藏層和輸出層。其中,隱層由BiLSTM層、Attention層、Sword2vect和Dense層構(gòu)成。下式表示含有深度特征的Sword2vect向量。
Xsj=Dsj⊕Qsj
(14)
式中:Xsj表示句子sj融合深度信息的Sword2vec特征向量;Dsj表示句子sj在Attention層處理后的輸出向量;Qsj為式(13)的情感語義向量。
1) 輸入層:將文本向量化后作為神經(jīng)網(wǎng)絡(luò)的輸入,使得BiLSTM層能夠直接接收和處理。
2) 隱含層:BiLSTM層能夠進(jìn)行文本深層特征的提取,經(jīng)過BiLSTM層特征提取后,可以充分學(xué)習(xí)上下文信息;將經(jīng)過BiLSTM層處理后的輸出作為Attention層的輸入,Attention層能夠進(jìn)一步提取文本特征,突出關(guān)鍵信息;將含有序列信息和情感信息的輸出拼接,得到含有深度特征,語義特征以及情感特征的向量,最后將拼接向量輸入到Dense層。
3) 輸出層:將全連接層的輸出放入到softmax進(jìn)行結(jié)果預(yù)測。
2.2.2算法步驟
Step1數(shù)據(jù)預(yù)處理。對文本進(jìn)行去除數(shù)字、字母和特殊符號的處理,采用jieba分詞分別對正負(fù)向語料進(jìn)行分詞處理。
Step2去除停用詞。分詞完成后,讀取停用詞表,對分詞后的語料去除停用詞。
Step3由式(10)、式(11)計(jì)算每個(gè)句子的情感得分。
Step4由式(12)計(jì)算出每個(gè)句子向量。
Step5PCA降維。word2vect得到400維的特征詞向量。用PCA算法計(jì)算所有特征的貢獻(xiàn)率,根據(jù)結(jié)果圖發(fā)現(xiàn)前100維能夠較好地包含原始數(shù)據(jù)的絕大部分內(nèi)容,因此選定前100維作為模型的輸入。
Step6利用式(13)得到加權(quán)句子向量Sword2vect。
Step7將Step 1中預(yù)處理后的數(shù)據(jù)統(tǒng)一為固定的索引向量,索引向量對應(yīng)的詞向量經(jīng)過BiLSTM和Attention層處理,輸出后的向量拼接Step 6中得到的Sword2vect情感向量。
Step8將式(14)中得到的拼接向量輸入到全連接和softmax層,進(jìn)行分類預(yù)測。
Step9模型評估。
實(shí)驗(yàn)數(shù)據(jù)集:數(shù)據(jù)集1為譚松波酒店評論平衡數(shù)據(jù)集(ChnSentiCrop)20 000條評論數(shù)據(jù),包括10 000條積極評論和10 000條消極評論;數(shù)據(jù)集2為京東手機(jī)在線評論3 000條數(shù)據(jù),其中正向評論1 000條,負(fù)向評論2 000條。情感詞典是由知網(wǎng)、hownet詞庫、臺網(wǎng)大學(xué)的NTUSD情感詞本體庫的匯總,包括積極情感詞14 476個(gè),消極情感詞18 727個(gè)。實(shí)驗(yàn)環(huán)境及其配置如表1所示。
表1 實(shí)驗(yàn)環(huán)境配置
實(shí)驗(yàn)評價(jià)指標(biāo):精確度P,召回率R,F(xiàn)1,時(shí)間(s),ROC曲線。
(15)
(16)
(17)
式中:TP表示將正類預(yù)測為正類數(shù);TN表示將負(fù)類預(yù)測為負(fù)類數(shù);FP表示將負(fù)類預(yù)測為正類數(shù);FN表示將正類預(yù)測為負(fù)類數(shù)。
本文設(shè)計(jì)兩組實(shí)驗(yàn)方案。
方案一:基于不同的文本表示方法采用svm分類器對評論文本進(jìn)行分類,確定最優(yōu)的文本表示方法。
方案二:基于不同的分類方法進(jìn)行情感分析驗(yàn)證本文模型的有效性。
tf_idf+svm:將評論文本利用tf_idf轉(zhuǎn)化為詞向量后,用svm分類器對其訓(xùn)練分類。
word2vect+svm:將詞利用word2vect訓(xùn)練轉(zhuǎn)化為詞向量后,利用svm分類器對其訓(xùn)練分類。
Sword2vect+svm:將情感詞向量Sword2vect利用svm分類器對其訓(xùn)練分類。
圖5為手機(jī)評論基于不同的文本表示方法的ROC曲線圖。
圖5 基于不同的文本表示方法ROC曲線
可以看出,三個(gè)實(shí)驗(yàn)的ROC曲線面積依次為0.78、0.91、1。顯然Sword2vect+svm進(jìn)行情感分析的分類效果最好。
圖6為酒店評論時(shí)基于不同文本表示方法的ROC曲線圖。
圖6 基于不同的文本表示方法ROC曲線
可以看出,三個(gè)方案的ROC曲線面積依次為0.64、0.81、0.96。顯然也是Sword2vect+svm分類效果最好。
對三種文本表示方法在GPU加速環(huán)境下訓(xùn)練時(shí)間進(jìn)行對比,結(jié)果如圖7所示。
圖7 不同文本表示方法時(shí)間對比
可以看出,數(shù)據(jù)集為手機(jī)評論和酒店評論時(shí),tf-idf模型耗時(shí)都是最長的,Sword2vect模型的時(shí)間效率是最快的。隨著數(shù)據(jù)集的擴(kuò)充,Sword2vect模型的時(shí)間效率較其他兩個(gè)模型表現(xiàn)更加突出。Sword2vect的文本表示方法是三個(gè)中最好的。
將本文提出的融合深度特征的AttBilstm_Sword2vect方法與Sword2vect+svm、AttBilstm方法對比,在實(shí)驗(yàn)數(shù)據(jù)集手機(jī)評論和酒店評論上進(jìn)行實(shí)驗(yàn)分析,結(jié)果如表2所示。
表2 基于不同的分類方法的分類結(jié)果
由表2可知,融合深度特征的AttBilstm_Sword2vect在進(jìn)行情感分析時(shí)算法較AttBilstm算法、Sword2vect+svm算法有效果很大的提升。
1) Sword2vect特征詞向量比word2vect特征詞向量和tf_idf在準(zhǔn)確率、時(shí)間性能上有很大提升,且數(shù)據(jù)集越大,時(shí)間性能表現(xiàn)越突出。主要原因:
① 句子情感得分加權(quán)句向量既能很好地表達(dá)情感信息同時(shí)也能較好地反映語義信息。
② 實(shí)驗(yàn)采用了wiki大型中文語料生成的word2vect詞向量來抽取本文語料的特征詞向量,在得到詞向量的效率上有很大的提升。
2) word2vect詞向量進(jìn)行情感分析時(shí)效果相比于句子得分加權(quán)句向量Sword2vect弱,主要原因在于只注重了語義信息。
3) TF-IDF文本表示方法進(jìn)行情感分析時(shí)效果比較差主要原因:
① TF-IDF算法得到的特征詞形成的向量雖然能夠較好區(qū)分類別,但是不能很好地反映情感信息也不能反映語義信息。
② 對于不同的語料TF-IDF算法得到的特征詞都是不同的,所以只要更換數(shù)據(jù)集就需要重新獲取特征詞。
4) 融合深度特征的AttBilstm_Sword2vect模型進(jìn)行情感分析時(shí)是三個(gè)模型中效果最好的主要原因在于AttBilstm_Sword2vect模型中不僅含有句子的語義特征,情感特征同時(shí)也含有句子的深度特征。
本文分析了已有情感分析方法的優(yōu)缺點(diǎn),將已有方法進(jìn)行改進(jìn)并提出了一種基于句子情感得分加權(quán)句向量的Sword2vect情感分析方法,并在此基礎(chǔ)上對Sword2vect算法進(jìn)行改進(jìn)。結(jié)果表明基于融合深度特的AttBilstm_Sword2vect在解決情感分析問題上較其他方法在性能上有很大的提升。但在情感得分計(jì)算時(shí),只是考慮了副詞對情感詞的影響,并沒有考慮表情符號、問號存在時(shí)句子的情感得分處理方法。下一步將繼續(xù)對句子的情感做更加細(xì)致的分析研究。