Python wordcloud

举报
福州司马懿 发表于 2022/11/10 17:25:46 2022/11/10
【摘要】 简介大数据词云(wordcloud)分析常用于在冗长的文本数据中提取最高频、最关键的信息。比如在长篇的电影、小说、剧本中快速提取关键信息和主要角色,比如根据长篇描述快速对一个人物或事物进行画像和打标签等等WordCloud 官方文档:https://amueller.github.io/word_cloud/index.htmlWordCloud GitHub 地址:https://git...

简介

大数据词云(wordcloud)分析常用于在冗长的文本数据中提取最高频、最关键的信息。比如在长篇的电影、小说、剧本中快速提取关键信息和主要角色,比如根据长篇描述快速对一个人物或事物进行画像和打标签等等

WordCloud 官方文档:https://amueller.github.io/word_cloud/index.html
WordCloud GitHub 地址:https://github.com/amueller/word_cloud

下载扩展包

这是一个,非官方的Python扩展包Windows二进制文件的存档。

www.lfd.uci.edu 下载

在这个网站 https://www.lfd.uci.edu/~gohlke/pythonlibs/,我们可以搜到想要的第三方python包(例如本文中需要的wordcloud包)

图片.png

由于我们这里的版本是python3.9,又是windows系统,因此下载 wordcloud‑1.8.1‑cp39‑cp39‑win32.whl

图片.png

从 pypi 下载

或者去pypi官网下载 https://pypi.org/project/wordcloud/#files

图片.png

如何选择下载哪个包

文件的命名结构如下
<组件名>-<版本号>-cp<能用的python版本范围>-<系统类型>-<空表示InterlCPU;AMD表示锐龙系列CPU>

因此,对于以下两个包的选择(前提是你是window电脑)

  • wordcloud‑1.8.1‑cp39‑cp39‑win_amd64.whl(AMD型号的CPU,例如 Ryzen3、Ryzen5、Ryzen7)
  • wordcloud‑1.8.1‑cp39‑cp39‑win32.whl(Intel型号的CPU,例如I3、I5、I7)

安装刚下载的whl包

安装命令(whl目录,要根据你们下载的地址进行修改)

  • conda 命令:conda install --use-local D:\Downloads\wordcloud-1.8.1-cp39-cp39-win-amd64.whl
  • pip 命令:pip install D:\Downloads\wordcloud-1.8.1-cp39-cp39-amd64.whl

再强调一下,选取的安装包,与你CPU的厂商有关。如果用错会报(我这里是AMD Ryzen7的CPU,所以我选AMD版本的)

  • conda 命令:Solving environment: failed with initial frozen solve. Retrying with flexible solve
  • pip 命令:ERROR: wordcloud-1.8.1-cp39-cp39-win32.whl is not a supported wheel on this platform

图片.png

使用 conda list wordcloud 确认是否已安装成功

图片.png

打开 spyder 编辑器

在命令行输入 spyder

代码实战

文字云

import wordcloud
w=wordcloud.WordCloud()
txt='Welcome Python Dream It Possible'
w.generate(txt)
w.to_file('WC.png')

图片.png

文字图片云

下面代码来自 wordcloud 官网示例 https://amueller.github.io/word_cloud/auto_examples/masked.html

from os import path
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import os

from wordcloud import WordCloud, STOPWORDS

# get data directory (using getcwd() is needed to support running example in generated IPython notebook)
d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()

# Read the whole text.
text = open(path.join(d, 'alice_en.txt')).read()

# read the mask image
# taken from
# http://www.stencilry.org/stencils/movies/alice%20in%20wonderland/255fk.jpg
alice_mask = np.array(Image.open(path.join(d, "alice_mask.png")))

stopwords = set(STOPWORDS)
stopwords.add("said")

wc = WordCloud(font_path="C:\\Windows\\Fonts\\simfang.ttf", background_color="white", max_words=2000, min_font_size=5, mask=alice_mask,
               stopwords=stopwords, contour_width=3, contour_color='steelblue', scale=2)

# generate word cloud
wc.generate(text)

# store to file
wc.to_file(path.join(d, "alice.png"))

# show
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.figure()
plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
plt.show()

图片.png

遇到问题

NotImplementedError: Gray-scale images TODO

生成词云的时候遇到这个问题 NotImplementedError: Gray-scale images TODO

这是由于图片格式不合适,图层数量不匹配,最简单的办法就是更换图片

图片.png

中文乱码

图片.png

使用wordColud设计词云的时候可能会产生乱码问题,因为wordColud默认的字体不支持中文,所以我们只需要替换wordColud的默认字体即可正常显示中文。

因此,可以在构建wordcloud时,指定字体路径font_path

wc = WordCloud(font_path="C:\\Windows\\Fonts\\simfang.ttf",
	background_color="white",
   max_words=2000,
   min_font_size=5,
   mask=alice_mask,
   stopwords=stopwords,
   contour_width=3,
   contour_color='steelblue', scale=2,collocation_threshold=0)

图片.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。