python snownlp情感分析簡易demo

2022-02-18 07:53:16 字數 3529 閱讀 6325

snownlp是國人開發的python類庫,可以方便的處理中文文字內容,是受到了textblob的啟發而寫的,由於現在大部分的自然語言處理庫基本都是針對英文的,於是寫了乙個方便處理中文的類庫,並且和textblob不同的是,這裡沒有用nltk,所有的演算法都是自己實現的,並且自帶了一些訓練好的字典。注意本程式都是處理的unicode編碼,所以使用時請自行decode成unicode。mit許可下發行。

其 github 主頁

我自己修改了上文鏈結中的python**並加入些許注釋,以方便你的理解:

from snownlp import

snownlp

#snownlp庫:

#words:分詞##

sentiments:情感度

#pinyin:拼音##

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.0s = 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 snownlp

pip install pylab

pip install pandas

前提是你安裝了pip,若是pip沒有安裝可以檢視我之前的 文章

在vs code中我們可以右鍵模組名檢視定義,便能看到模組的實現了.不得不說vs code很強大,希望微軟能這麼一直走下去,走向開源走向跨平台!!

然後我隨便提取了《心靈捕手》豆瓣網評,放在了txt中:

其實大多數情況下,大陸的譯名比港譯要更有味道。

it is not ur fault!

我是在電視上偶爾才看到這個電影的,當時看的時候真的很感人。 為什麼會有這麼天才的人,卻有著這樣子曲折的人生。

是認為劇本很好卻沒有被完全拍出來:) 對演員的表演還是心存質疑一點點~ 呵呵

好評前幾日剛剛看過,一部觸動心靈的電影,尋找真正的人生

這篇影評寫的很棒,我的眼睛濕潤了

很好的**

最後就是處理的程式了:

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

#語序...

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還是號稱情感分析準確很高的!

基於情感詞典的情感打分

原理我就不講了,請移步下面這篇 包括情感詞典的構建 各位讀者可以根據自己的需求稍作簡化 以及打分策略 程式對原 稍有改動 本文採用的方法如下 首先對單條微博進行文字預處理,並以標點符號為分割標誌,將單條微博分割為n個句子,提取每個句子中的情感詞 以下兩步的處理均以分句為處理單位。第二步在情感詞表中尋...

實體詞典 情感詞典 (全)情感詞情感詞典大全

例項簡介 全 包括知網hownet情感詞典,台灣大學ntusd簡體中文情感詞典,情感詞彙本體,情感詞典及其分類,清華大學李軍中文褒貶義詞典,漢語情感詞極值表,否定詞典,褒貶詞及其近義詞 例項截圖 核心 sentimentanalysisdic sentimentanalysisdic 知網howne...

情感小故事

女人入洞房那天,早早收起了自己的鞋,等男人脫鞋上炕,女人卻雙腳踩在男人的鞋上。男人見了,嘿嘿 笑著說,還挺迷信。女人卻認真地說,俺娘說了,踩了男人的鞋,一輩子不受男人的氣。男人說,俺娘也說了,女人踩了男人的鞋,那是一輩子要跟男人吃苦受罪的。女人開始試探著管男人,先從生活小事兒開始,支使男人拿尿盆倒尿...