轻松抓住内容关键字!

2022-12-07 15:18:05 浏览数 (2)

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

介绍

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

快速入门

在使用之前我们先安装一下 wordcloud,这里安装使用的是 pip3,当然也可以直接使用 pip 进行安装。

代码语言:javascript复制
pip3 install wordcloud

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

代码语言:javascript复制
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()

运行效果图如下:

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

代码语言:javascript复制
  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 的简单使用,在使用的时候还有其他的高级设置,大家可以试起来哦!

0 人点赞