快速制作一款高逼格词云图
词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。
一、先看看几个词云图
三教 × 九流:「生活、工作、学习」三教,「学术思辨、故事、诗歌、时评、随笔、科技工具、书影音、新技能 get、吐槽」九流。
读书专题文章中的书名,生成的词云图,今年你读过哪几本书?
六神的词云图,抓取他的120篇文章标题,进行分词统计后生成。
二、开始制作词云图
- 工具: 我使用的是TAGUL, https://tagul.com/ 一款在线词云制作工具,非常简单。
步骤:
1)导入文本
Import words , 可以直接粘贴导入文本数据,或者以web url的方式导入。文本数据包括关键词和size。
Add,是添加一个关键词和size
2)选择形状 -- 自定义形状图片
TAGUL提供了一些模板图形,左边是分类主题。
一般图形选取的原则,看关键词的内容来定,如公司LOGO,人物头像,需要上传你的图形图片,点 ADD IMAGE。自定义形状图片,有一个技巧,图片的清晰度不要求很高,轮廓清楚就好。
3)修改字体
注意TAGUL默认的都是英文字体,关键词如果是中文或有中文是无法显示出来的。
点Add Font添加就行,添加你电脑上 C:/WINDOWS/font 文件夹下的你喜欢的一种字体就行。
注意,如果你使用的是Mac,需把Windows下的字体拷一个过来进行添加就OK。
4)选择文字排列方向
选择文字方向即可。
5)生成词云 -- 下载
点击 "Visualize" 就可以生成。在Download and Share中下载标清(SQ)图片,就是你想要的词云图。
TAGUL付费版可以下载高清的图片,也可以生成嵌入的网页代码,词云有动态效果。
三、词源获取:爬虫和分词技术
我用以获取关键词的方法都是使用Python爬虫,如爬取简书用户信息,爬取简书首页、热门文章标题,爬取51JOB招聘职位信息 ......
注意,这时候你拿到的还不是关键词,是句子或段落,怎么得到关键词?就是把句子切成多个词语。看过老罗锤子M1发布会的一定对Big Bang有深刻的印象,对的,Big Bang就是分词的应用。
再把这些关键词进行分类汇总得到词频数据,选择那些高频词,按上面的方式制作词云图。
比如你看到的上面软技能的关键词,实际上是从所有职位描述进行分词得到的 372,739个词,再进行分类汇总后得出的高频词。分类汇总用的是SQL聚合函数,也可以用Excel。
爬虫和分词都需要编程实现。如果你没有编程方面的基础,这一步也可以简化来做,就是主观选取一些关键词,随机或手动指定词频(size)。
所以一个完整的词云图的制作过程应该是:网络抓数据(Python或R语言)— 分词 — 分类汇总(SQL)— 使用词云工具生成云图。
from os import path
from scipy.misc import imread
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud
text = cleaned_comments #文本数据
cut_text = ' '.join(jieba.lcut(text))
print(cut_text)
color_mask = imread("cat.jpg")
cloud = WordCloud(
font_path='Songti.ttc', # 字体最好放在与脚本相同的目录下,而且必须设置
background_color='white',
mask=color_mask,
max_words=2000,
max_font_size=40
)
word_cloud = cloud.generate(cut_text)
plt.imshow(word_cloud)
plt.axis('off')
plt.show()