李德玉,羅鋒,王素格
(1.山西大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院,山西 太原 030006;2.計(jì)算智能與中文信息處理教育部重點(diǎn)實(shí)驗(yàn)室,山西 太原 030006)
隨著社交媒體的快速發(fā)展,人們越來越傾向于通過社交媒介來表達(dá)自己的觀點(diǎn)和看法,例如,微信、微博和博客等,這些社交媒介已經(jīng)成為人們生活的一部分,用于傳遞出人們內(nèi)心的各種情緒和情感狀態(tài),記錄著人們生活的點(diǎn)點(diǎn)滴滴。通常,人們以寫博文的形式來表達(dá)自己對某一產(chǎn)品的情緒,例如:“生日那天,男朋友送了我一件非常漂亮的生日禮物,我特別喜歡,而且,媽媽還專程來學(xué)??次?我感覺特別幸福?!?。這篇博文同時(shí)蘊(yùn)含著“喜歡”和“幸?!眱煞N情緒,即作者對男朋友送的禮物很喜歡,同時(shí)對媽媽過來看我感到很幸福。然而,傳統(tǒng)的情緒分析方法主要針對單標(biāo)簽分類或者多類別分類,他們都是給文本分配一個(gè)情緒標(biāo)簽[1],不能很好反映文本蘊(yùn)含多種情緒信息。為了給一個(gè)文本分配多個(gè)情緒標(biāo)簽,多標(biāo)簽分類方法為其提供了技術(shù)支持。
當(dāng)前,文本情感分析主要使用統(tǒng)計(jì)和機(jī)器學(xué)習(xí)的方法[2]。這些方法通常需要先利用向量空間模型(VSM)[3]對文本進(jìn)行特征表示,再使用機(jī)器學(xué)習(xí)方法訓(xùn)練相關(guān)的分類器,進(jìn)而預(yù)測新文本的情感信息。但是,當(dāng)處理多標(biāo)簽情緒分類時(shí),這些傳統(tǒng)的分類方法表現(xiàn)不佳。VSM難于利用文本中詞的上下文信息,丟失了很多重要的語義和情緒信息,這將影響情緒分類的性能。另一方面,文本和標(biāo)簽之間的相關(guān)性以及標(biāo)簽與標(biāo)簽之間的相關(guān)性對于多標(biāo)簽情緒分類又是至關(guān)重要[4]。例如,當(dāng)一篇文本中出現(xiàn)“高興”情緒時(shí),又出現(xiàn)“喜歡”情緒的可能性就比較高,即當(dāng)多種情緒同現(xiàn)出現(xiàn)時(shí),說明它們之間有某種聯(lián)系。若能有效地利用它們,可以提升多標(biāo)簽的分類性能[5]。
隨著深度學(xué)習(xí)技術(shù)在文本領(lǐng)域的日趨成熟,特別是詞向量技術(shù)[6]和卷積神經(jīng)網(wǎng)絡(luò)(CNN)[7]以及循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)[8]在文本領(lǐng)域的廣泛應(yīng)用,給文本情緒分析帶來了新的機(jī)遇。2013年,Google開源了一款用于詞向量計(jì)算的工具——Word2Vec[6],他可以在百萬數(shù)量級的詞典和上億數(shù)據(jù)集上進(jìn)行高效訓(xùn)練,不僅利用詞的上下文信息,而且還度量了詞與詞之間的相似性,從而受到很多NLP研究者的青睞。本文將深度學(xué)習(xí)技術(shù)和文本情緒多標(biāo)簽分類相結(jié)合,提出一種融合標(biāo)簽特征的CNN文本情緒多標(biāo)簽分類方法,通過Word2Vec對文本進(jìn)行詞向量表示,再利用CNN對文本進(jìn)行深層次的情緒特征表示,同時(shí)融入標(biāo)簽特征來強(qiáng)化文本與標(biāo)簽之間的相關(guān)性,以此提高情緒分類的性能。
目前,多標(biāo)簽分類方法主要有兩種,即問題轉(zhuǎn)換的方法和算法適應(yīng)的方法[9]。前者通過改變多標(biāo)簽分類的數(shù)據(jù),使之轉(zhuǎn)換為一個(gè)或多個(gè)單標(biāo)簽分類或者多類分類問題,其基本方法主要有二元關(guān)聯(lián)方法(BR)[10]、分類器鏈(CC)[11]、隨機(jī)K標(biāo)簽集法(RAkEL)[12]、校準(zhǔn)的標(biāo)簽排序法(CLR)[13]等。算法適應(yīng)的方法則是直接改變原有的單標(biāo)簽分類和多類分類方法,將其擴(kuò)展到多標(biāo)簽分類上。其中,MLKNN[14]、AdaBoost.MH[15]、RankSVM[16]和BPMLL[17]是這類方法的代表。由于多標(biāo)簽分類中,多個(gè)標(biāo)簽之間存在著依賴關(guān)系,很多學(xué)者提出了一些基于集成學(xué)習(xí)和層次分類的多標(biāo)簽分類方法,也取得了不錯(cuò)的效果。
目前,很多學(xué)者對文本情感分析做了大量的研究工作,基于深度學(xué)習(xí)的方法使情感分析的性能得到了顯著提升。Kalchbrenner等人[18]提出了一種基于Dynamic-CNN(DCNN)的方法來構(gòu)建句子級別的語義模型,他們使用動(dòng)態(tài)的K-Max池化方法來得到句子的特征表示,基于此特征,在輸出層進(jìn)行情感分類。Santos等人[19]提出了一種字符級別的句子CNN模型(charCNN),該模型使用兩層的卷積網(wǎng)絡(luò)從字和文本句子中抽取相關(guān)的特征來進(jìn)行情感分類。Wang等人[20]利用LSTM和BI-LSTM模型來進(jìn)行twitter的情感分類。Wang等人[21]提出一種CNN和RNN聯(lián)合的結(jié)構(gòu)來進(jìn)行文本的情感分類,他們通過CNN來得到文本的局部情感特征,用RNN來學(xué)習(xí)長距離的依賴信息。Huang等人[22]提出將句法知識編碼到樹形的LSTM模型中來提高短語和句子的表示能力,以此來進(jìn)行文本的情感分類。Akhtar等人[23]提出一種基于多層感知器集成模型來對金融微博和新聞進(jìn)行細(xì)粒度的情感分類。Qian等人[24]提出一種符合語言規(guī)范的LSTM模型來進(jìn)行文本的情感分類,該模型將情感語料、否定詞、強(qiáng)度詞等語言資源融入LSTM中來更精確地捕獲句子中的情感。Zhao等人[25]提出了一種循環(huán)隨機(jī)游走網(wǎng)絡(luò)學(xué)習(xí)方法,利用用戶發(fā)布的推文及其社交關(guān)系的深層語義表征,對特定推文進(jìn)行情感分類。
不同于情感分類,情緒分類是對文本中情緒信息進(jìn)行更細(xì)粒度的劃分。當(dāng)一篇文本或語料同時(shí)出現(xiàn)多種情緒信息,許多研究者們開始運(yùn)用多標(biāo)簽的思想來解決此類問題。Yang等人[26]提出了一種三段式的多標(biāo)簽情緒分類方法,分別從推文級和詞級對文本進(jìn)行計(jì)算。該方法首先利用jaccard similarity和KNN對整篇微博的情緒信息進(jìn)行分類,然后在詞語級別上,運(yùn)用樸素貝葉斯方法計(jì)算屬于每類情緒的概率,最后,通過設(shè)置合理的閾值來進(jìn)行最終的多標(biāo)簽分類。該方法有效地利用了標(biāo)點(diǎn)符號、表情符號以及詞典信息來標(biāo)記數(shù)據(jù)。Liang等人[27]運(yùn)用標(biāo)簽排序的思想來解決情緒分類問題。Buitinck等人[28]提出了一種處理影評數(shù)據(jù)的多標(biāo)簽情緒分類方法。該方法結(jié)合詞袋模型和文本篇章特征將評論文本標(biāo)記為預(yù)先設(shè)定的情緒標(biāo)簽集的一個(gè)子集,然后結(jié)合一對多的SVM方法,利用RAKEL對文本進(jìn)行情緒多標(biāo)簽分類。Liu等人[29]提出利用情緒詞典提取微博語料中的情緒特征以及原始分割詞特征,他們利用DUTSD、NTUSD和Hownet這三個(gè)情感詞典來抽取文本的情緒信息,并將其融入文本的表示中,最后使用kNN(MLkNN和BRkNN)算法作為基準(zhǔn)方法進(jìn)行了實(shí)驗(yàn)對比,實(shí)驗(yàn)結(jié)果證明CLR分類效果是最好的。
情緒標(biāo)簽之間的相關(guān)性是影響情緒多標(biāo)簽分類準(zhǔn)確率的重要因素,有效的利用標(biāo)簽之間的相關(guān)性可以顯著的提升多標(biāo)簽情緒分類的性能。一個(gè)文本中可能包含不同強(qiáng)度的情緒信息,這些情緒有的是互斥的,有的則是共存的。根據(jù)這一特性,一些研究者將情緒強(qiáng)度分布要素加入到多標(biāo)簽情緒分析工作中。Li等人[30]提出了利用MME最大熵模型檢測短文本情緒分布的方法,他們利用估計(jì)詞與社會(huì)情緒之間的關(guān)系。同時(shí)又引入了L-BFGS算法泛化MME,以便提高在多種規(guī)模的語料庫(新聞、微博等)中的預(yù)測能力。Wang等人[31]提出了一種將CNN和CLR相結(jié)合的方法來處理多標(biāo)簽情緒分類方法,他們利用skip-gram語言模型訓(xùn)練詞匯的分布表示,將微博語句中的詞表示成實(shí)數(shù)向量作為卷積神經(jīng)網(wǎng)絡(luò)的輸入,利用卷積神經(jīng)網(wǎng)絡(luò)來提取情緒文本的特征?;诖颂卣?利用CLR多標(biāo)簽分類方法進(jìn)行分類,得到微博屬于某一情緒類別的概率排序信息,但是該方法沒有將情緒標(biāo)簽信息加入到情緒文本的表示中,使得文本表示和情緒標(biāo)簽之間的關(guān)聯(lián)度不夠高。
多標(biāo)簽情緒分類方法的復(fù)雜性和難度都比較高,且該研究方向才剛剛起步[32],一些研究者主要思想是利用特征抽取的方法來抽取文本的特征,然后利用多標(biāo)簽方法進(jìn)行分類。但傳統(tǒng)的特征抽取方法很難利用文本中詞的上下文信息,其抽取的文本特征之間彼此也是孤立的,同時(shí)也沒有利用文本和情緒標(biāo)簽之間的關(guān)聯(lián)信息,使得傳統(tǒng)的文本多標(biāo)簽分類方法在處理情緒分類時(shí)效果略顯不佳。本文提出一種基于標(biāo)簽特征的CNN文本情緒多標(biāo)簽分類方法,利用Word2Vec對句子進(jìn)行詞向量表示,然后使用CNN來對文本進(jìn)行深層次的情緒表示,并在輸出層進(jìn)行多標(biāo)簽分類,同時(shí),我們利用標(biāo)簽特征強(qiáng)化文本和標(biāo)簽之間的聯(lián)系,提高分類的準(zhǔn)確率,實(shí)驗(yàn)表明,我們的方法取得了較好的效果。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種特殊的前饋神經(jīng)網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)主要由輸入層、卷積層、池化層、全連接層和輸出層組成。輸入層輸入訓(xùn)練好的文本詞向量;卷積層是特征抽取層,使用不同的過濾器來抽取不同的文本特征;池化層主要對卷積層的特征進(jìn)行降維和采樣,得到局部最優(yōu)值。本文使用融合標(biāo)簽特征的CNN模型,如圖1所示。
圖1 基于卷積神經(jīng)網(wǎng)絡(luò)和標(biāo)簽特征的模型Fig.1 A model based on convolutional neural network and label features
在圖1中包括兩個(gè)部分,分別為文本表示和情緒標(biāo)簽表示。
文本表示:將每個(gè)文本和其對應(yīng)的多個(gè)標(biāo)簽作為輸入層,將每個(gè)文本X表示為n×k的矩陣,其中,n是文本中詞的個(gè)數(shù),k代表詞向量的維度,文本中詞的詞向量xi采用Word2vec的Skip-gram進(jìn)行訓(xùn)練,即得到X=(x1,x2, …,xn)。將文本中對應(yīng)位置的詞向量依次拼接,得到文本的詞向量表示矩陣。其具體操作如公式(1)。
X=x1?x2?…?xn.
(1)
式中,?表示行向量方向的拼接操作,則X就是一個(gè)相應(yīng)的n×k的詞向量矩陣。
卷積層:主要是學(xué)習(xí)文本的局部特征,使用卷積核w∈Rh×k對輸入層的詞向量矩陣進(jìn)行卷積操作,對大小為h的連續(xù)窗口進(jìn)行卷積,具體操作見公式(2)。
ci=f(w·xi:i+h-1+b) ,
(2)
其中,ci代表卷積得到的第i個(gè)特征值,f為RELU激活函數(shù),w為濾波器的權(quán)重矩陣,其中w∈Rh×k,h×k為選取的濾波器的大小,b代表偏置項(xiàng),xi:i+h-1代表文本的第i個(gè)詞到i+h-1個(gè)詞的詞向量表示,該濾波器可以應(yīng)用于{x1:h,x2:h+1,…,xn-h+1:n},用于獲得文本不同部位的特征,從而得到一個(gè)文本特征向量。因此,經(jīng)過一個(gè)過濾器卷積后,得到一個(gè)特征向量C=[c1,c2, …,cn-h+1],其中,C∈Rn-h+1。本文選擇多個(gè)過濾器來進(jìn)行特征的提取,同時(shí)設(shè)置多個(gè)通道數(shù),從而得到不同局部大小多個(gè)特征向量,經(jīng)過以上操作即可實(shí)現(xiàn)對原始文本進(jìn)行特征表示。
池化層:對卷積層的特征向量C采樣。本文采用最大池化的方式得到局部的最優(yōu)特征,見公式(3)。
(3)
文本標(biāo)簽表示:將每一個(gè)文本對應(yīng)的情緒標(biāo)簽作為特征。設(shè)總標(biāo)簽個(gè)數(shù)為m,則每個(gè)文本對應(yīng)的情緒標(biāo)簽表示為長度為m的序列,即L=(l1,l2,…,li,…,lm)。每個(gè)情緒標(biāo)簽對應(yīng)的詞向量通過word2vec得到,而其余的標(biāo)簽用零向量表示。若將所有的l1,l2,…,li,…,lm對應(yīng)的詞向量拼接起來,即可得到每個(gè)文本的情緒標(biāo)簽矩陣Le。對于情緒標(biāo)簽的卷積操作、池化操作與文本X的兩種操作相同,也是利用公式(2)和(3)。由于每個(gè)文本的標(biāo)簽信息只存在于訓(xùn)練集中,測試并未標(biāo)出。因此,測試時(shí)將測試集中文本的標(biāo)簽向量全部填充為0。該方法在訓(xùn)練過程中可以使用文本的多個(gè)標(biāo)簽信息來加強(qiáng)文本和標(biāo)簽之間的表示,有利于訓(xùn)練過程中參數(shù)的選擇,提高分類的精度。
連接層:將文本X及其情緒標(biāo)簽矩陣Le分別進(jìn)行卷積和池化操作后,得到文本表示S′和情緒標(biāo)簽特征表示L′。再在連接層將S′和L′拼接,作為整個(gè)文本的表示,見公式(4)。在輸出層,使用sigmoid函數(shù)進(jìn)行分類,獲得文本屬于每一類情緒標(biāo)簽的概率,如公式(5)所示。
Sl=S′?L′
(4)
Y=sigmoid(W·Sl+b) ,
(5)
其中,Se表示文本的情緒特征向量,Y表示對應(yīng)于每個(gè)標(biāo)簽的概率向量,W是權(quán)重短陣,b是偏置。
本文選用了NLPCC2014的微博情緒分類數(shù)據(jù)集,其中,訓(xùn)練集有14 000條微博,測試集有3 000條,驗(yàn)證集有1 000條,且每條微博有一個(gè)或兩個(gè)情緒標(biāo)簽。將微博情緒分為7類:like, happiness, surprise, anger, fear, disgust, sadness,每一條微博都標(biāo)注相應(yīng)的情緒標(biāo)簽。該數(shù)據(jù)集中帶有同類情緒(正或負(fù))的標(biāo)簽共現(xiàn)的頻數(shù)很多,正類情緒和負(fù)類情緒共現(xiàn)的很少,同時(shí)出現(xiàn)like和happiness這兩類情緒的樣本占有比率最大,主要原因是他們之間的相關(guān)度最大。like和disgust幾乎不同時(shí)出現(xiàn),說明這兩類的情感關(guān)聯(lián)度不大。
2.2.1 詞向量訓(xùn)練
為了使用Word2vec進(jìn)行詞向量訓(xùn)練,我們從網(wǎng)上爬取了大量的無標(biāo)注的微博文本,得到一個(gè)10 G的無標(biāo)注的微博文本數(shù)據(jù)集U,經(jīng)過簡單地去噪和jieba分詞之后,再使用Word2vec的Skip-gram模型[6],根據(jù)其默認(rèn)的參數(shù)從U中訓(xùn)練出中文詞語詞向量表示,構(gòu)建一個(gè)詞向量查找表,然后將訓(xùn)練好的詞向量進(jìn)行保存。
2.2.2 訓(xùn)練過程及超參數(shù)設(shè)置
根據(jù)我們提出的方法,構(gòu)建出相應(yīng)的模型,該模型輸出層采用Sigmoid進(jìn)行分類,訓(xùn)練過程采用dropout和L2正則化來防止過擬合,并采用adagrad進(jìn)行優(yōu)化和參數(shù)的更新與迭代。訓(xùn)練過程中,本文將文本的情緒標(biāo)簽信息和情緒文本分別進(jìn)行卷積操作,利用情緒標(biāo)簽信息來輔助文本訓(xùn)練過程參數(shù)的調(diào)整,通過設(shè)置一個(gè)標(biāo)志項(xiàng),測試時(shí),將標(biāo)簽的卷積標(biāo)志設(shè)置為FALSE,只需要輸入測試情緒文本就可以得到對應(yīng)的情緒標(biāo)簽信息。我們設(shè)置詞向量維度為200,卷積核函數(shù)使用RELU激活函數(shù),過濾器窗口大小為3、4、5,迭代次數(shù)為50次,批處理大小為100,學(xué)習(xí)率為0.001,正則化系數(shù)為1×10-8。
本文采用不同的評價(jià)指標(biāo)對算法性能進(jìn)行評估,樣本的總個(gè)數(shù)為n。對于任意一個(gè)樣本Xi,Yi′表示分類器預(yù)測的標(biāo)簽集,Yi為樣本對應(yīng)的真實(shí)標(biāo)簽集,ri(y)表示在所有預(yù)測出的標(biāo)簽中標(biāo)簽y的排序位置。
1) 正確率Accuracy:指完全預(yù)測正確的樣本占所有樣本的比例,這是一種非常嚴(yán)格的評價(jià)方式,要求預(yù)測標(biāo)簽序列和實(shí)際標(biāo)簽序列完全一致。
(6)
2) 平均精度AvgPrec(Average Precision):指在預(yù)測樣本的標(biāo)簽排序中,排在預(yù)測樣本相關(guān)標(biāo)簽前面的也是實(shí)際相關(guān)標(biāo)簽的概率的平均,計(jì)算公式如(7)所示。
(7)
其值越大說明預(yù)測出來的標(biāo)簽越相關(guān),當(dāng)值為1時(shí)達(dá)到最好性能。
3) 1-錯(cuò)誤率(One-Error):指分類器對每個(gè)樣本的預(yù)測標(biāo)簽序列中,排序靠前的標(biāo)簽不屬于該樣本的實(shí)際標(biāo)簽集合的標(biāo)簽所占的比率。計(jì)算公式如(8)所示。
(8)
為了驗(yàn)證我們的方法的有效性,選用多標(biāo)簽分類中常用的方法與本文方法進(jìn)行比較實(shí)驗(yàn)。方法如下:
(1)校準(zhǔn)的標(biāo)簽排序方法CLR[13]:該方法是常用的多標(biāo)簽分類方法,首先使用tf-idf得到情緒文本的特征向量,然后使用CLR方法對文本情緒進(jìn)行多標(biāo)簽分類。CLR首先對候選標(biāo)簽根據(jù)其概率從小到大進(jìn)行排序,然后選擇排在前面的標(biāo)簽作為預(yù)測標(biāo)簽集合。
(2)基于標(biāo)簽順序的冪集法LPLO[27]:該方法將數(shù)據(jù)集進(jìn)行轉(zhuǎn)換,把每個(gè)樣本的標(biāo)簽集合當(dāng)作一個(gè)單標(biāo)簽,使數(shù)據(jù)集中不同的多標(biāo)簽組合構(gòu)成一個(gè)單標(biāo)簽集合,然后利用各種單標(biāo)簽分類方法對得到的新數(shù)據(jù)集進(jìn)行單標(biāo)簽分類,預(yù)測時(shí)再將預(yù)測的單標(biāo)簽映射到多標(biāo)簽上。
(3)CNN:該方法先利用詞向量進(jìn)行文本表示,然后直接利用CNN進(jìn)行信息抽取并分類,但沒有加入標(biāo)簽的特征。
(4)CNN+CLR[30]:該方法首先利用詞向量進(jìn)行文本表示,然后利用CNN進(jìn)行文本的特征抽取,最后在抽取的特征上利用CLR多標(biāo)簽分類方法進(jìn)行多標(biāo)簽分類。
(5)LF-CNN:本文基于標(biāo)簽特征的CNN(Label Feature CNN)方法。
利用上述五種方法進(jìn)行比較實(shí)驗(yàn)的結(jié)果見表1所示。
表1 五種方法實(shí)驗(yàn)結(jié)果的比較
由表1可知:我們的方法在各項(xiàng)評價(jià)指標(biāo)上取得了較好的結(jié)果,基于CNN的分類方法在準(zhǔn)確率和平均精度上優(yōu)于傳統(tǒng)的CLR和LPLO多標(biāo)簽分類方法,其原因是CLR和LPLO方法都是使用tf-idf來表示文本的特征,這種表示方法沒有充分利用文本的上下文信息,因而影響了分類精度。而單純的卷積神經(jīng)網(wǎng)路(CNN)和CNN+CLR方法都沒有融入情緒標(biāo)簽的信息,導(dǎo)致句子表示和情緒標(biāo)簽的關(guān)聯(lián)強(qiáng)度不高??傊?本文應(yīng)用多標(biāo)簽的思想來解決文本情緒分類問題,所提的LF-CNN方法將多標(biāo)簽情緒標(biāo)簽信息加入到句子表示中,在一定程度上強(qiáng)化句子和標(biāo)簽之間的聯(lián)系,提高分類的精度,并且在準(zhǔn)確率和平均精度上都得到了提升。說明本文的方法在表示層使用Word2Vec詞向量以及CNN對情感文本進(jìn)行深層次的表示,并且融入了情緒文本的多個(gè)情緒標(biāo)簽,使文本和情緒標(biāo)簽的關(guān)聯(lián)性更強(qiáng)。在一定程度上強(qiáng)化情緒文本的表示,讓它更偏向于情緒信息,在文本多標(biāo)簽情緒分類中達(dá)到了較好的結(jié)果。
文本情緒多標(biāo)簽分類目前受到越來越多的關(guān)注,已成為文本情感分析的主要任務(wù)之一,本文提出一種基于標(biāo)簽特征的CNN文本情緒多標(biāo)簽分類方法,利用CNN對情緒文本進(jìn)行特征表示,使用基于神經(jīng)網(wǎng)絡(luò)的多標(biāo)簽分類方法對文本情緒進(jìn)行多標(biāo)簽分類,同時(shí),我們使用標(biāo)簽特征來強(qiáng)化文本和情緒標(biāo)簽之間的聯(lián)系,將這種關(guān)聯(lián)性加入到情緒文本的特征之中,從而提高了多標(biāo)簽情緒文本的分類性能。由于標(biāo)簽之間的關(guān)聯(lián)性對于多標(biāo)簽分類的性能提升也是至關(guān)重要,在以后的工作中,將致力于情緒標(biāo)簽之間關(guān)聯(lián)性研究,并將其加入到情緒多標(biāo)簽分類之中,同時(shí),如何克服和改善數(shù)據(jù)不平衡問題,提高情緒多標(biāo)簽的分類精度也是我們關(guān)注的問題。