Python wordcloud
简介
大数据词云(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包)
由于我们这里的版本是python3.9,又是windows系统,因此下载 wordcloud‑1.8.1‑cp39‑cp39‑win32.whl
从 pypi 下载
或者去pypi官网下载 https://pypi.org/project/wordcloud/#files
如何选择下载哪个包
文件的命名结构如下
<组件名>-<版本号>-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
使用 conda list wordcloud
确认是否已安装成功
打开 spyder 编辑器
在命令行输入 spyder
代码实战
文字云
import wordcloud
w=wordcloud.WordCloud()
txt='Welcome Python Dream It Possible'
w.generate(txt)
w.to_file('WC.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()
遇到问题
NotImplementedError: Gray-scale images TODO
生成词云的时候遇到这个问题 NotImplementedError: Gray-scale images TODO
这是由于图片格式不合适,图层数量不匹配,最简单的办法就是更换图片
中文乱码
使用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)
- 点赞
- 收藏
- 关注作者
评论(0)