今天在看《机器学习系统设计》第四章的潜在狄利克雷分析的时候,看到了词云这个东西。于是在百度上搜了搜相关的东西,感觉还是挺有意思的。其中有一篇文章叫:利用pandas+python制作100G亚马逊用户评论数据词云。我就联想到了我之前爬过的淘宝文胸评论数据。于是有了此文。

数据预处理

首先把之前的数据下载下来,链接: https://pan.baidu.com/s/1bpbuZLX 密码: kvyp。数据库使用的是,使用mongoimport命令把之前的数据导入数据库。

1
mongoimport -d taobao -c rates --file ./rates.dat

使用robomongo客户端查看,一共是300w条数据。
count

这里只需要把关键词都提取出来就可以了,不需要考虑评论的顺序,所以把评论的内容都放到一个Txt(corpus.txt)里。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def get_rates():
client = init_client()
db = client[config['db_name']]
rates = db.rates.find({})
return rates
if __name__ == '__main__':
rates = get_rates()
print "Adding to corpus.txt..."
f = open('./assets/corpus.txt', 'a')
for rate in rates:
f.write(rate['rate_content'])
f.write(" ")
f.close()
print "Done."

关键词提取

这里使用了jieba默认的提取关键词的函数, 这个步骤大概要20分钟。

1
2
3
4
5
6
7
8
9
10
content = open("./assets/corpus.txt", 'r').read()
tags = jieba.analyse.extract_tags(content, topK=100, withWeight=True)
print "Finished extraction."
for tag in tags:
print tag[0], "\t", tag[1]
# 保存tags
with open("./assets/tags.pickle", "w") as f:
pickle.dump(tags, f)

运行后会把关键词以及权重保存到tags变量中。
weight

生成词云

最后,使用一个开源的词云库word_cloud生成图片, 效果如下。
word_cloud

完整代码

见:https://github.com/nladuo/taobao_bra_crawler/tree/master/keyword_analyzer

参考