早上看到简友@向右奔跑 的文章超简单:快速制作一款高逼格词云图,试了一下介绍的工具真心好用,近期刚好想爬些数据做词云,就尝试了一下jieba分词提取txt关键词生成词云。
先上效果图:
用到的工具
- 原始数据:《白夜行》小说,txt格式(我是用calibre把原来mobi格式的书转成txt的)。后期可以用爬虫爬点网页数据做原始数据。为简单就先用txt练手好了。
- 提取关键词:jieba分词、停用词表
- 在线词云生成工具:TAGUL
简单分析一下
生成词云最关键的问题是中文分词,统计分析各个词的权重(权重较高的字体显示较大)。这些问题jieba分词已经帮我们解决了。我们只需要import jieba.analyse
,使用jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
方法即可,当然只是提取关键词还是不够的,因为有些没有意义的常用词诸如“我的”、“或者”、“一个”等词,会出现在结果里面,还需要一个“停用词表”来帮我们过滤结果。
我们的目标是提取关键词,并得到“关键词+制表符+权重”的文本,这里关键词和权重用制表符隔开是为了在用在线工具的时候,能顺利导入权重的值,决定词的大小(size)。
关键词和size中间用制表符分开
步骤:
- 安装jieba
pip install jieba
- 准备好txt文件和停用词表(网上可以下载到,txt格式即可)
- 编写代码
import jieba.analyse
path = '你的txt文件路径'
file_in = open(path, 'r')
content = file_in.read()
try:
jieba.analyse.set_stop_words('你的停用词表路径')
tags = jieba.analyse.extract_tags(content, topK=100, withWeight=True)
for v, n in tags:
#权重是小数,为了凑整,乘了一万
print v + '\t' + str(int(n * 10000))
finally:
file_in.close()
运行结果如下:
4.打开TAGUL,开始制作词云,把结果贴进import words里
5.选个shape(词云轮廓)
6.在fonts中,导入一个中文字体,我用的微软雅黑:
7.点击visualize即可生成
8.Download and Share里面可以下载需要的格式。
参考文章:
1.TF-IDF与余弦相似性的应用(一):自动提取关键词
2.超简单:快速制作一款高逼格词云图
3.jieba的github