自然語言處理的情感分析比較複雜,這裡有兩個好用的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()