現如今各種APP、微信訂閱號、微博、購物網站等網站都允許用戶發表一些個人看法、意見、態度、評價、立場等信息。針對這些數據,我們可以利用情感分析技術對其進行分析,總結出大量的有價值信息。例如對商品評論的分析,可以了解用戶對商品的滿意度,進而改進產品;通過對一個人分布內容的分析,了解他的情緒變化,哪種情緒多,哪種情緒少,進而分析他的性格。怎樣知道哪些評論是正面的,哪些評論是負面的呢?正面評價的概率是多少呢?
利用python的第三方模塊SnowNLP可以實現對評論內容的情感分析預測,SnowNLP可以方便的處理中文文本內容,如中文分詞、詞性標注、情感分析、文本分類、提取文本關鍵詞、文本相似度計算等。大概大於等於0.5,可以判斷為正面評價——積極情感,小於0.5,可以判斷為負面評價——消極情感。
下面分析一組京東上某產品的評論數據並生成折線圖:
部分源數據:
實現過程:
#加載情感分析模塊 from snownlp import SnowNLP #from snownlp import sentiment import pandas as pd import matplotlib.pyplot as plt #導入樣例數據 aa ='F:\\python入門\\python編程錦囊\\Code(實例源碼及使用說明)\\Code(實例源碼及使用說明)\\Code(實例源碼及使用說明)\\09\\data\\京東評論.xls' #讀取文本數據 df=pd.read_excel(aa) #提取所有數據 df1=df.iloc[:,3] print('將提取的數據打印出來:\n',df1) #遍歷每條評論進行預測 values=[SnowNLP(i).sentiments for i in df1] #輸出積極的概率,大於0.5積極的,小於0.5消極的 #myval保存預測值 myval=[] good=0 bad=0 for i in values: if (i>=0.5): myval.append("正面") good=good+1 else: myval.append("負面") bad=bad+1 df['預測值']=values df['評價類別']=myval #將結果輸出到Excel df.to_excel('F:\\python入門\\python編程錦囊\\Code(實例源碼及使用說明)\\Code(實例源碼及使用說明)\\Code(實例源碼及使用說明)\\09\\data\\result2.xls') rate=good/(good+bad) print('好評率','%.f%%' % (rate * 100)) #格式化為百分比 #作圖 y=values plt.rc('font', family='SimHei', size=10) plt.plot(y, marker='o', mec='r', mfc='w',label=u'評價分值') plt.xlabel('用戶') plt.ylabel('評價分值') # 讓圖例生效 plt.legend() #添加標題 plt.title('京東評論情感分析',family='SimHei',size=14,color='blue') plt.show()
Excel結果:
作圖的結果: