前段时间,在亚马逊下了个订单,结果等了一个多月,商品没等来,却遇到了亚马逊单方面取消订单。收到退款的我大概就是下面这样的表情
曾经在国内各大电商买过很多东西,都没有遇到过这样的情况,怎么一到亚马逊就踩坑了呢,难道是运气太好中了“大奖”?于是我打开了黑猫投诉进行投诉,发现好像也有其他的用户遇到了类似的情况。
因此,我决定分析一下这些投诉,作为美国最大的电商公司,真的会经常做出这种失信的行为吗?
实现思路
- 通过抓包的方式抓取用户投诉
- 对投诉进行分词,统计词频
- 根据词频绘制出词云图
数据获取
黑猫投诉新浪旗下的消费者服务平台,它能够很快的将消费者与商家联系起来,帮助消费者维护自己的权益。本文所涉及的数据均来自黑猫投诉。
为了便于数据处理,我们采集移动版本的数据而非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中提交~