相信大家对下面这种类型的图片并不陌生,这种被称作“词云图”的图片越来越常出现于互联网、线下商业演讲,甚至是学生的课堂。
那么词云是什么?词云图又是如何生成的呢?下面我们就来一一探讨吧!

词云是什么?
如今面对信息资讯爆发式地涌入,能否从冗长琐碎的文本中提炼出出现频率最高且有意义的“关键词”就成为了决定信息读取效率的关键因素。另一方面,越来越多的研究表明,人类对图像的敏感程度要远远高于文字和声音。于是,“词云”这个概念顺势而生。“词云”是一种大数据的可视化方式,随着大数据和人工智能的不断发展,词云图也越来越常出现在我们的视野中。词云平台能迅速且较为准确地提取文本的重要信息,然后将提取出的信息切分成关键词列表,最后以图片的形式展现给用户。词云可用于各种大数据分析,例如:对爬虫获取的淘宝买家评论、豆瓣影评、微博中的明星动态、时事热点关键词等数据进行提取并做情感分析。其拥有新颖、直观、便捷等多项优点,因此常被人们用于作网站信息轮播图、商业演说PPT插图、产品广告图,以及粉丝制作的明星实绩图等,它的用途可谓是极为广泛!
词云生成工具有哪些?
目前国内外拥有Wordle、WordArt、图悦等众多在线词云制作工具。Wordle简洁的界面设计给用户最舒适的视觉体验,对于冗长的文本和繁杂的词汇它都能快速地得出分析结果,并将出现频率较高的词汇突出展示。另外这款工具还拥有调整字体、布局及配色等功能。

WordArt功能齐全,可以自定义字体、词云形状、颜色等,做出来的词云图酷炫、精美,但由于是国外网站所以在访问时响应会比较缓慢。

图悦是一款国产词云工具,它在长文本的分析、提炼方面的表现还是十分值得一提的,而且对于用户来说操作也比较方便,还支持自定义模板图片,但在界面美观程度、导出excel词频等方面还稍有欠缺。

词云怎么生成?
经过前面的介绍,大家应该对词云有了初步了解,那么词云图究竟是如何生成的呢?词云图的制作其实并不复杂,我们也可以制作出属于自己词云图,下面让我们用python上手制作词云图吧!

(一)词云图初制作
1、导入所需库导入wordcloud词云库用于词云图的制作2、创建词云对象在wordcloud中一个词云对象对应一张词云图片,使用wordcloud词云库的WordCloud函数创建词云对象,并存储在一个变量中,此时该变量就表示一个词云对象3、写入文本写入文本(仅支持英文),并存储在一个变量中 4、文本分析调用wordcloud库的generate方法对该句子进行分析5、导出结果图为词云图命名,并利用to.flie方法将词云图以指定格式导出至本地文件夹(改变文件名的后缀即可输出不同格式的图片文件,支持png、jpg、svg等格式)详细代码:

效果图:

(二)美化词云图
本文用imageio图形库来导入外部图片作为词云的形状模板,另外wordcloud库中有很多属性,我们还可以通过设置属性的参数来美化我们的词云图。
在上一步的基础上进行以下优化:
1、导入所需库
导入imageio图形库用于外部图片的导入(支持png、jpg、svg等格式),导入wordcloud词云库的ImageColorGenerator模块用于提取模板图片的各部分颜色
2、图片处理
(1)用imageio库中的imread函数读取本地图片,wordcloud会将该模板图片中白色区域以外的部分全部渲染出来
(2)设置词云图属性,以下列举了一些常用属性:

3、文本处理
前面用直接写入文段的方式来为词云添加词语,那么当我们要提炼的词语来自一个很长的文本时该怎么办呢?
我们可以通过引用外部文件的方式来为词云添加词语,并根据该文本文件的编码方式来选择相应的读取方法
4、图片重上色
用color_func提取模板图片的各部分颜色,再用recolor给词云图重新上色,即可生成拥有新颜色的词云图片
5、导出结果图
为词云图命名,并利用to.flie方法将词云图以指定格式导出至本地文件夹(改变文件名的后缀即可输出不同格式的图片文件,支持png、jpg、svg等格式)
示例:使用“chinamap.jpg”作为模板图片和“三国演义.txt”文本制作词云图

chinamap.jpg

三国演义.txt
详细代码:

效果图:

(三)中文词云图
前面使用的wordcloud词云库能够完成英文句子、词法的分析并生成词云图,但并不支持中文分词。
当然,如果引入了中文字体,wordcloud也能将中文文本进行切分,但只能生成类似上一步的句子样式的词云图,因此只有引入了中文分词库才能有效地对中文文本进行分词。
jieba分词有三种模式:

大家可以根据自己的需求选择合适的分词模式,本文采用jieba分词的精确模式对文本进行分词,如下:

jieba会将文本中的句子切分成一个个词组成的列表,而wordcloud里需要传入的是字符串而不是列表,因此还需要用空格将这些词分隔开,形成一个长字符串,如下:

jieba会将文本中的句子切分成一个个词组成的列表,而wordcloud里需要传入的是字符串而不是列表,因此还需要用空格将这些词分隔开形成一个长字符串,如下:详细代码:

效果图:

亲爱的朋友们,你们学会了吗?
当然,词云制作工作不仅限于上述内容,我们还可以用词云做情感分析、绘制用户画像等。
想要制作出更高大上的词云图还需做很多优化工作,剩下的词云优化就交给大家慢慢探索吧!
如果你喜欢这篇文章,麻烦点一下“赞同“噢~谢谢