前段時間,在亞馬遜下了個訂單,結果等了一個多月,商品沒等來,卻遇到了亞馬遜單方面取消訂單。收到退款的我大概就是下面這樣的表情
曾經在國內各大電商買過很多東西,都沒有遇到過這樣的情況,怎麼一到亞馬遜就踩坑了呢,難道是運氣太好中了“大獎”?於是我打開了黑貓投訴進行投訴,發現好像也有其他的用戶遇到了類似的情況。
因此,我決定分析一下這些投訴,作爲美國最大的電商公司,真的會經常做出這種失信的行爲嗎?
實現思路
- 通過抓包的方式抓取用戶投訴
- 對投訴進行分詞,統計詞頻
- 根據詞頻繪製出詞雲圖
數據獲取
黑貓投訴新浪旗下的消費者服務平臺,它能夠很快的將消費者與商家聯繫起來,幫助消費者維護自己的權益。本文所涉及的數據均來自黑貓投訴。
爲了便於數據處理,我們採集移動版本的數據而非PC版本,可以看到,每一條投訴包括標題、詳情、投訴對象、投訴要求這幾個部分。標題作爲用戶訴求的高度總結,裏面的每個詞都是很有意義的,因此筆者主要對於標題數據進行分析。
通過抓包,我們瞭解到,黑貓展示列表有兩種方式,一個是通過serach查詢關鍵詞,另一個是通過company查詢具體商家收到的投訴。由於有一些網站(比如淘寶)並沒有在黑貓提供專門的客服,因此選擇了通過關鍵詞的方式獲取數據。
定義一個方法,用於進行HTTPS的GET請求
def get(url):
context = ssl._create_unverified_context()
request = urllib.request.Request(url)
response = urllib.request.urlopen(url=request,context=context)
return response.read().decode('utf-8')
將url設爲相應的接口,即可進行請求。請求返回的結果是json字符串,通過json的loads方法,可以轉爲json對象,便於對其操作
result = get_list(keywords=keywords,page=i) #獲取投訴列表
json_obj = json.loads(result) #將結果轉爲json對象
print(json_obj['result']['data']['lists']) #解析json
分詞
通過分詞的方式,將每一個標題分解爲不同的關鍵詞,便於統計。我們使用jieba對數據進行分詞,詳細介紹見github
安裝jieba lib
pip install jieba
在文件中引用
import jieba
設置自定義詞庫
del_list = ["訂單","取消"] #移除單詞
suggest_list = ["取消訂單","單方面取消","單方取消","單方面違約","無故退款","不發貨","按時發貨"] #增加詞庫
對標題數據進行分詞
def handle(list,keywords):
word = ""
for item in list:
seg_list = jieba.cut(p.sub("", item['main']['title']), cut_all=False) #分詞
for seg in seg_list:
if seg != keywords: #過濾公司名稱
word = word + " "
word = word + seg.strip() #過濾前後空白字符
return word
幾乎大部分投訴裏面都會包含目標商家或公司的名稱,因此我們在處理的時候對名稱進行過濾。
爲了方便,分詞的結果只是保存在了內存中。如果有需要,也可以存入文件或數據庫中。
繪製詞雲圖
安裝WordCloud和matpotlib,並在py文件中引用。WordCloud主要用於詞雲圖的生成,matpotlib用於圖片的繪製。
pip install WordCloud
pip install matplotlib
from wordcloud import WordCloud
import matplotlib.pyplot as plt
創建詞雲圖
def draw(f,filename):
#生成一個詞雲對象
wordcloud = WordCloud(
background_color="white", #設置背景爲白色,默認爲黑色
font_path="simhei.ttf", #支持中文
width=1280, #設置圖片的寬度
height=720, #設置圖片的高度
margin=10, #設置圖片的邊緣
collocations=False #避免重複出現
).generate(f)
# 繪製圖片
plt.imshow(wordcloud)
# 消除座標軸
plt.axis("off")
# 展示圖片
plt.show()
wordcloud.to_file('result/'+filename+'-'+str(int(time.time()))+'.png')
至此,對於數據的獲取和分析便完成了。我們將keyword設置爲“亞馬遜”,來看看結果吧!
通過雲圖我們可以看到“取消訂單”佔了最大的比例,其他比較重要的關鍵詞包括“購買”、“發貨”、“單方面”,這說明,絕大部分投訴的消費者,都遭受過訂單被取消,或者亞馬遜單方面違約的問題。
讓我們再來看看其他電商公司:
上面看到的三張圖,分別是淘寶、京東、拼多多的詞雲圖。我們看到他們主要的關鍵詞是快遞、退款、商家等等,所對應的問題應該主要是未及時發貨、商品質量問題需要退換或者是商家態度之類的。購買某些價格很低的商品時,消費者對於產品質量和真僞是有一定的心理預期的。但是商家違約、取消訂單這樣的行爲,還是在亞馬遜中比較明顯。
爲了確保結果的公平性,在對後面三家國內電商平臺進行分析時,使用了和亞馬遜相同的自定義詞庫,所以可能並沒有發現他們各自更具有針對性的問題。如果希望進行進一步分析,或者瞭解其他公司的詞雲圖,可以在github中下載代碼直接運行。
沒有十全十美的人,電商平臺也不會做到絕對的完美。作爲普通的消費者,很難去約束體量如此巨大的公司的行爲,但每個人都能夠感受到每個平臺、每個商家對待顧客的態度。選擇適合自己的平臺就好啦,願每個人的權益都不會受到損害~
注:
- 文中數據均來自於黑貓投訴,解釋權歸其所有,請勿將數據用於商業用途;
- 完整代碼已上傳至https://github.com/steveyg/CompanyWordCloud
- 如果有其他的數據來源或者數據展示、分析方式,歡迎留言或直接在github中提交~