wordcloud是优秀的词云展示第三方库,以词语为基本单位,通过图形可视化的方式,更加直观和艺术的展示文本。而jieba库是十分优秀的分词三方库,将文本内容进行分词
本文内容:

1.jieba库
2.wordcloud库
3.Windows中文字体文件名称

1.jieba库

pip安装wordcloud,jieba的过程中可能会提示pip工具版本低,需先更新pip包管理工具python -m pip install --upgrade pip

jieba库常用函数:

  • jieba.cut(strings,[cut_all]):strings需要分词的字符串;cut_all 参数用来控制是否采用全模式(cut_all=True表示全模式,为False表示精准模式)
  • jieba.cut_for_search(strings)
  • jieba.lcut()或者jieba.lcut_for_search()直接返回 list

ps:
jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode)
jieba.lcut 以及 jieba.lcut_for_search 直接返回 list

jieba库进行分词后,我们都需要将返回的数组或其它生成器generator,以空格重新拼接成一个新的字符串,将拼接后的新字符串传入wordcloud库制作词云

举例说明:

1
2
3
4
5
6
def cut_word():
comment_txt = "壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下。清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章。"
split_txt = jieba.cut(comment_txt, cut_all=False)
print(split_txt) # <generator object Tokenizer.cut at 0x0000028D12A477C8>
wl = " ".join(split_txt) # 拼接成一个字符串
return wl

2.wordcloud库

词云库的基本设置:

设置参数 描述
width 指定词云对象生成图片的宽度,默认400像素; WordCloud(width=600)
height 指定词云对象生成图片的高度,默认200像素; WordCloud(height=600)
min_font_size 指定词云中的最小字号,默认4号; WordCloud(min_font_size=10)
max_font_size 指定词云中的最大字号,根据高度自动调节; WordCloud(max_font_size=20)
font_step 指定词云中的字体字号的步进间隔,默认为1; WordCloud(font_step=2)
font_path 指定文件的路径,默认None; WordCloud(font_path=“msyh.ttc”)
max_words 指定词云现实的最大单词数量,默认200; WordCloud(max_words=20)
stop_words 指定词云的排除词列表,即不显示的单词列表; WordCloud(stop_words={“Python”})
mask 遮罩,指定词云形状,默认为长方形;WordCloud(mask=mk)
background_color 指定词云图片的背景颜色,默认为黑色; WordCloud(background_color=“white”)

词云库的基本方法:

  • w.generate(string) 向WordCloud对象w中加载字符串,词云能够处理的数据格式为字符串形式;w.generate(“Python and WordCloud”)
  • w.to_file(filename()) 将词云输出为图像文件,.png或.jpg格式;w.tp_file(“outfile,png”)

举例说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from wordcloud import WordCloud
import numpy as np
from matplotlib import pyplot as plt
from PIL import Image


def create_word_cloud():
"""
生成词云
:return:
"""
# 设置词云形状
shape = np.array(Image.open(r"C:\Users\CHD\Desktop\2018.png"))
# 设置词云的基本配置
wc = WordCloud(background_color="white", max_words=1000, width=600,
height=600, mask= shape,
scale=4, max_font_size=40, random_state=42,
font_path=r"C:\Windows\Fonts\simfang.ttf")
# 生成词云
wc.generate(cut_word())
# 生成图像窗口
plt.figure()
# 显示图像的格式
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
# 展示图像
plt.show()
# 保存词云图片
wc.to_file("old_word_cloud.png")

小结:

  1. 文本中含有中文时,必须要字体文件路径font_path,不然无法显示,会出现方框,不出现汉字
  2. 设置词云形状时,有些图片会不成功,需要使用色差对比清晰的图片
  3. mask为遮罩,限定词云的形状,选择图片作为遮罩,图片中白色的部分不显示词,非白色部分显示词
  4. 图片字迹不清楚的,可以在WordCloud里设置参数scale=4,数字越大图片越清楚,要求电脑配置也就越高
  5. 中文需要先分词并组成空格分隔字符串(eg: wl = “ “.join(split_txt) # 拼接成一个字符串)
  6. 导入指定词云图片时读取图片的二进制(np.array(Image.open(r”C:\Users\CHD\Desktop\2018.png”)))

3.Windows中文字体文件名称

【Windows 中文字体类型对应的文件名称】

参考文章


 评论

联系我 | Contact with me

Copyright © 2019-2020 谁知你知我,我知你知深。此恨经年深,比情度日久

博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议