热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python生成词云的方法有哪些

本文主要介绍关于在线生成乱码的知识点,对【在线生成乱码_手把手教你几种生成词云的方式】和【Python生成词云的方法有哪些】有兴趣的朋友可以看下由【weixin_39530833】投稿的技术文章,希望

本文主要介绍关于在线生成乱码的知识点,对【在线生成乱码_手把手教你几种生成词云的方式】和【Python生成词云的方法有哪些】有兴趣的朋友可以看下由【weixin_39530833】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的【】相关技术问题。

Python生成词云的方法有哪些

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

词云虽好,但也要易做才行。本文探索了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,?black',
????max_font_size=None,?font_step=1,?mode="RGB",
????relative_scaling='auto',?regexp=None,?collocatiOns=True,
????colormap=None,?normalize_plurals=True,?contour_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?WordCloud

word_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子库也有着不错的效果,且支持交互

本文《在线生成乱码_手把手教你几种生成词云的方式》版权归weixin_39530833所有,引用在线生成乱码_手把手教你几种生成词云的方式需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
为我分心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有