十种形成词云的方法?

1个月前 (11-03 00:54)阅读2回复0
wojiukan
wojiukan
  • 管理员
  • 注册排名1
  • 经验值1569145
  • 级别管理员
  • 主题313829
  • 回复0
楼主

十种形成词云的方法?

生成词云的在线工具

搜索词云在线生成工具将获得包括国内外网站平台在内的许多结果。与搜索前几种在线工具相比,但在使用中或多或少存在一些缺陷。有的网页加载缓慢,有的注册后才能使用,有的字体支持差,有的付费使用。

当然,使用方便、灵敏、有效,最好是免费的。经过比较,我觉得这两个平台相对容易使用:

十种形成词云的方法?

WordArt

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

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

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

微词云

优点:支持自动文本分析;有大量的外观模板和自定义模板;图片颜色多样,包括渐变色;支持大量字体;操作简单

缺点:注册后使用;免费下载图片有水印;热词数量有限

支持大量个性化配置

两个在线平台产生的词云结果:

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

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

02 生成词云的软件工具

在生成词云的任务中,网页在线工具和桌面软件没有实质性的区别,甚至很多平台都支持在线生成和桌面客户端软件。

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

使用Tableau生成可视化图表1相对简单,单词云也不例外。将数据源加载到Tableau界面后,可以简单地单击设置。

“热词”是所有的词源,“频率”是频率

事实上,使用Tableau制作单词云的输入数据不是文本,而是处理后的两列结果数据。从这个角度来看,Tableau生成单词云的方式甚至有点低级。严格地说,它只能称为筛选和统计文本的可视化显示。

然而,很容易想到它非常方便的使用场景。例如,如果提供了几个商品名称及其销售数据,可以通过单词云中商品名称的大小直接显示各自的收入比例。

Tableau制作词云的优缺点:

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

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

利用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:停用词列表

给出wordcloud三种不同的方法来生成词云结果:

直接利用文本生成词云

用jieba分词生成云

设置词云模板mask后效果

PyEcharts

Python的另一个可视化库Pyecharts除了wordcloud专门用于生成词云的第三方库外,还支持生成词云,即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生成的字云图片看起来有点太“规则”,字体旋转角度单1(通过rotate_step参数设置),字体大小对比不够明显。

04 结论

词云作为数据可视化的常用手段,视觉冲击力强,制造方法灵活多样

依靠在线工具,可以有效满足普通词云制造需求。国内外都有相关工具

Tableau作为一款商业智能分析软件,在制作词云方面表现出色,但极其灵敏方便

Python编程可以实现大量的个性化定制,包括单词分割、过滤、图片模板和文本设置,有大量的参数可以调整

pyecharts的wordcloud子库除了wordcloud用于生成词云外,也有很好的效果,支持交互

0
回帖

十种形成词云的方法? 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息