新技能 get —— 使用 python 生成词云

什么是词云(word cloud)呢?词云又叫文字云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。

0. 常见词云生成工具

从技术上来看,词云是一种有趣的数据可视化方法,互联网上有很多的现成的工具:

  • Wordle是一个用于从文本生成词云图而提供的游戏工具
  • Tagxedo 可以在线制作个性化词云
  • Tagul 是一个 Web 服务,同样可以创建华丽的词云
  • Tagcrowd 还可以输入web的url,直接生成某个网页的词云
    ……

1. 库的准备

  • jieba
  • matplotlib
  • wordcloud

2. 10 行代代码

#coding: UTF-8
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt

text_from_file = open('文件.txt', 'rb').read()
wordlist = jieba.cut(text_from_file, cut_all=True)           # 首先使用 jieba 中文分词工具进行分词
wordlist_space_split = ' '.join(wordlist)
my_wordcloud = WordCloud().generate(wordlist_space_split)

plt.imshow(my_wordcloud)            # 以图片的形式显示词云
plt.axis('off')                     # 关闭坐标轴
plt.show()

刚开始运行这十行代码的时候,只显式了若干彩色的小矩形框,中文词语显式不出来,以为是万恶的 UTF8 问题,debug一下,发现 print 结巴分词的结果是可以显示中文的,那就是 wordcloud 生成词语的字体库问题了。开源的好处来了,直接进入wordcloud.py 的源码,找字体库相关的代码:

FONT_PATH = os.environ.get("FONT_PATH", os.path.join(os.path.dirname(__file__), "DroidSansMono.ttf"))

wordcloud 默认使用了DroidSansMono.ttf 字体库,改一下换成一个支持中文的ttf 字库(比如simsun.ttc,常规-宋体), 重新运行一下这十行代码,就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值