天天看點

數學模組化學習筆記(十)語言情感計算( TextBlob與SnowNLP)

自然語言處理的情感分析比較複雜,這裡有兩個好用的python庫,針對英文的TextBlob和仿照其針對中文的SnowNLP

TextBlob的使用:

from textblob import TextBlob
source = open("review3.txt","r",encoding='utf-8')
line = source.readlines()
for i in line:
    blob = TextBlob(i)
    first = blob.sentiment.polarity
    print(first)      

其中polarity為情感評分值,範圍為[-1,1],大于0為積極情緒,小于0為消極情緒

sentiment中除了polarity,還有一個subject的主觀性系數

SnowNLP的使用:

先來看單句話如何使用:

from snownlp import SnowNLP
text='very good! amazing!'
s = SnowNLP(text)
print(s.sentiments)      

導入檔案使用并畫圖:

import  numpy as np
from snownlp import SnowNLP
import matplotlib.pyplot as plt
f=open('./Data/mumachengshi.csv', 'r', encoding='utf-8')
list=f.readlines()
sentimentslist=[]
f.close()
for i in list:
    s=SnowNLP(i)
    print(s.sentiments)
    sentimentslist.append(s.sentiments)
plt.hist(sentimentslist,bins=np.arange(0,1,0.01),facecolor='b')
plt.xlabel('情緒指數')
plt.ylabel('分詞數量')
plt.title('情感分析圖')
plt.rcParams['font.sans-serif']=['SimHei'] #顯示中文标簽
plt.rcParams['axes.unicode_minus'] = False  # 用來正常顯示負号
plt.show()


from snownlp import SnowNLP
#擷取情感分數
source = open("review1.txt","r",encoding='utf-8')
line = source.readlines()
sentimentslist = []
for i in line:
    s = SnowNLP(i)
    print(s.sentiments)
    sentimentslist.append(s.sentiments)
results = []
i = 0
while i<len(sentimentslist):
    results.append(sentimentslist[i]-0.5)
    i = i + 1

#可視化畫圖
import matplotlib.pyplot as plt
import numpy as np
plt.plot(np.arange(0, 47, 1), results, 'k-')
plt.xlabel('分詞數量')
plt.ylabel('情緒指數')
plt.title('情感分析圖')
plt.show()      

繼續閱讀