"""
生成中文词云步骤
1、读取文件内容
2、借助jieba分词库对中文进行分词,让后将结果合并,以空格隔开
3、打开图片文件,得到对应数组(可以设置图片的形状;图片中的白色部分不显示)
4、创建WordCloud对象,设置基本属性 (创建词云对象,将文本生成词云generate,再用画出词云图,并显示)
5、生成词云图,并保存或显示图片
中文中需要设置停用词的话可以有三种方法:(过滤不需要的)
1、在分词前,将中文文本的停用词先过滤掉。
2、分词的时候,过滤掉停用词。
3、在wordcloud中设置stopwords。
"""
import jieba # 先安装pip install jieba
import wordcloud as wc # 先安装pip install wordcloud
import matplotlib.pyplot as plt # 用于显示图片
from PIL import Image
import numpy as np # 先安装pip install numpy
# 词云图的形状mask
mask = np.array(Image.open('fivestar.png')) # 读取图片 词云图样
# # 设置停用词(直接再代码设置)
# stopwords = ['的', '制度', '完善', '发展', '和', '□']
# wc.STOPWORDS.update(stopwords)
# 设置停用词(文件设置停用词; \ufeff 需要把编码模式改成utf-8-sig)
stopwords = set()
content = [line.strip() for line in open('hit_stopwords.txt', 'r', encoding='utf-8-sig').readlines()]
print(content)
stopwords.update(content)
# 创建词云对象,设定基本信息;
words = wc.WordCloud(font_path='AliHYAiHei-Beta_0.ttf', mask=mask, stopwords=stopwords)
# 读取文件内容
with open('text.txt', mode='r', encoding='utf-8') as f:
txt = f.read()
txt = ' '.join(jieba.lcut(txt)) # 用空格连接分好的词
# print(content)
words.generate(txt)
# word_cloud.to_file('词云图.png') # 保存词云图
# 显示词云图
plt.imshow(words) # 显示图片
plt.axis('off') # 不显示坐标轴
plt.show() # 显示图
"""
在读取文件中出现\ufeff,解决 \ufeff的问题
只需改一下编码就行,把 UTF-8 编码 改成 UTF-8-sig
https://www.cnblogs.com/yunlongaimeng/p/12530255.html
"""
停用词文件(一行一个停用词):