import re
import jieba
import collections
import numpy as np
import wordcloud # 词云展示库
from PIL import Image # 图像处理库
import matplotlib.pyplot as plt # 图像展示库
def remove():
with open('remove_words.txt','r',encoding='utf-8') as f:
txt=f.read()
words = re.findall(r'[^\s]+',txt)
list_=[]
for i in words:
if i in list_:
continue
else:
list_.append(i)
return list_
def get_words(path):
f=open(path,encoding='utf-8')
txt=f.read()
f.close()
words = jieba.lcut(txt)
remove_word=remove()
reword = []
for word in words:
if len(word) == 1:
continue
elif word in remove_word:
continue
else:
reword.append(word)
word_counts=collections.Counter(reword)
return word_counts
#统计词频
def wordcount(word_counts):
top=word_counts.most_common(20)
print(top)
def wordc(impath,words):
mask=np.array(Image.open(impath))
wc = wordcloud.WordCloud(
font_path='C:/Windows/Fonts/simhei.ttf', # 设置字体格式
mask=mask, # 设置背景图
max_words=600, # 最多显示词数
max_font_size=130 # 字体最大值
)
wc.generate_from_frequencies(words) # 从字典生成词云
image_colors = wordcloud.ImageColorGenerator(mask) # 从背景图建立颜色方案
wc.recolor(color_func=image_colors) # 将词云颜色设置为背景图方案
plt.imshow(wc) # 显示词云
plt.axis('off') # 关闭坐标轴
plt.show() # 显示图像
wc.to_file('ff.png')
if __name__ == "__main__":
path=r'E:\vscode\code\ff.txt'
impath=r'E:\vscode\code\topdodo_2.jpg'
wordc(impath,get_words(path))