关键词自动采集生成内容系统-无需任何打理(豆瓣搜索曼走科比《告别》即可生成词云之在线工具)

优采云 发布时间: 2021-11-03 01:03

  关键词自动采集生成内容系统-无需任何打理(豆瓣搜索曼走科比《告别》即可生成词云之在线工具)

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

  词云虽然不错,但制作起来应该很容易。本文探讨了 3 种生成词云的方法:

  00 数据源

  春节期间,NBA传奇巨星科比意外坠毁身亡,让无数球迷无限遗憾。为了表达敬意,我写了一个小爬虫,爬取了科比在豆瓣上的一组纪录片的评论信息,作为文本分析的数据源。(豆瓣搜索《行走的神户“再见”》)

  01 在线生成词云的工具

  搜索词云在线生成工具,你会得到很多结果,包括*敏*感*词*的网站平台。与搜索榜首的几款在线工具相比,使用上或多或少都有瑕疵。有的网页加载慢,有的注册后才可用,有的字体支持差,有的需要付费。

  当然,毕竟用起来方便快捷,完美的话最好是免费的。经过比较,我觉得这两个平台比较好用:

  

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

  

  支持大量个性化配置

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

  

  艺术字在线生成(部分中文还有乱码)

  

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

  02 生成词云的软件工具

  web在线工具和桌面软件在生成词云的任务上没有本质区别,甚至很多平台都同时支持在线生成和桌面客户端软件。

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

  使用 Tableau 生成可视化图表一直比较简单,制作词云也不例外。将数据源加载到 Tableau 界面后,只需单击“设置”。

  

  “热词”都是词源,“数”是频率

  其实用Tableau制作词云的输入数据不是文本,而是处理后的两列结果数据。从这个角度来说,Tableau 生成词云的方式甚至有点低级。严格来说,只能称得上是文字经过过滤和统计后的可视化展示。

  但是,很容易想到它非常方便的应用场景,比如提供几个产品名称及其销售额的数据,并且可以通过词云中的产品名称大小来直观地展示它们各自的收入比例。

  用Tableau制作词云的优缺点:

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

  

  Tableau生成的词云并不突出

  03 生成词云的编程工具

  很多编程工具都可以生成词云,Python也不例外。

  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的官方文档,可以发现它内置的参数设置是非常可控的,比如下面几个有用的功能:

  给wordcloud 3种不同的生成词云结果的方法:

  

  直接从文本生成词云

  

  分词后使用jieba生成词云

  

  设置词云模板蒙版后的效果

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

  不过,与Tableau生成词云的方式类似,pyecharts也需要对输入数据进行过滤和统计好的数据。比如jieba分词+计数器统计后得到的结果,可以很方便的用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 结论

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线