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