话不多说,直接上代码:
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
data=[]#存储原始数据
stopword={}#停用词
words={}#存储词汇:词频对
with open("雪中悍刀行.txt", 'r', encoding='utf-8') as file1:
data=file1.readlines()
with open("cn_stopwords.txt", 'r', encoding='utf-8') as file2:
stopword = {line.strip() for line in file2}
#对文章分词
data=''.join(data)
data=data.replace(r'\n','')
data=jieba.cut(data,cut_all=False)#可选择分词模式
#统计词频
for item in data:
if len(item)>2:
if not words.__contains__(item):
words[item]=1
else:
words[item]+=1
#导入绘制词云的图片,也可不添加使用默认值,之后初始化词云就不必设置mask属性
img=Image.open(r"heart.jpg")
img=np.array(img)
#初始化词云
my_wordcolud=WordCloud(
background_color='white',#背景颜色
max_words=40,#关键词个数
font_path=r"D:\pyproject\bigdata\data\SourceHanSansSC-VF.ttf",#字体格式,绘制中文词云需要用到
mask=img,#图片模板
width=1000,
height=1000
).generate_from_frequencies(words)
plt.figure(figsize=(18,16))
plt.imshow(my_wordcolud)
plt.axis('off')
plt.show()#展示词云
my_wordcolud.to_file(r'词云.jpg')#保存词云
结果展示:
这里只是分词后简单统计词频,所以结果仅供参考,如果需要代码中停用词表、图片、字体的,评论留下邮箱即可。
以上。