背景
前面通过爬虫获取了猫眼上”流浪地球“的评论:获取猫眼电影的评论
那么就做一个酷炫的词云吧,直观的看看大家都在想什么,先上效果图:
思路
数据清洗
首先由于评论是用户发表的,可能什么字符都会有,要先把一些特殊符号去掉,这里就用到了正则替换:
1 | msg = re.sub("[\s+\.\!\/_,$%^*()+\"\'\?]+|[+——!,。?、~@#¥%……&*()【】;:]+|\[.+\]|\[.+\]", "", line) |
分词与标签
清洗后的数据,可以使用jieba
分词包来进行分词,并把所有的分词保存在一个list
中,然后计算出每个分词出现的次数。
1 | # 分词 |
生成词云
使用wordcloud
包,就可以很方便的生成词云图片了。
先新建一个WordCloud
对象,进行配置,然后利用前面的分词词频就可以生成对应的图片了。
1 | # 计算图片颜色 |
这里需要注意的是:
mask=alice_coloring
:这里通过numpy
将图片矩阵化,来获取图片的颜色作为WordCloud
的mask
,是为了最后生成的图云不仅外形与我们输入的图片保持一致,而且整体颜色也保持一致。- 输入的原图,背景色需要设置为白色而不是透明色,否则会全屏幕都是字。。。
- 对于中文的词云,需要制定中文的字体,这里用的是微软雅黑
保存图片
最后使用matplotlib.pyplot
来保存图片,保存前要进行图片属性的一些设置。
1 | width = img.width/80 |
这里需要注意的是:
建议根据原图片的长宽比例进行一定的缩小,以免生成的图片像素过大而产生报错。
1
ValueError: Image size of 98400x46500 pixels is too large. It must be less than 2^16 in each direction.
结论
以上就是使用抓取的评论生成词云的大致思路,完成的实现代码请见:https://github.com/keejo125/web_scraping_and_data_analysis/tree/master/maoyan
最后放一张原图,你能看的出来嘛,抠图技术有限O(∩_∩)O哈哈~