在数据可视化方面,词云一直是一种视觉冲击力很强的方式。对输入的一段文字进行语义分割,得到不同频度的词汇,然后以正比于词频的字体大小无规则的集中显示高频词,简洁直观高效。

词云虽好,但也要易做才行。本文探索了3种生成词云的方式:

  • 在线工具

  • 软件工具

  • 编程工具


00 数据来源

春节期间,NBA传奇巨星科比·布莱恩特意外坠机身亡,引得无数球迷无限惋惜。聊表敬意,写了一个小爬虫爬取了豆瓣上科比一组记录片的评论信息,以此作为文本分析的数据来源。(豆瓣搜索"曼走 科比《告别》"即可)


01 生成词云之在线工具

搜索词云在线生成工具,会得到很多结果,包括国内外的网站平台都有。对比了搜索较为靠前的几款在线工具,但或多或少都存在一些使用上瑕疵,有的是网页加载慢,有的是要注册后方可使用,有的是字体支持较差,还有的是要付费使用。

当然,毕竟是要使用方便快捷有效的,而且最好还是免费的就完美了。对比之后,感觉这两个平台还算相对好用:

  • WordArt

    • 优点:无需注册即可使用;对热词数量无限制;支持个性化配置,包括热词、字体、形状等;在线词云支持交互查看

    • 缺点:英文操作界面,部分用户使用不便,加载较慢;字体支持差,中文仅有一种支持字体,且因权限问题可能无法添加本地字体

默认字体库仅有一种字体支持中文

  • 微词云

    • 优点:支持自动文本分析;有大量形状模板,也支持自定义模板;图片色彩多样,包括渐变色;支持大量字体;操作简单

    • 缺点:需注册后方可使用;免费使用下载图片有水印;对热词数量有限制

支持大量个性化配置

2个在线平台生成的词云结果:

WordArt在线生成(个别中文仍有乱码)

微词云在线生成(中间实际有水印)


02 生成词云之软件工具

网页在线工具和桌面软件在生成词云这项任务上,本无实质差别,甚至很多平台是既支持在线生成也有桌面客户端软件。

为了区别于网页在线生成词云的方式,这里选用了商业智能分析工具Tableau作为桌面软件的代表来制作词云。虽然,可能词云不算的上是Tableau的主业。

用Tableau生成可视化图表一向比较简单,制作词云也不例外。将数据源加载进Tableau界面后,简单的点击设置即可。

"热词"是所有词源,"次数"是频度

实际上,用Tableau制作词云的输入数据不是文本,而是经处理后的两列结果数据。从这个角度来说,Tableau生成词云的方式甚至有些低级,严格讲只能称的上是对筛选和统计完毕后的文本进行可视化显示而已。

不过也容易想到其非常方便的应用场景,例如提供了若干个商品名称及其销售额的数据,则可通过词云中商品名的大小直观显现各自收益占比。

Tableau制作词云的优缺点:

  • 优点:操作极其简单;词云界面可交互,便于二次筛选

  • 缺点:输入源要求完成词频统计;个性化设置程度较低;热词大小对比度较差

提供统计完毕后的热词数据,利用Tableau生成词云结果:

Tableau生成的词云算不上出众


03 生成词云之编程工具

很多编程工具均可生成词云,Python自然也不例外。

  • wordcloud

wordcloud是Python专门用于制作词云的第三方库,使用前需安装,而且这个安装过程往往会隐藏一些坎坷。利用wordcloud生成词云非常简单,可以通过大量的参数设置来个性化定制词云效果。

虽然wordcloud自带切分词处理能力,但鉴于其切分效果一般,所以往往还是会配套使用jieba库来进行切分,而后再用空格连接(wordcloud在处理切分时优先使用空格作为分隔符)

示例源码:

import jieba
import wordcloud
import matplotlib.pyplot as plt
word_list = jieba.lcut(words)   # 结巴词库切分词
word_list = [word for word in word_list if len(word.strip())>1]#清洗一个字的词
word_clean=" ".join(word_list)
import imageio
mask=imageio.imread(r'kobe.jpg')
wc = wordcloud.WordCloud(font_path = "simkai.ttf",#指定字体类型background_color = "white",#指定背景颜色max_words = 200,  # 词云显示的最大词数max_font_size = 255,#指定最大字号mask = mask) #指定模板
wc = wc.generate(word_clean)##生成词云
plt.imshow(wc)
plt.axis("off")
plt.show()
"""Wordcloud详细参数设置
def __init__(self, font_path=None, width=400, height=200, margin=2,ranks_only=None, prefer_horizontal=.9, mask=None, scale=1,color_func=None, max_words=200, min_font_size=4,stopwords=None, random_state=None, background_color='black',max_font_size=None, font_step=1, mode="RGB",relative_scaling='auto', regexp=None, collocations=True,colormap=None, normalize_plurals=True, contour_width=0,contour_color='black', repeat=False,include_numbers=False, min_word_length=0):
"""

查阅wordcloud的官方文档可以发现,其自带参数设置非常管饭,比如以下几个有用功能:

  • font_path:设置字体

  • mask:设置词云模板

  • stopwords:停用词列表

给出wordcloud3种不同方式生成词云结果:

利用文本直接生成词云

利用jieba分词后生成词云

设置词云模板mask后效果

  • PyEcharts

除了wordcloud专门用于生成词云的第三方库外,python的另一个可视化库Pyecharts也支持生成词云,即pyecharts库下的wordcloud子类。

不过,与Tableau生成词云的方式类似,pyecharts也要求输入的数据是经过筛选和统计好的数据,例如经过jieba分词+counter统计后得到的结果,即可非常方便的应用pyecharts制作词云。而且,pyecharts的所有图表均可交互,词云图也不例外,这也算是它的一项优势。

示例源码:

import jieba
from collections import Counter
from pyecharts.charts import WordCloudword_list = jieba.lcut(words)   # 切分词
word_list = [word.strip() for word in word_list if len(word.strip())>1]
wordCount = Counter(word_list)
wc = WordCloud()
wc.add("", wordCount.items(), word_size_range=[20, 100])
wc.render(r'kobe.html')
"""
def add(self,series_name: str,data_pair: types.Sequence,*,shape: str = "circle",word_gap: types.Numeric = 20,word_size_range: types.Optional[types.Sequence] = None,rotate_step: types.Numeric = 45,tooltip_opts: types.Tooltip = None,itemstyle_opts: types.ItemStyle = None,
):"""

查阅其add方法,可以了解生成词云的一些设置参数,不过相比wordcloud库来说,pyecharts的wordcloud设置参数实在是太有限了。

提供统计后的数组,利用pyecharts生成的词云结果:

pyecharts生成的词云图片看上去有些过于"规矩",字体旋转角度单一(通过rotate_step参数设置),字号大小对比也不够明显。

04 结论

  • 词云作为数据可视化的一种常用手段,视觉冲击力较强,制作方法也比较灵活多样

  • 普通的词云制作需求依托在线工具即可有效满足,国内外均有相关工具

  • Tableau作为商业智能分析软件,在制作词云上表现较为,但极为快捷方便

  • Python编程实现词云可进行大量的个性化定制,包括分词、过滤、图片模板和文字设置,都有大量参数可供调节

  • 除wordcloud用于专门生成词云外,pyecharts的wordcloud子库也有着不错的效果,且支持交互

手把手教你几种生成词云的方式相关推荐

  1. 教你用Python生成词云

    程序员有三种美德:懒惰,急躁和傲慢 平时在网上经常看到这样的图片 我就想,这些东西能不能用python实现呢,果然python库无所不在,有一个库wordcloud就是干这个的 如果你没有可以使用pi ...

  2. html生成word附带图片_生成词云的几种方式对比

    在数据可视化方面,词云一直是一种视觉冲击力很强的方式.对输入的一段文字进行语义分割,得到不同频度的词汇,然后以正比于词频的字体大小无规则的集中显示高频词,简洁直观高效. 词云虽好,但也要易做才行.本文 ...

  3. python词云改颜色_一种用Python生成词云

    一种用Python生成词云 我们在阅读一篇很长的文章时,总先看看文章的关键词来获知文章的大概内容.今天我们就来制作一个词云程序,将文章中出现次数较多的词语提取出来,生成一张词云图. 词云图的生成原理: ...

  4. python生成词云代码无错窗口空框_10分钟教你用Python生成属于自己的词云图

    1 #导入需要模块 import jieba from PIL import Image import numpy as np import matplotlib.pyplot as plt from ...

  5. 在线词云加载慢,有水印?作为程序员,教你如何使用Java,Python和JS生成词云!

    声明:本文转载huaairen作者一文<制作词云库图片>,如有侵权,请联系删除. 前言 某天心血来潮,想搞搞词云这玩意,网上很多在线生成词云的网站,但是加载都比较慢,或者有水印,再或者是无 ...

  6. python制作中文词云_Python如何生成词云(详解)

    前言 今天教大家用wrodcloud模块来生成词云,我读取了一篇小说并生成了词云,先看一下效果图: 效果图一: 效果图二: 根据效果图分析的还是比较准确的,小说中的主人公就是"程理" ...

  7. python生成的词云没有图案_Python如何生成词云的方法

    这篇文章主要介绍了关于Python如何生成词云的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 前言 今天教大家用wrodcloud模块来生成词云,我读取了一篇小说并生成了词云,先 ...

  8. 【案例】 生成词云玩玩?

    案例介绍 今天我们来生成词云,所谓词云,就是以一定的频度将大小不用的词汇显示在图片模板上. 准备工作 wordcloud(生成词云核心) PIL numpy jieba(提供分词功能) 模板图片 需要 ...

  9. 爬取京东商品评价并生成词云

    上期为大家介绍了requests库的基本信息以及使用requests库爬取某东的商品页,收到了很多同学的反馈说期待猪哥的更新,猪哥感到非常开心,今天就带大家来玩一把刺激的! 一.需求背景 在实际开发过 ...

  10. Python如何生成词云(详解)

    前言 今天教大家用wrodcloud模块来生成词云,我读取了一篇小说并生成了词云,先看一下效果图: 效果图一: 效果图二: 根据效果图分析的还是比较准确的,小说中的主人公就是"程理" ...

最新文章

  1. SWT中调用Automation的方式
  2. confluence6.15.4部署及问题汇总
  3. Servlet: server applet与执行原理
  4. 十种经济的方法帮你建立企业品牌
  5. [css] 说说你对GPU的理解,举例说明哪些元素能触发GPU硬件加速?
  6. 2019,微软研究项目盘点
  7. android 融云定义主题,融云开发者文档
  8. auto和decltype的用法总结
  9. 图虫知识共享协议_缘之好物 篇二十:关怀父母的另类方案----新礼物:2019图虫影像历...
  10. PHP中的e标签和em标签一样吧,html em标签的作用
  11. Flutter实战1 --- 写一个天气查询的APP
  12. cfdpost怎么导出云图_FLUENT教程10CFDpost后处理.pdf
  13. python爬虫之爬取微信公众号文章中的图片
  14. pandas笔记(7)DataFrame数学运算
  15. Linux-tcpdump
  16. 组织机构树型数据库结构
  17. 文本工具来查看、分析、统计,比较
  18. UNCTF2022-公开赛|MISC(下)
  19. 杜亚楠: 用微组织技术撬动细胞培养大变革
  20. SMC 常规型压力传感器/开关(真空/正压)使用说明书 Z/ISE30A

热门文章

  1. 【IT人物】周杰(清华,耶鲁):Google技术总监周杰创业“死海”淘金
  2. 17zwd获得17网商品详情接口 API 返回值说明,API接口获取方案
  3. logstash(10)过滤器-dissect
  4. 【VUE项目实战】40、添加商品分类功能(一)
  5. 【读后感】《关键对话》
  6. Linux内核info leak漏洞
  7. 白帽子讲Web安全(一)浏览器安全
  8. 聚焦NFT+DeFi应用价值 Trister World共识研讨会于南京顺利召开
  9. 老男孩教育Linux50期远程控制连接
  10. android 五种存储方式,android数据五种存储