python课程记录-6

这一课讲第三方库的安装和使用,然后用wordcloudjieba生成词云图和中文分词。没有课堂练习,只有一个在上次作业基础上的作业。

我是直接pip安装的,在安装wordcloud时,pip install wordcloud很快就装好了,但是jieba反复出错,最后指定清华镜像,pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba,这样就飞快地安装好了。

课后作业

(4) 利用wordcloud结合jieba分别对李白(杜甫)诗歌内容中的字和词语进行可视化。

思路

上节课的作业完成后已经得到了处理好的诗歌字符串和字频统计Counter,那么接下来就可以用这两个变量来得到对应的词云图。

fit_words()函数根据已经得到的计数器poems_counter生成的字典来制作字频的词云图片,用generate()函数对用jieba进行分词之后的poems_text生成词频的词云图片。在保存图片后可以用PIL中的Image.open()show()来显示图片。对应的函数代码如下:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 导入库
import jieba
import wordcloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

def cloud_character(poems_counter, name):
dict_character = dict(poems_counter)
# 生成图像对应的遮罩,这样词云图就是按图像里非白色区域来填充的
mask = np.array(Image.open(name + '.jpg'))
# 根据图像生成颜色表,这样词云图的颜色就和图像一致了
color = wordcloud.ImageColorGenerator(mask)
# 生成词云图变量,背景白色,random_state的值影响字在图中的分布,color_func设定词云颜色,mask设定图像遮罩,font_path指定字体,不指定的话中文没法显示
wc = wordcloud.WordCloud(background_color="white", random_state=42, color_func=color, mask=mask, font_path='C:\Windows\Fonts\simsun.ttc')
# 根据字典生成词云图的内容
wc.fit_words(dict_character)
# 保存词云图
wc.to_file(name + "cloud_character.png")
return
def cloud_word(poems_text, name):
text = ' '.join(jieba.cut(poems_text))
mask = np.array(Image.open(name + '.jpg'))
color = wordcloud.ImageColorGenerator(mask)
wc = wordcloud.WordCloud(background_color="white", random_state=42, color_func=color, mask=mask, font_path='C:\Windows\Fonts\simsun.ttc')
# 根据文本字符串生成词云图的内容
wc.generate(text)
wc.to_file(name + "cloud_word.png")
return
def show_pic(name):
# 打开图像
img1 = Image.open(name + "cloud_character.png")
img2 = Image.open(name + "cloud_word.png")
# 显示图像
img1.show()
img2.show()
return

# 主程序部分
cloud_character(counter_libai, 'libai')
cloud_character(counter_dufu, 'dufu')
cloud_word(text_libai, 'libai')
cloud_word(text_dufu, 'dufu')
show_pic("libai")
show_pic("dufu")

(最后生成的词云图是真的怪怪的……)

  • Copyrights © 2020-2024 Kun Li

请我喝杯咖啡吧~

支付宝
微信