import collections
import os
import jieba # 词语切割
import matplotlib.pyplot as plt # 数据可视化
import numpy as np # 科学计算
import wordcloud # 分词
from PIL import Image # 处理图片
from wordcloud import STOPWORDS, ImageColorGenerator, WordCloud # 词云,颜色生成器,停止词
def read_stopword(fpath):
# 读取中文停用词表
with open(fpath, 'r', encoding='utf-8') as file:
stopword = file.readlines()
return [word.replace('\n', '') for word in stopword]
def ciyun():
with open('C:\\Users\\算法.txt', 'r', encoding='utf-8') as f: # 打开新的文本转码为gbk
textfile = f.read() # 读取文本内容
# 加载多个停用词表
path = 'F:\\pythonProject2\\stopwords-master'
# 两个停用词表是网上下载的
name_list = ['中文停用词表.txt', '哈工大停用词表.txt']
stop_word = []
for fname in name_list:
stop_word += read_stopword(os.path.join(path, fname))
# print(stop_word)
stop_word += 'U'
stop_word += 'E'
stop_word += 'D'
stop_word += 'S'
stop_word = set(stop_word)
jieba.load_userdict('F:\\pythonProject2\\stopwords-master\\中文停用词表.txt')
jieba.load_userdict('F:\\pythonProject2\\stopwords-master\\哈工大停用词表.txt')
wordlist = jieba.lcut(textfile) # 切割词语
space_list = ' '.join(wordlist) # 空格链接词语
remove_words = [u'\n', u',', u' ', u'是', u'随着', u'对于', u'对', u'等', u'能', u'都', u'。',
u' ', u'、', u'中', u'在', u'.', u'\u3000', u'如果', u'我们',
u'需要', 'D', u'E', u'D', 'U', u'S'] #
object_list = []
for word in wordlist: # 循环读出每个分词
if word not in stop_word: # 如果不在去除词库中
if word not in remove_words:
object_list.append(word) # 分词追加到列表
# print(word)
# 词频统计
word_counts = collections.Counter(object_list) # 对分词做词频统计
word_counts_top10 = word_counts.most_common(10) # 获取前10最高频的词
print(word_counts_top10) # 输出检查
backgroud = np.array(Image.open('F:\\pythonProject2\\stopwords-master\\color_mask.png'))
wc = WordCloud(width=1400, height=2200,
background_color='white',
mode='RGB',
mask=backgroud, # 添加蒙版,生成指定形状的词云,并且词云图的颜色可从蒙版里提取
max_words=500,
stopwords=stop_word, # 内置的屏蔽词,并添加自己设置的词语
font_path='F:\\pythonProject2\\stopwords-master\\stzhongs.ttf',
max_font_size=150,
relative_scaling=0.6, # 设置字体大小与词频的关联程度为0.4
random_state=50,
scale=2
).generate(space_list)
image_color = ImageColorGenerator(backgroud) # 设置生成词云的颜色,如去掉这两行则字体为默认颜色
wc.recolor(color_func=image_color)
plt.imshow(wc) # 显示词云
plt.axis('off') # 关闭x,y轴
plt.show() # 显示
wc.to_file('test2_ciyun.jpg') # 保存词云图
def main():
ciyun()
if __name__ == '__main__':
main()
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/35efe8411a688f519a0cf6913fd22291.png)