轻松抓住内容关键字!


大家好,我是开源大叔。

今天给大家分享一个非常好用的行为词云图开源项目:wordcloud

介绍

当我们看到一篇文章或者电子书的时候,想知道文章或书中主要内容,则可以采用词云图来处理。
词云图就是对文本中出现频率较高的关键词进行可视化的展现。接下来跟着大叔来看看怎么使用吧。

快速入门

在使用之前我们先安装一下 wordcloud

1
pip3 install wordcloud

我们先来一个简单的例子,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud

text = "Hello wordcloud"

x, y = np.ogrid[:300, :300]

mask = (x - 150) ** 2 + (y - 150) ** 2 > 130 ** 2
mask = 255 * mask.astype(int)


wc = WordCloud(background_color="white", repeat=True, mask=mask)
wc.generate(text)

plt.axis("off")
plt.imshow(wc, interpolation="bilinear")
plt.show()

运行效果图如下:

上面展示了引文的词语,我们去试一下中文看看效果如何。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()
text = open(path.join(d, 'info.txt')).read()
alice_mask = np.array(Image.open(path.join(d, "file/alice_mask.png")))
stopwords = set(STOPWORDS)
stopwords.add("said")
wc = WordCloud(font_path="Hiragino Sans GB.ttc",background_color="white", max_words=2000, mask=alice_mask,
stopwords=stopwords, contour_width=3, contour_color='steelblue')
wc.generate(text)
wc.to_file(path.join(d, "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()

运行效果如下:

是不是看起来很酷,通过上面的介绍可以看出底图是可以随意调整的,可以换成自己喜欢的图片,但是有个问题需要注意,如果是中文的话,则需要指定字体 例如 Mac 中得到字体的信息:

找到 ttc 格式的字体文件 copy 到自己项目中就可以方便的使用啦。

大叔总结

上面大叔只是介绍了 wordcloud 的简单使用,在使用的时候还有其他的高级设置,大家可以试起来哦。


文章作者: 开源小分队
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 开源小分队 !
  目录