Fork me on GitHub

wordcloud源码阅读1——初探

wordcloud是python用来生成词云的第三方库,github地址是word_cloud
下载源码:

git clone https://github.com/amueller/word_cloud

然后,直接看最老的版本,有精力的话看完最老版本可以再看最新的版本。

git tag
git checkout 1.2.1

现在我们的目录结构如下: 项目目录

可以看到,核心代码都在wordcloud目录下:

wordcloud项目主要用了以下第三方库:

  • Numpy
  • PIL
  • Cython

储备知识:


框架大体流程: 词云流程

可以看出wordcloud类的两个核心方法process_text()generate_from_frequencies()

如果输入是处理后的{string:frequency}字典类型,直接生成词云的layout,若输入是未处理过的字符串,就要先进行process_text()统计词频等工作。

继续看generate_from_frequencies()的流程:

词云流程2

就得到了词云的layout,后边可以通过recolor()重新上色。

mask是一个n维数组(图片),在我的理解是photoshop里的蒙板,也叫遮色片。在wordcloud里mask决定了生成词云的位置。白色#FFFFFF称为mask out,即不在白色区域绘制词云。

layout is list of tuple ,格式(string, int, (int, int), int, color)) 定义了每个单词的(字符串,字体大小,(x位置,y位置), 方向, 颜色)

参考:
wordcloud的API可以参考wordcloud文档中文翻译
具体使用也可以参考网易云音乐歌手词云

Comments