python snownlp情感分析簡易demo

SnowNLP是國人開發的python類庫,能夠方便的處理中文文本內容,是受到了TextBlob的啓發而寫的,因爲如今大部分的天然語言處理庫基本都是針對英文的,因而寫了一個方便處理中文的類庫,而且和TextBlob不一樣的是,這裏沒有用NLTK,全部的算法都是本身實現的,而且自帶了一些訓練好的字典。注意本程序都是處理的unicode編碼,因此使用時請自行decode成unicode。MIT許可下發行。
github 主頁
我本身修改了上文連接中的python代碼並加入些許註釋,以方便你的理解:html

from snownlp import SnowNLP
# SnowNLP庫:
# words:分詞
# tags:關鍵詞
# sentiments:情感度
# pinyin:拼音
# keywords(limit):關鍵詞
# summary:關鍵句子
# sentences:語序
# tf:tf值
# idf:idf值
s = SnowNLP(u'這個東西真心很贊')
# s.words         # [u'這個', u'東西', u'真心', u'很', u'贊']
print(s.words)
s.tags  # [(u'這個', u'r'), (u'東西', u'n'), (u'真心', u'd')
# , (u'很', u'd'), (u'贊', u'Vg')]
print(s.sentiments)
# s.sentiments    # 0.9769663402895832 positive的機率
# s.pinyin        # [u'zhe', u'ge', u'dong', u'xi', # u'zhen', u'xin', u'hen',
# u'zan']4
s = SnowNLP(u'「繁體字」「繁體中文」的叫法在臺灣亦很常見。')
# s.han           # u'「繁體字」「繁體中文」的叫法在臺灣亦很常見。'
print(s.han)
from snownlp import SnowNLP
text = u'''
天然語言處理是計算機科學領域與人工智能領域中的一個重要方向。
它研究能實現人與計算機之間用天然語言進行有效通訊的各類理論和方法。
天然語言處理是一門融語言學、計算機科學、數學於一體的科學。
所以,這一領域的研究將涉及天然語言,即人們平常使用的語言,
因此它與語言學的研究有着密切的聯繫,但又有重要的區別。
天然語言處理並非通常地研究天然語言,
而在於研製能有效地實現天然語言通訊的計算機系統,
特別是其中的軟件系統。於是它是計算機科學的一部分。
'''
s = SnowNLP(text)
print(s.keywords(6))  # [u'語言', u'天然', u'計算機'] 不能用tags輸出關鍵字.
s.summary(3)  # [u'於是它是計算機科學的一部分', u'天然語言處理是一門融語言學、計算機科學、
# 數學於一體的科學', u'天然語言處理是計算機科學領域與人工智能領域中的一個重要方向']s.sentences
# print(s.sentences)
print(s.sentiments)  # 1.0
s = SnowNLP([[u'這篇', u'文章'],
             [u'那篇', u'論文'],
             [u'這個']])
# print(s.tf)
# print(s.idf)
# print(s.sim([u'文章']))  # [0.3756070762985226, 0, 0]

在編譯運行以前,先得安裝snownlp包,後續還有pylab,pandas模塊:
在VS Code終端(查看->集成終端)裏面輸入:
pip install snownlppython

pip install pylabgit

pip install pandas
前提是你安裝了pip,如果pip沒有安裝能夠查看我以前的 文章github

在VS Code中咱們能夠右鍵模塊名查看定義,便能看到模塊的實現了.不得不說VS Code很強大,但願微軟能這麼一直走下去,走向開源走向跨平臺!!
而後我隨便提取了《心靈捕手》豆瓣網評,放在了txt中:算法

其實大多數狀況下,大陸的譯名比港譯要更有味道。
It is not ur fault!
我是在電視上偶爾纔看到這個電影的,當時看的時候真的很感人。 爲何會有這麼天才的人,卻有着這樣子曲折的人生。
是認爲劇本很好卻沒有被徹底拍出來:) 對演員的表演仍是心存質疑一點點~ 呵呵
好評
前幾日剛剛看過,一部觸動心靈的電影,尋找真正的人生
這篇影評寫的很棒,個人眼睛溼潤了
很好的片子app


最後就是處理的程序了:編碼

from snownlp import SnowNLP
import pandas as pd
import pylab as pl
txt = open('F:/_analyse_Emotion.txt')
text = txt.readlines()
txt.close()
print('讀入成功')
sentences = []
senti_score = []
for i in text:
    a1 = SnowNLP(i)
    a2 = a1.sentiments
    sentences.append(i)  # 語序...
    senti_score.append(a2)
    print('doing')
table = pd.DataFrame(sentences, senti_score)
# table.to_excel('F:/_analyse_Emotion.xlsx', sheet_name='Sheet1')
# ts = pd.Series(sentences, senti_score)
# ts = ts.cumsum()
# print(table)
x = [1, 2, 3, 4, 5, 6, 7, 8]
pl.mpl.rcParams['font.sans-serif'] = ['SimHei']
pl.plot(x, senti_score)
pl.title(u'心 靈 捕 手 網 評')
pl.xlabel(u'評 論 用 戶')
pl.ylabel(u'情 感 程 度')
pl.show()

最後的效果:人工智能

可能有些不許確,我也是隨便提取的數據,不過snownlp仍是號稱情感分析準確很高的!spa

相關文章
相關標籤/搜索