-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwordcloud_.py
76 lines (70 loc) · 2.21 KB
/
wordcloud_.py
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import jieba
from os import path #用来获取文档的路径
#词云
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
#词云生成工具
from wordcloud import WordCloud,ImageColorGenerator
#需要对中文进行处理
import matplotlib.font_manager as fm
#背景图
bg=np.array(Image.open("badckground.jpg"))
#获取当前的项目文件加的路径
d=path.dirname(__file__)
#读取停用词表
stopwords_path='baidu_stopwords.txt'
#读取要分析的文本
text_path="song_comments"
#读取要分析的文本,读取格式
text=open(path.join(d,text_path),encoding="utf8").read()
#定义个函数式用于分词
def jiebaclearText(text):
#定义一个空的列表,将去除的停用词的分词保存
mywordList=[]
#进行分词
seg_list=jieba.cut(text,cut_all=False)
#将一个generator的内容用/连接
listStr='/'.join(seg_list)
#打开停用词表
f_stop=open(stopwords_path,encoding="utf8")
#读取
f_stop_text=f_stop.read()
#将停用词格式化,用\n分开,返回一个列表
f_stop_seg_list=f_stop_text.split("\n")
# print(f_stop_seg_list)
#对默认模式分词的进行遍历,去除停用词
for myword in listStr.split('/'):
#去除停用词
if not myword in f_stop_seg_list:
mywordList.append(myword)
# print(mywordList)
return ' '.join(mywordList)
text1=jiebaclearText(text)
# print(text1)
#生成
wc=WordCloud(
background_color="white",
max_words=150,
mask=bg, #设置图片的背景
max_font_size=60,
random_state=42,
font_path='C:/Windows/Fonts/simkai.ttf' #中文处理,用系统自带的字体
).generate(text1)
#为图片设置字体 这里选取win自带字体
my_font=fm.FontProperties(fname='C:/Windows/Fonts/simkai.ttf')
#产生背景图片,基于彩色图像的颜色生成器
image_colors=ImageColorGenerator(bg)
#开始画图
plt.imshow(wc,interpolation="bilinear")
#为云图去掉坐标轴
plt.axis("off")
#画云图,显示
#plt.figure()
plt.show()
#为背景图去掉坐标轴
plt.axis("off")
plt.imshow(bg,cmap=plt.cm.gray)
#plt.show()
#保存云图
wc.to_file("cloud.png")