張 璐, 殷 昊, 李壽山
(蘇州大學(xué) 自然語言處理實驗室 江蘇 蘇州 215006)
隨著社交網(wǎng)絡(luò)的迅速發(fā)展,越來越多的用戶傾向于在以微博為代表的社交媒體中表達(dá)自己的觀點(diǎn)或情感,每天數(shù)以億計的微博文本涉及時事政治、社會熱點(diǎn)、科技、娛樂等生活的方方面面.為了挖掘與分析這些海量的具有潛在價值的信息,情感分析正漸漸發(fā)展成為自然語言處理中的熱點(diǎn)研究[1].
情感分析又稱意見挖掘、觀點(diǎn)分析等,是通過計算機(jī)幫助用戶快速獲取、整理互聯(lián)網(wǎng)上的海量主觀評價信息,對帶有情感色彩的主觀性文本進(jìn)行分析、處理、歸納和推理的過程[2].文本情緒分類是情感分析的一項基本任務(wù),該任務(wù)旨在根據(jù)文本表達(dá)的個人情緒(高興、傷心、憤怒等)對文本進(jìn)行自動分類[3].由于用戶之間本身存在著喜好、立場、出發(fā)點(diǎn)等諸多方面的差異,因此對生活中的各種事件和現(xiàn)象所表現(xiàn)出的情緒和態(tài)度也會有很顯著的差異.迄今為止,文本情緒分析已經(jīng)被應(yīng)用在多個領(lǐng)域,比如股票市場[4]、在線聊天[5]以及新聞分類[6]等.
傳統(tǒng)的情緒分類方法通常需要充足的人工標(biāo)注語料,但是到目前為止,與情緒相關(guān)的公共語料庫相對匱乏,獲得這樣的標(biāo)注數(shù)據(jù)費(fèi)時費(fèi)力.社交文本還存在文本較短、信息量較少等問題.考慮到已有的文本情緒分類方法都是基于單語語料,我們嘗試?yán)梅g語料對語料庫進(jìn)行擴(kuò)充,并為情緒分類提供更多的信息量.
例1源文本: 今天大甩賣!我們?nèi)ス浣职伞?/p>
翻譯文本:There′s a big sale on today! Let′s go shopping.
例2源文本:To show off! This Gundam model looks nice.
翻譯文本:來炫耀!這個高達(dá)模型看起來不錯.
由于中文微博情緒語料庫的匱乏,例1中的“大甩賣”沒有在訓(xùn)練集中出現(xiàn),那么它很難被正確分類,但是如果我們把它翻譯成英文“big sale”,這樣我們就可以利用英文Twitter情緒語料中的信息來彌補(bǔ)這一點(diǎn).類似地,例2中的“show off”沒有在訓(xùn)練集中出現(xiàn),但是如果我們把它翻譯成中文“炫耀”,那么就可以利用中文微博情緒語料中的信息增加信息量.
我們提出了一種基于雙語信息和神經(jīng)網(wǎng)絡(luò)模型的情緒分類方法,同時利用中文微博語料和英文Twitter語料對模型進(jìn)行訓(xùn)練.首先,利用機(jī)器翻譯工具分別對兩種源語言語料進(jìn)行翻譯,得到相應(yīng)的翻譯語料;其次,將相應(yīng)語言的語料進(jìn)行合并擴(kuò)充,得到兩組不同語言類型的語料;最后,將文本分別使用源語言和翻譯語言進(jìn)行特征表示,建立雙通道LSTM模型融合兩組特征,構(gòu)建情緒分類器.
目前,針對社交媒體的文本情感分析方法研究大都面向情感極性(正面、負(fù)面)[7],而細(xì)粒度的情緒分類方法研究還比較缺乏.
早期的一些研究利用規(guī)則來判別情緒類別,Kozareva等[8]基于統(tǒng)計方法,利用上下文詞語與情緒關(guān)鍵詞的共現(xiàn)關(guān)系對文本進(jìn)行情緒分類.一般而言,情緒分類會被定義為一個機(jī)器學(xué)習(xí)問題.Tokuhisa等[9]提出了一種面向數(shù)據(jù)的方法,推斷對話系統(tǒng)中說話者表達(dá)的情緒.Beck等[10]提出了一個基于多任務(wù)高斯過程的方法對情緒進(jìn)行分類.Bhowmick等[11]利用多標(biāo)簽K近鄰分類技術(shù)對新聞句子進(jìn)行分類.Das等[12]利用弱勢語言(孟加拉語)博客語料進(jìn)行情緒分類,首先對句子的詞匯進(jìn)行6類情緒分類,再通過詞匯的情緒類別來判斷句子的情緒.Li等[13]提出利用句子的標(biāo)簽因子圖和上下文標(biāo)簽因子圖進(jìn)行句子級的情緒分類,很好地解決了數(shù)據(jù)稀疏和情緒多標(biāo)簽問題.Xu等[14]提出了一種由粗粒度到細(xì)粒度的分析策略,通過整合相鄰句子的轉(zhuǎn)移概率來重新定義情緒的類別.Yang等[15]介紹了一種基于情緒的主題模型為預(yù)先定義的情緒構(gòu)建了一個特定領(lǐng)域的詞典.
以上這些情緒分類方法都需要利用充足的標(biāo)注數(shù)據(jù)來訓(xùn)練模型,但是在很多情況下,獲得這樣的標(biāo)注數(shù)據(jù)費(fèi)時費(fèi)力.有些研究通過半監(jiān)督方法來解決這個問題,Liu等[6]提出了一種協(xié)同學(xué)習(xí)算法,利用未標(biāo)注數(shù)據(jù)中的信息提升情緒分類的性能.Li等[16]提出了一個雙視圖標(biāo)簽傳播算法,將源文本和回復(fù)文本分別看作兩個視圖.
傳統(tǒng)的情緒分類方法都是基于單語語料進(jìn)行,雖然情緒分類研究已開展多年,但是情緒語料庫的構(gòu)建工作相對較少,可用于研究的情緒語料庫也比較缺乏[17].對于情緒分類任務(wù)來說,標(biāo)注語料將會耗費(fèi)大量的人力物力,并且各個情緒類別的樣本分布很不平衡,影響情緒分類的性能.
為了同時利用中文微博語料和英文Twitter語料,我們用機(jī)器翻譯工具(http:∥fanyi.baidu.com/translate)對源語料進(jìn)行翻譯得到翻譯語料,即將中文微博語料翻譯得到英文微博語料;英文Twitter語料翻譯得到中文Twitter語料.圖1的機(jī)器翻譯模塊展示了訓(xùn)練過程中機(jī)器翻譯的流程.
為了能夠充分利用雙語信息,我們提出了一種基于多通道LSTM神經(jīng)網(wǎng)絡(luò)的情緒分類方法.我們將源語料和翻譯語料進(jìn)行合并,得到兩組不同語言類型的語料,即將中文微博語料與中文Twitter語料合并得到中文混合語料,英文Twitter語料與英文微博語料合并得到英文混合語料.我們將分類文本分別使用中文、英文進(jìn)行特征表示,使用LSTM[18]神經(jīng)網(wǎng)絡(luò)提取隱層特征,所用公式為
hChinese=LSTM(TChinese),
(1)
hEnglish=LSTM(TEnglish).
(2)
圖1 基于雙語信息和神經(jīng)網(wǎng)絡(luò)模型的情緒分類方法Fig.1 The approach to emotion classification based on bilingual information and neural model
其中:TChinese和TEnglish分別代表中文和英文特征表示.
在模型的merge層中,我們將上述兩組隱層特征進(jìn)行特征融合,具體融合公式為
hmerge=hChinese⊕hEnglish,
(3)
其中:⊕表示向量逐元素相加或者向量拼接.本文對兩種融合方式都進(jìn)行了探索.
在情緒分類模塊中,我們將融合特征hmerge作為全連接層的輸入,為了緩解過擬合,全連接層使用了Relu激活函數(shù),具體公式為
hdense=Relu(Wdense·hmerge+bdense),
(4)
其中:Wdense和bdense分別是全連接層的權(quán)重和偏置.Relu激活函數(shù)能夠?qū)⑿∮?的值全部置0,具有引導(dǎo)適度稀疏,緩解過擬合的作用.模型的最后是Softmax層,用來輸出分類概率,所用公式為
p(y|TChinese,TEnglish)=Softmax(Wo·hdense+bo),
(5)
其中:Wo和bo是輸出層的權(quán)重和偏置;p(y|TChinese,TEnglish)是當(dāng)前樣本的分類概率.
我們選用交叉熵?fù)p失函數(shù)作為模型的損失函數(shù),其公式為
(6)
其中:N是訓(xùn)練樣本的數(shù)目;C是目標(biāo)類別的數(shù)目;yj表示屬于第j個類別的概率;l是正則化系數(shù);θ代表所有參數(shù).我們采用Adam優(yōu)化算法[19]對參數(shù)進(jìn)行更新.
本實驗使用的中文語料來自新浪微博,由NLP&CC-2013中文微博情緒分析評測提供,英文語料來自Twitter,由SemEval-2018 Task 1: Affect in Tweets 提供.中文語料對應(yīng)7個情緒類別,分別是高興、喜好、憤怒、悲傷、恐懼、厭惡和驚訝,樣本數(shù)量分別為1 460、2 203、669、1 173、148、1 392、362.英文語料對應(yīng)4個情緒類別,分別是憤怒、恐懼、高興和悲傷,樣本數(shù)量分別為1 901、2 452、1 816、1 733.對于中文語料,由于恐懼情緒的樣本數(shù)量太少,根據(jù)其樣本數(shù)生成測試集得到的實驗結(jié)果具有較大的偶然性,因此我們選取第二少類別(驚訝情緒)樣本數(shù)的20%(即362*20%≈72)作為各情緒類別的測試樣本數(shù).訓(xùn)練樣本則從各類別的剩余樣本中抽取.對于英文語料,我們分別從各個類別中選取200個樣本作為測試集,剩余樣本都作為訓(xùn)練集.由于中英文語料類別不一致,所以我們僅對類別相同的部分進(jìn)行擴(kuò)充.
我們首先使用復(fù)旦大學(xué)發(fā)布的分詞工具FudanNLP對中文語料進(jìn)行分詞,英文語料則按空格進(jìn)行切分,然后使用word2vec訓(xùn)練詞的分布式表示,詞向量維度設(shè)置為100.實驗中使用的分類算法包括最大熵和LSTM神經(jīng)網(wǎng)絡(luò),其中最大熵使用Mallet機(jī)器學(xué)習(xí)工具包,LSTM神經(jīng)網(wǎng)絡(luò)使用深度學(xué)習(xí)框架Keras,LSTM層的輸出維度為256,全連接層的輸出維度為128,迭代次數(shù)為20.我們采用正確率和F1值作為衡量分類性能的評價指標(biāo).
為了驗證基于雙語信息的情緒分類方法的有效性,我們實現(xiàn)了以下幾種情緒分類方法.
1) 基準(zhǔn)方法+最大熵(Baseline_maxent).直接使用源語言的訓(xùn)練集訓(xùn)練最大熵分類器,對相應(yīng)語言類型的測試集進(jìn)行測試.
2) 基準(zhǔn)方法+LSTM(Baseline_lstm).直接使用源語言的訓(xùn)練集訓(xùn)練LSTM分類器,對相應(yīng)語言類型的測試集進(jìn)行測試.
3) 語料庫擴(kuò)充+最大熵(CorpusExp_maxent).通過機(jī)器翻譯對中英文語料進(jìn)行翻譯,從而實現(xiàn)訓(xùn)練語料的擴(kuò)充.使用擴(kuò)充后的訓(xùn)練集訓(xùn)練最大熵分類器,對相應(yīng)語言的測試集進(jìn)行測試.
4) 語料庫擴(kuò)充+LSTM(CorpusExp_lstm).通過機(jī)器翻譯對中英文語料進(jìn)行翻譯,從而實現(xiàn)訓(xùn)練語料的擴(kuò)充.使用擴(kuò)充后的訓(xùn)練集訓(xùn)練LSTM分類器,對相應(yīng)語言的測試集進(jìn)行測試.
5) 基于雙語信息的情緒分類方法:隱層拼接(Bilingual-concat).使用本文提出的基于雙語信息的情緒分類方法,其中隱層向量通過拼接方式融合.
6) 基于雙語信息的情緒分類方法:隱層相加(Bilingual-sum).使用本文提出的基于雙語信息的情緒分類方法,其中隱層向量通過按位相加方式融合.
圖2比較了幾種情緒分類方法在中文測試集和英文測試集上的情緒分類性能.通過比較Baseline-maxent和Baseline-lstm以及CorpusExp_maxent和CorpusExp_lstm,我們發(fā)現(xiàn)LSTM分類器的性能整體上略優(yōu)于最大熵分類器.
圖2 中文和英文測試集上不同情緒分類方法的性能比較Fig.2 The results of different classification methods on weibo and Twitter
為了驗證通過機(jī)器翻譯實現(xiàn)語料擴(kuò)充對分類性能的影響,我們比較了語料庫擴(kuò)充方法與基準(zhǔn)方法(Baseline_maxent和CorpusExp_maxent以及Baseline_lstm和CorpusExp_lstm).在中文測試集上,正確率分別提高了0.6%和1%;在英文語料上,正確率分別提高了1.5%和2.4%.上述數(shù)據(jù)表明,通過翻譯語料擴(kuò)充訓(xùn)練樣本能夠一定程度上提高情緒分類的性能.
為了驗證使用雙語信息對情緒分類性能的影響,我們比較了基于雙語信息的情緒分類方法和語料庫擴(kuò)充+LSTM方法(CorpusExp_lstm)的實驗性能.在中文測試集上,當(dāng)隱層向量拼接融合(Bilingual-concat)時,正確率提高了2.8%;當(dāng)隱層向量按位相加融合(Bilingual-sum)時,正確率提高了3%.在英文測試集上,當(dāng)隱層向量拼接融合(Bilingual-concat)時,正確率提高了1.2%;當(dāng)隱層向量按位相加融合(Bilingual-sum)時,正確率提高了1.4%.以上數(shù)據(jù)表明,融合文本的雙語信息能夠增加文本的信息量,提高情緒分類性能.
最后,我們比較了基于雙語信息的情緒分類方法與基準(zhǔn)方法+LSTM方法(Baseline_lstm)的實驗性能.在中文測試集上,當(dāng)隱層向量拼接融合(Bilingual-concat)時,正確率提高了3.8%;當(dāng)隱層向量按位相加融合(Bilingual-sum)時, 正確率提高了4%.在英文測試集上,當(dāng)隱層向量拼接融合(Bilingual-concat)時,正確率提高了3.6%;當(dāng)隱層向量按位相加融合(Bilingual-sum)時, 正確率提高了3.8%.實驗結(jié)果表明,我們提出的基于雙語信息的情緒分類方法既能夠通過機(jī)器翻譯擴(kuò)充訓(xùn)練樣本,又能夠增加單個文本的分類信息,不管在中文測試集還是英文測試集上都能夠顯著提高情緒分類的性能,充分驗證了該方法的有效性.
此外,為了更細(xì)致地比較各情緒分類方法的性能,我們分析了以上幾種情緒分類方法在各情緒類別上的F1值,如表1和表2所示.從表1和表2中可以看出,基于雙語信息的情緒分類方法在各情緒類別的F1值上總體是有提升的.從F1值的宏平均也可以看出,基于雙語信息的情緒分類方法在使用隱層拼接融合和按位相加融合時,分類性能都明顯優(yōu)于其他方法.
表1 中文語料上各情緒類別的F1值Tab.1 The F1 scores of different classification methods on weibo
表2 英文語料上各情緒類別的F1值Tab.2 The F1 scores of different classification methods on Twitter
本文針對文本情緒分類任務(wù)中已標(biāo)注樣本不足和分類文本較短、信息量少的問題,提出了一種基于雙語信息的情緒分類方法.該方法既能夠通過機(jī)器翻譯擴(kuò)充語料,又能夠融合分類文本的中英文特征表示,增加分類文本的信息.實驗結(jié)果表明,該方法能夠充分利用訓(xùn)練樣本,不管在微博語料還是Twitter語料上的性能都明顯優(yōu)于傳統(tǒng)方法.
在下一步工作中,我們將探索中文與其他語言(德語、日語等)的融合,以此來驗證我們方法的有效性.此外,我們可以實現(xiàn)基于多語信息的情緒分類方法,將多組不同語言領(lǐng)域的語料融合,同時提升各語言領(lǐng)域的情緒分類性能.