from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
from jieba import *
def Replace(text,old,new): #替换列表的字符串
for char in old:
text = text.replace(char,new)
return text
def getText(filename): #读取文件内容(utf-8 编码格式)
#特殊符号和部分无意义的词
sign = '''!~·@¥……*“”‘’\n(){}【】;:"'「,」。-、?'''
with open('{}.txt'.format(filename), "r") as f: # 设置文件对象
txt = f.read()
return Replace(txt,sign," ")
def creat_word_cloud(filename): #将filename 文件的词语按出现次数输出为词云图
text = getText(filename) #读取文件
wordlist = lcut(text) #jieba库精确模式分词
wl = ' '.join(wordlist) #生成新的字符串
#设置词云图
font = r'C:\Windows\Fonts\simfang.ttf' #设置字体路径
wc = WordCloud(
background_color = 'black', #背景颜色
max_words = 2000, #设置最大显示的词云数
font_path = font, #设置字体形式(在本机系统中)
height = 1200, #图片高度
width = 1600, #图片宽度
max_font_size = 100, #字体最大值
random_state = 250, #配色方案的种类
)
myword = wc.generate(wl) #生成词云
#展示词云图
plt.imshow(myword)
plt.axis('off')
plt.show()
#以原本的filename命名保存词云图
wc.to_file('{}.png'.format(filename))
if __name__ == '__main__':
creat_word_cloud('data') #输入文件名生成词云图