自然語(yǔ)言處理N天-Day1201基于情感詞典的文本情感分析(Sentiment Analysis)

新建 Microsoft PowerPoint 演示文稿 (2).jpg

說(shuō)明:本文依據(jù)《中文自然語(yǔ)言處理入門實(shí)戰(zhàn)》完成泳姐。目前網(wǎng)上有不少轉(zhuǎn)載的課程,我是從GitChat上購(gòu)買徒役。

第十二課 基于情感詞典的文本情感分析(Sentiment Analysis)

很多場(chǎng)景下寞蚌,都會(huì)用到情感分析。比如麸折,做金融產(chǎn)品量化交易锡凝,需要根據(jù)輿情數(shù)據(jù)來(lái)分析政策和輿論對(duì)股市或者基金期貨的態(tài)度;電商交易垢啼,根據(jù)買家的評(píng)論數(shù)據(jù)窜锯,來(lái)分析商品的預(yù)售率等。
教程基于股吧的一部分爬取數(shù)據(jù)進(jìn)行分析

  • 使用SnowNLP進(jìn)行數(shù)據(jù)情感分析
  • 使用pytreebank繪制情感樹(shù)

1.中文情感分析方法簡(jiǎn)介

情感傾向分析的方法主要分為兩類

  1. 基于情感詞典的方法芭析,需要用到標(biāo)注好的情感詞典锚扎。
  2. 基于機(jī)器學(xué)習(xí)的方法,如基于大規(guī)模語(yǔ)料庫(kù)的機(jī)器學(xué)習(xí)馁启,需要大量的人工標(biāo)注的語(yǔ)料作為訓(xùn)練集驾孔,通過(guò)提取文本特征,構(gòu)建分類器來(lái)實(shí)現(xiàn)情感的分類惯疙。

文本情感分析的分析粒度(注意這個(gè)詞翠勉,分析粒度)可以是詞語(yǔ)、句子霉颠、段落或篇章对碌。

  • 段落篇章級(jí)情感分析主要是針對(duì)某個(gè)主題或事件進(jìn)行情感傾向判斷,一般需要構(gòu)建對(duì)應(yīng)事件的情感詞典蒿偎,如電影評(píng)論的分析朽们,需要構(gòu)建電影行業(yè)自己的情感詞典怀读,這樣效果會(huì)比通用情感詞典更好;也可以通過(guò)人工標(biāo)注大量電影評(píng)論來(lái)構(gòu)建分類器骑脱。句子級(jí)的情感分析大多通過(guò)計(jì)算句子里包含的所有情感詞的值來(lái)得到菜枷。
  • 篇章級(jí)的情感分析,也可以通過(guò)聚合篇章中所有的句子的情感傾向來(lái)計(jì)算得出惜姐。因此犁跪,針對(duì)句子級(jí)的情感傾向分析,既能解決短文本的情感分析歹袁,同時(shí)也是篇章級(jí)文本情感分析的基礎(chǔ)坷衍。
  • 中文情感分析的一些難點(diǎn):句子是由詞語(yǔ)根據(jù)一定的語(yǔ)言規(guī)則構(gòu)成的,應(yīng)該把句子中詞語(yǔ)的依存關(guān)系納入到句子情感的計(jì)算過(guò)程中去条舔,不同的依存關(guān)系枫耳,進(jìn)行情感傾向計(jì)算是不一樣的。文檔的情感孟抗,根據(jù)句子對(duì)文檔的重要程度賦予不同權(quán)重迁杨,調(diào)整其對(duì)文檔情感的貢獻(xiàn)程度等。

同樣凄硼,我們也可以推出铅协,在NLP的分析粒度也應(yīng)該是這三種,詞語(yǔ)級(jí)別摊沉、句子級(jí)別和段落篇章級(jí)別狐史。

2.工具介紹(SnowNLP和HanLP)

SnowNLP安裝很簡(jiǎn)單

pip install snownlp

SnowNLP 主要可以進(jìn)行中文分詞、詞性標(biāo)注说墨、情感分析骏全、文本分類、轉(zhuǎn)換拼音尼斧、繁體轉(zhuǎn)簡(jiǎn)體姜贡、提取文本關(guān)鍵詞、提取摘要棺棵、分割句子楼咳、文本相似等。
需要注意的是烛恤,用 SnowNLP 進(jìn)行情感分析母怜,官網(wǎng)指出進(jìn)行電商評(píng)論的準(zhǔn)確率較高,其實(shí)是因?yàn)樗恼Z(yǔ)料庫(kù)主要是電商評(píng)論數(shù)據(jù)棒动,但是可以自己構(gòu)建相關(guān)領(lǐng)域語(yǔ)料庫(kù),替換單一的電商評(píng)論語(yǔ)料宾添,準(zhǔn)確率也挺不錯(cuò)的船惨。
HanLP同樣也是基于電商評(píng)論數(shù)據(jù)來(lái)進(jìn)行分類和預(yù)測(cè)柜裸。其實(shí)是一個(gè)分類器,將不同的文本分到不同的類別中去粱锐。
但是疙挺,看到一些評(píng)價(jià),SnowNLP的結(jié)果不是很理想怜浅,其實(shí)HanLP也可以做铐然,我之后將SnowNLP替換為HanLP進(jìn)行測(cè)試。

如何獲取語(yǔ)料的情感值

以下是分別使用SnowNLP和HanLP做的情感分類恶座。HanLP會(huì)調(diào)用Java的底層API搀暑,相對(duì)而言SnowNLP更簡(jiǎn)便一些。

from snownlp import SnowNLP
from pyhanlp import *
from tests.test_utility import ensure_data

print("《%s》 情感極性是 【%s】" %(u'本本已收到跨琳,體驗(yàn)還是很好自点,功能方面我不了解,只看外觀還是很不錯(cuò)很薄脉让,很輕桂敛,也有質(zhì)感。',SnowNLP(u'本本已收到溅潜,體驗(yàn)還是很好术唬,功能方面我不了解,只看外觀還是很不錯(cuò)很薄滚澜,很輕粗仓,也有質(zhì)感。').sentiments))
print("《%s》 情感極性是 【%s】" %(u'屏幕分辨率一般博秫,送了個(gè)極丑的鼠標(biāo)潦牛。',SnowNLP(u'屏幕分辨率一般,送了個(gè)極丑的鼠標(biāo)挡育。').sentiments))
print("《%s》 情感極性是 【%s】" %(u'很差的一次購(gòu)物體驗(yàn)巴碗,細(xì)節(jié)做得極差了,還有發(fā)熱有點(diǎn)嚴(yán)重啊即寒,散熱不行橡淆,用起來(lái)就是燙得厲害,很垃圾D刚浴R菥簟!',SnowNLP(u'很差的一次購(gòu)物體驗(yàn)凹嘲,細(xì)節(jié)做得極差了师倔,還有發(fā)熱有點(diǎn)嚴(yán)重啊,散熱不行周蹭,用起來(lái)就是燙得厲害趋艘,很垃圾F;帧!瓷胧!').sentiments))


IClassifier = JClass('com.hankcs.hanlp.classification.classifiers.IClassifier')
NaiveBayesClassifier = JClass('com.hankcs.hanlp.classification.classifiers.NaiveBayesClassifier')
# 中文情感挖掘語(yǔ)料-ChnSentiCorp 譚松波
chn_senti_corp = ensure_data("ChnSentiCorp情感分析酒店評(píng)論", "http://hanlp.linrunsoft.com/release/corpus/ChnSentiCorp.zip")
def predict(classifier, text):
    print("《%s》 情感極性是 【%s】" % (text, classifier.classify(text)))

if __name__ == '__main__':
    classifier = NaiveBayesClassifier()
    #  創(chuàng)建分類器显拳,更高級(jí)的功能請(qǐng)參考IClassifier的接口定義
    classifier.train(chn_senti_corp)
    #  訓(xùn)練后的模型支持持久化,下次就不必訓(xùn)練了
    predict(classifier, u'本本已收到搓萧,體驗(yàn)還是很好杂数,功能方面我不了解,只看外觀還是很不錯(cuò)很薄瘸洛,很輕揍移,也有質(zhì)感。')
    predict(classifier, u'屏幕分辨率一般货矮,送了個(gè)極丑的鼠標(biāo)羊精。')
    predict(classifier, u'很差的一次購(gòu)物體驗(yàn),細(xì)節(jié)做得極差了囚玫,還有發(fā)熱有點(diǎn)嚴(yán)重啊喧锦,散熱不行,用起來(lái)就是燙得厲害抓督,很垃圾H忌佟!铃在!')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阵具,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子定铜,更是在濱河造成了極大的恐慌阳液,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揣炕,死亡現(xiàn)場(chǎng)離奇詭異帘皿,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)畸陡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門鹰溜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人丁恭,你說(shuō)我怎么就攤上這事曹动。” “怎么了牲览?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵墓陈,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)贡必,這世上最難降的妖魔是什么熬的? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮赊级,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘岔绸。我一直安慰自己理逊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布盒揉。 她就那樣靜靜地躺著晋被,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刚盈。 梳的紋絲不亂的頭發(fā)上羡洛,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音藕漱,去河邊找鬼欲侮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛肋联,可吹牛的內(nèi)容都是我干的威蕉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼橄仍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼韧涨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起侮繁,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤虑粥,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后宪哩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體娩贷,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年斋射,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了育勺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡罗岖,死狀恐怖涧至,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情桑包,我是刑警寧澤南蓬,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響赘方,放射性物質(zhì)發(fā)生泄漏烧颖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一窄陡、第九天 我趴在偏房一處隱蔽的房頂上張望炕淮。 院中可真熱鬧,春花似錦跳夭、人聲如沸涂圆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)润歉。三九已至,卻和暖如春颈抚,著一層夾襖步出監(jiān)牢的瞬間踩衩,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工贩汉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驱富,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓匹舞,卻偏偏與公主長(zhǎng)得像萌朱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子策菜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容