本文源自:https://zhuanlan.zhihu.com/p/28962461
記錄自己的實際操作
環(huán)境
Anaconda套裝,自帶科學計算的眾包。
windows系統(tǒng)
安裝
打開Anaconda命令行
依次執(zhí)行如下命令:
pip install snownlp
pip install -U textblob
python -m textblob.download_corpora #此條命令執(zhí)行完的時間很長,耐心等待
在命令提示符下鍵入:
jupyter notebook
你會看到目錄里之前的那些文件,忽略他們就好。你的文件
英文分析
英文分析需要用到的是 TextBlob包 。
用處也不少呢
上圖可以看出,這個包可以做許許多多跟文本處理相關的事情。但本文我們只專注于情感分析這一項。
from textblob import Textblob
text = "I am happy today. I feel sad today."
blob.sentences #劃分語句
blob.sentences[0].sentiment #分段結果,polarity 取值[-1,1],-1代表完全負面,1代表完全正面。subjectivity 主觀性
blob.sentiment #總的情感結果
運行過程
你可能會覺得沒有道理。怎么一句“高興”,一句“沮喪”,合并起來最后會得到正向結果呢?
首先不同極性的詞,在數值上是有區(qū)別的。我們應該可以找到比“沮喪”更為負面的詞匯。而且這也符合邏輯,誰會這么“天上一腳,地下一腳”矛盾地描述自己此時的心情呢?
中文
中文文本分析,我們使用的是 SnowNLP包 。這個包跟TextBlob一樣,也是多才多藝的。
才藝展示
我們還是先準備一下文本。這次我們換2個形容詞試試看。
text = u"我今天很快樂。我今天很憤怒。"
注意在引號前面我們加了一個字母u,它很重要。因為它提示Python,“這一段我們輸入的文本編碼格式是Unicode,別搞錯了哦”
操作步驟
輸出結果
這里你肯定發(fā)現(xiàn)了問題——“憤怒”這個詞表達了如此強烈的負面情感,為何得分依然是正的?
這是因為SnowNLP和textblob的計分方法不同。SnowNLP的情感分析取值,表達的是“這句話代表正面情感的概率”。也就是說,對“我今天很憤怒”一句,SnowNLP認為,它表達正面情感的概率很低很低。