现成的词云制作工具也很多:
1.Wordle是一个用于从文本生成词云图而提供的游戏工具.
2.Tagxedo可以在线制作个性化词云.
3.Tagul是一个Web服务,同样可以创建华丽的词云.
4.Tagcrowd还可以输入web的url,直接生成某个网页的词云.
词云的本质是对文本中的词进行词云统计,根据出现频率的多少来按比例展示大小.
生产词云的原理
1.对文本数据进行分词,也是众多NLP文本处理的第一步,对于wordcloud中的process_text()方法,主要是停词的处理.
2.计算每个词在文本中出现的频率,生成一个哈希表。词频计算相当于各种分布式计算平台的第一案例wordcount, 和各种语言的hello world 程序具有相同的地位了,呵呵。
3.根据词频的数值按比例生成一个图片的布局,类IntegralOccupancyMap是该词云的算法所在,是词云的数据可视化方式的核心。
4.将词按对应的词频在词云布局图上生成图片,核心方法是generate_from_frequencies,不论是generate()还是generate_from_text()都最终到generate_from_frequencies
5.完成词云上各词的着色,默认是随机着色
词云背后的6C原理
* Connect: 目标是从各种各样数据源选择数据,数据源会提供APIs,输入格式,数据采集的速率,和提供者的限制.
* Correct: 聚焦于数据转移以便于进一步处理,同时保证维护数据的质量和一致性
* Collect: 数据存储在哪,用什么格式,方便后面阶段的组装和消费
* Compose: 集中关注如何对已采集的各种数据集的混搭, 丰富这些信息能够构建一个引入入胜的数据驱动产品。
* Consume: 关注数据的使用、渲染以及如何使正确的数据在正确的时间达到正确的效果。
* Control: 这是随着数据、组织、参与者的增长,需要的第六个附加步骤,它保证了数据的管控。
这十行代码构建的词云,没有通过API从公众号(wireless_com)直接获取,简化和抽象是工程化的典型方式,这里至今复制粘贴,甚至省略了correct的过程,直接将数据存储在纯文本文件中,通过jieba分词进行处理即compose,使用词云生成可视化图片用于消费consume,把一个个自己生成的词云组织到不同的文件目录便于检索算是初步的管控control吧。
关于分词的库
https://github.com/fxsjy/jieba
关于词云的库
https://github.com/amueller/word_cloud
首先先安装wordcloud和jieba
pip install wordcloud
pip install jieba
Python核心代码
importmatplotlib.pyplot as pltfrom wordcloud importWordCloudimportjieba
text_from_file_with_apath=open("/Users/vander/Desktop/dada",encoding="UTF-8").read()
wordlist_after_jieba=jieba.cut(text_from_file_with_apath,cut_all=True)
wl_space_split=" ".join(wordlist_after_jieba)
my_wordcloud=WordCloud(font_path="/Library/Fonts/Songti.ttc").generate(wl_space_split)
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
解析:
1-3行分别导入了画图的库,词云生成库和jieba的分词库.
4行是读取本地的文件.
5-6行使用jieba进行分词,并对分词的结果以空格分隔开.
7行对分词后的文本生成词云.
8-10行用pyplot展示词云图.