如何用R進(jìn)行文本內(nèi)容的情感分析
一、關(guān)于文本內(nèi)容的情感分析
一篇文章反映了什么態(tài)度?褒義還是貶義?肯定還是否定?喜怒哀樂愁,反映的是哪種情緒特征?對這些內(nèi)容的分析就是情感分析,或者叫情感傾向分析。情感傾向 可認(rèn)為是主體對某一客體主觀存在的內(nèi)心喜惡,內(nèi)在評價的一種傾向。當(dāng)然,有正常閱讀能力的人,在看了一篇文章后能夠判斷文章的情感和極性,但這是主觀體 驗(yàn),不是量化數(shù)據(jù)。在對文章進(jìn)行分析的時候,通常需要進(jìn)行量化的分析,顯得更加直觀、客觀。
情感分析基本上有兩種方法,一種是極性分析,一種是情感類別分析。前者分析文章的總體態(tài)度是肯定還是否定,后者分析文章反映了喜怒哀樂愁中的哪種情感。
仍然以政府工作報告為例,這次是新鮮出爐的2015年度政府工作報告。
下面是這份報告的情感極性分析結(jié)果:
下面是這份報告的情感類別分析結(jié)果:
可以看出,政府工作報告在情感極性上,以正面情感為主,其次是中立情感,在情感類別上,以好的情感為主,其次是樂的情感。不愧是政府工作報告。
二、如何進(jìn)行文本內(nèi)容的情感分析
1、情感分析的2種方法
情感分析的方法主要分為兩類:一種是基于情感詞典的方法;一種是基于機(jī)器學(xué)習(xí)的方法。
基于情感詞典的方法,需要用到標(biāo)注好的情感詞典。這類詞典,英文多,中文少。不過還好,中文的也能夠找到幾個,包括①臺灣大學(xué)研發(fā)的中文情感極性詞典 NTUSD;②大連理工大學(xué)的情感本體詞匯;③知網(wǎng)發(fā)布”情感分析用詞語集(beta版)”;④哈工大信息檢索研究室開源的《同義詞詞林》可以用于情感詞典的擴(kuò)充。這幾個詞典各有特色,都是免費(fèi),這點(diǎn)贊一個。
基于機(jī)器學(xué)習(xí)的方法,需要的材料就比較麻煩些,需要的是大量的人工標(biāo)注的語料作為訓(xùn)練集,通過提取文本特征,構(gòu)建分類器來實(shí)現(xiàn)情感的分類。比如要進(jìn)行情感 極性的判斷,就需要幾百上千個反映正面情感的文章,和幾百上千個關(guān)于負(fù)面情感的文章;要進(jìn)行情感分類的判斷,那么每種情感都需要大量文章作為語料。實(shí)際上 非常難辦到。如果能獲得分級的語料,就比較好辦,比如像豆瓣網(wǎng)的電影評論,每個評論都有對應(yīng)的星級,總共五個星級,每個星級對應(yīng)的評論集合就構(gòu)成了這一等 級的語料。根據(jù)這些語料進(jìn)行機(jī)器學(xué)習(xí),就能對新的評論,自動進(jìn)行分級。機(jī)器學(xué)習(xí)最簡單的方式是用樸素貝葉斯分類器進(jìn)行分類。
2、情感分析的算法
由于情感詞典比語料更容易獲取,所以用情感詞典進(jìn)行情感分析。算法就是思路,用情感詞典進(jìn)行分析,主要采用以下步驟進(jìn)行(以情感極性分析為例):
- ①讀取情感詞典。獲得褒義詞列表、貶義詞列表、中性詞列表;獲得情感分類詞列表及其情感強(qiáng)度。
- ②處理要分析的文本。主要是讀取文本,按句子拆分,每個句子進(jìn)行分詞。
- ③計算句子的情感得分。查找句子中每個詞語的情感分類,讀取其情感強(qiáng)度,用正面情感得分減去負(fù)面情感得分,得到句子的情感總分。同時分別計算正面情感的總 分和負(fù)面情感的總分,有中性情感的類似處理。需要注意的是,句子中有否定詞和程度副詞,會影響句子的情感走向和強(qiáng)度,比如”很不喜歡”,分解成”很 不 喜歡”,如果只計算喜歡就是錯誤的,因?yàn)榍懊嬗?rdquo;不”,情感完全相反,還有個”很”說明程度很強(qiáng)烈。因此還需要判斷是否有否定詞,如果有要反轉(zhuǎn)情感傾向, 要檢查是否有程度副詞,如果有要進(jìn)行加權(quán)處理。所以,這里還需要一個《否定詞庫》和《程度副詞庫》,這兩個詞庫哪里找呢?google吧。
- ④計算文章的情感得分。所有句子的情感得分之和,就是整篇文章的情感得分。
三、R中如何進(jìn)行情感分析
①首先,需要加載以下的庫:
- library(stringr) #對字符進(jìn)行操作
- library(rJava) #分詞需要調(diào)用java
- library(Rwordseg) #用于分詞
- library(ggplot2) #用于展示圖形結(jié)果
②其次,需要讀取詞庫,讀取詞庫中的每一類情感詞表,用list的格式存儲。
③然后,讀取要分析的文本,按句子間隔,每句為一行,建立list。
③分詞。如何分詞在前面的文章中有介紹。
④匹配詞表,計算每句話的情感得分,再計算整篇文章的總分和各類情感的總分。
⑤根據(jù)結(jié)果繪圖。
以上談了思路,具體代碼略過。因?yàn)榇a還需要優(yōu)化,不太適合展示出來。