python 進行文本情感分析

wordcloud安裝參考:下載安裝wordcloud
snownlp安裝參考:下載安裝snownlp
jieba安裝參考:使用碼雲下載Github文件
wordcloud強調python版本,snownlp和jieba不強調版本,我裝的都是python3.6下的。
數據:和鯨社區數據-京東2k條評論

import pandas as pd
data = pd.read_csv('C:/Users/admin/Desktop/新建文件夾/京東評論數據.csv')
data.head(2)
sku_id _id item_name comment_id content creation_time reply_count score useful_vote_count useless_vote_count ... user_province nickname user_level_name user_client user_client_show is_mobile days reference_time after_days after_user_comment
0 7534113 03b51aa9-2b5e-41c3-a40b-343164a1d23a comment 11801751173 還可以刷臉解鎖,幫朋友買的,她很滿意 2018-08-13 12:24:59 0 5 0 0 ... NaN k***0 PLUS會員 2 來自京東iPhone客戶端 1.0 4.0 2018-08-09 13:38:15 0.0 NO_MESSAGE
1 7534113 03b51aa9-2b5e-41c3-a40b-343164a1d23a comment 11525358140 第一次買vivo,真心不錯,1498的機子,沒想到照相很清晰,性價比很高,買值了,還送了小音... 2018-05-27 17:49:17 7 5 19 0 ... NaN 呢***吶 PLUS會員 4 來自京東Android客戶端 1.0 5.0 2018-05-22 09:32:37 0.0 NO_MESSAGE

2 rows × 21 columns

data1 = data[['sku_id','content']]
data1.head(10)
sku_id content
0 7534113 還可以刷臉解鎖,幫朋友買的,她很滿意
1 7534113 第一次買vivo,真心不錯,1498的機子,沒想到照相很清晰,性價比很高,買值了,還送了小音...
2 7534113 手機好用快遞送的快。
3 8240587 手機收到。外觀設計很好!美觀大方。我喜歡!一直使用華爲手機。從榮耀七,榮耀八,榮耀九。反正一...
4 5942439 收到了,挺好的,聲音大,電池大,好用發貨速度快,非常滿意,好好好。
5 5089275 本來覺得雙十一還會便宜的,想不到和11月初的價格差不多,想想還是感覺入手了,早買早享受。我的...
6 7081550 沒有真正意義上的窄邊框,不過已經不錯了,手機流暢,另外還有51G空間可用,同時試了下近距拍攝...
7 5663902 幻夜黑顏色很漂亮,2.5D屏幕,圓潤。2K屏很清晰,驚豔
8 7283905 特地用了一段時間纔來評價,這手機值得這個價錢,打遊戲還行,就是電池很不耐用,攝像頭也很突出,...
9 5001213 機器沒得說,價格也合理,雖說仍有不足,但還是比較滿意的,首發就搶到了,暫時發現的不足就是揚聲...

情感分析

from snownlp import SnowNLP
data1['emotion'] = data1['content'].apply(lambda x:SnowNLP(x).sentiments)
data1.head(10)
E:\Anconda\programfiles\lib\site-packages\ipykernel\__main__.py:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  from ipykernel import kernelapp as app
sku_id content emotion
0 7534113 還可以刷臉解鎖,幫朋友買的,她很滿意 0.470635
1 7534113 第一次買vivo,真心不錯,1498的機子,沒想到照相很清晰,性價比很高,買值了,還送了小音... 0.999999
2 7534113 手機好用快遞送的快。 0.561609
3 8240587 手機收到。外觀設計很好!美觀大方。我喜歡!一直使用華爲手機。從榮耀七,榮耀八,榮耀九。反正一... 0.868183
4 5942439 收到了,挺好的,聲音大,電池大,好用發貨速度快,非常滿意,好好好。 0.983088
5 5089275 本來覺得雙十一還會便宜的,想不到和11月初的價格差不多,想想還是感覺入手了,早買早享受。我的... 0.984574
6 7081550 沒有真正意義上的窄邊框,不過已經不錯了,手機流暢,另外還有51G空間可用,同時試了下近距拍攝... 0.956682
7 5663902 幻夜黑顏色很漂亮,2.5D屏幕,圓潤。2K屏很清晰,驚豔 0.999839
8 7283905 特地用了一段時間纔來評價,這手機值得這個價錢,打遊戲還行,就是電池很不耐用,攝像頭也很突出,... 0.996540
9 5001213 機器沒得說,價格也合理,雖說仍有不足,但還是比較滿意的,首發就搶到了,暫時發現的不足就是揚聲... 0.992436
data1.describe()
sku_id emotion
count 3.637000e+03 3637.000000
mean 7.936312e+09 0.746161
std 1.165137e+10 0.354481
min 1.592994e+06 0.000000
25% 5.920651e+06 0.562240
50% 7.651903e+06 0.962449
75% 2.034912e+10 0.999123
max 3.032369e+10 1.000000

emotion平均值爲0.74,中位數爲0.96,25%分位數爲0.56,可見不到25%的數據造成了整體均值的較大下移。

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

bins=np.arange(0,1.1,0.1)
plt.hist(data1['emotion'],bins,color='#4F94CD',alpha=0.9)
plt.xlim(0,1)
plt.xlabel('情感分')
plt.ylabel('數量')
plt.title('情感分直方圖')
plt.show()

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-sptxJnq5-1591712744516)(output_6_0.png)]

由直方圖可見,評論內容兩級分化較爲嚴重。
3637條評論中有約2200條評論情感分在[0.9,1]區間內;同時,有約500條評論情感分在[0,0.1]區間內。

from wordcloud import WordCloud
import jieba
w = WordCloud(font_path="msyh.ttc")   #font_path="msyh.ttc",設置字體,否則顯示不出來
text = ''
for s in data['content']:
    text += s
data_cut = ' '.join(jieba.lcut(text))
w.generate(data_cut)
image = w.to_file('詞雲圖.png')

在這裏插入圖片描述
WordCloud各參數:https://blog.csdn.net/yaochuyi/article/details/80094659

#關鍵詞top10
from jieba import analyse 
key_words = jieba.analyse.extract_tags(sentence=text, topK=10, withWeight=True, allowPOS=())
key_words
[('手機', 0.20904023041744998),
 ('不錯', 0.10491967558213072),
 ('京東', 0.09431019624843097),
 ('屏幕', 0.054966423247022445),
 ('華爲', 0.05061411737589104),
 ('小米', 0.04731076382922812),
 ('拍照', 0.04647606302614274),
 ('非常', 0.044200923839597485),
 ('手感', 0.04270424332006433),
 ('感覺', 0.040063432512755605)]

參數說明 :
sentence 需要提取的字符串,必須是str類型,不能是list
topK 提取前多少個關鍵字
withWeight 是否返回每個關鍵詞的權重
allowPOS是允許的提取的詞性,默認爲allowPOS=‘ns’, ‘n’, ‘vn’, ‘v’,提取地名、名詞、動名詞、動詞

積極評論與消極評論

#計算積極評論與消極評論各自的數目
pos = 0
neg = 0
for i in data1['emotion']:
    if i >= 0.5:
        pos += 1
    else:
        neg += 1
print('積極評論,消極評論數目分別爲:')
pos,neg
積極評論,消極評論數目分別爲:

(2791, 846)

# 積極評論佔比
import matplotlib.pyplot as plt 

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

pie_labels='postive','negative'
plt.pie([pos,neg],labels=pie_labels,autopct='%1.1f%%',shadow=True)

plt.show()

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VZRPTzVB-1591712744520)(output_14_0.png)]

#獲取消極評論數據
data2=data1[data1['emotion']<0.5]
data2.head(10)
sku_id content emotion
0 7534113 還可以刷臉解鎖,幫朋友買的,她很滿意 0.470635
13 5942439 收到貨,聲音很大,功能也多,適合老人用,就是重量有點重, 0.461794
17 7283905 27號下的單,今天收到1星期內,座標河南商丘,手機是武漢倉過來的。充電頭是5V2A的 不支持... 0.001627
18 5001213 今天剛收到!\n看到京東的快遞包裝盒,我內心是一羣奔騰而過的!幾千塊錢的物品包裝,沒有防壓提... 0.495955
22 5942439 用着目前還可以,就是不知道可以用多久。希望久一些吧。 0.239150
32 5001213 第一批搶到,兩天後才收到,機器沒一代驚豔,邊框略粗,全面屏?解決了通話,迴歸正常手機行列!!... 0.444317
35 8240587 總體來說,顏值非常高,很好看,雖然說是後置指紋,但是後背看起來還是挺不錯的。用起來整體體驗還... 0.000012
44 3901175 手機還可以,就剛開始把卡放進去的時候不顯示卡,過了第二天才顯示出來,耳機也沒有,還有就是怎麼... 0.005839
48 7534113 像素不行,反正買都買了用都用了總體來說還行吧不討厭也不喜歡一般般,暫時沒有什麼問題 0.499447
51 5089275 總之還是挺好的,挺不錯、雖然沒有什麼優惠吧,搶了個神券還不能用!!!也是用的上了第三個蘋果、... 0.457264
#消極評論詞雲圖
text2 = ''
for s in data2['content']:
    text2 += s
data_cut2 = ' '.join(jieba.lcut(text2))
w.generate(data_cut2)
image = w.to_file('消極評論詞雲.png')

在這裏插入圖片描述

#消極評論關鍵詞top10
key_words = jieba.analyse.extract_tags(sentence=text2, topK=10, withWeight=True, allowPOS=())
key_words
[('手機', 0.19237764869875004),
 ('京東', 0.08930157104159077),
 ('未填寫', 0.08087213276666493),
 ('評價', 0.06602737843353074),
 ('屏幕', 0.05285184715212572),
 ('快遞', 0.050103021155518554),
 ('用戶', 0.05005720904465942),
 ('充電', 0.04605195695403029),
 ('收到', 0.038929704221495554),
 ('沒有', 0.03758001077768642)]

消極評論關鍵詞顯示,“屏幕”“快遞”“充電”是造成用戶體驗不佳的幾個重要因素,屏幕和充電問題有可能是手機不良品率過高或快遞壓迫。
因此平臺應注重提高手機品控,降低不良品率,另外應設法提升發貨,派送,派件的效率和質量。
本文使用jieba,snownlp,wordcloud,matplotlib等模塊對文本數據進行了簡要的情感分析及可視化,旨在瞭解用戶使用體驗,以此改進對平臺運營提出優化建議。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章