相比大家应该有看过很多漂亮的词云,什么是词云呢?词云又叫文字云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。
其实,用python也是很容易就实现我们想要的效果的,今天就简单实践一下如何用python来画一些简单的词云。

其实,在绘制词云的前期工作中,有个很重要的就是分词,这篇文章就不讲解了,讲起来有可能是长篇大论了,有机会再讲解一下。
安装相关库
之前用过的库我就不介绍了,这儿有一个新的库,wordcloud,同样的,利用python的pip直接进行安装即可。
导入库及数据
#导入相关库
from wordcloud import WordCloud, STOPWORDS
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from PIL import Image
# 读取相关数据集
text = open('/Users/yongsenlin/Desktop/constitution.txt').read()
text2 = open('/Users/yongsenlin/Desktop/alice.txt').read()
第一次画图
# 对分词后的单词进行词云生成
wordcloud = WordCloud().generate(text)
# 使用matplotlib展示词云
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

可以看出一个简单的词云就画好了,但是,有些字体太大了,然后对比下来其他单词都看不清了,我们可以选择将最大的字体缩小,从而可以看到更多的单词。
第二次画图
wordcloud = WordCloud(max_font_size=40).generate(text)
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

这一次,可以看到最大的“states”在显示上缩小了好多,我们的“视野”也更大了。
第三次画图
那么,我想画一些有形状的词云,怎么画呢?其实也很简单,不过在此之前,你需要准备一个“面具”,就是你想显示的形状的二值图。
# read the mask image
alice_mask = np.array(Image.open('/Users/yongsenlin/Desktop/alice_mask.png'))

stopwords = set(STOPWORDS)
stopwords.add("said")
wc = WordCloud(background_color="white", max_words=2000, mask=alice_mask,
stopwords=stopwords)
# 生成词云
wc.generate(text2)
# 将结果导出
wc.to_file('/Users/yongsenlin/Desktop/alice.png')
# 展示一下结果
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.figure()
plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
plt.show()

漂漂亮亮的Alice就画好了哈哈哈哈!

数据集和python代码我已经上传到微信公众号后台,大家有需要的可以在我的微信公众号(SAMshare)后台进行索取,输入关键字:词云,即可。
本文介绍了如何使用Python的wordcloud库制作词云。通过分步展示从读取文本到生成不同风格的词云,包括调整最大字体大小和使用自定义形状,帮助读者理解并实践Python词云的绘制技巧。
633

被折叠的 条评论
为什么被折叠?



