# 导入库
**from **wordcloud **import **WordCloud
**from **imageio **import **imread
**import **jieba
# from collections import Counter
# 读入txt文本数据
text = open(r'C:\Users\15423\Desktop\词云制作\threekingdoms.txt', "r", encoding='utf-8').read()
# 结巴中文分词,生成字符串,默认精确模式,如果不通过分词,无法直接生成正确的中文词云
cut_text = jieba.lcut(text)
#去掉不重要的词
removes =[',','。','"',':','曰','将军', '二人','却说','\n', '次日','左右', '主公', '不能', '今日', '不可','商议','于是','军士']
cut_text=[word **for **word **in **cut_text **if **word **not in **removes]
#去掉重复的词语,遍历字典挨个去掉
dupDict={'曹操' : ['孟德','丞相'],
'玄德' : ['刘备','皇叔','刘皇叔','玄德曰'],
'云长' : ['关羽','关云长','关公'],
'孔明' : ['诸葛亮','诸葛','孔明曰'],
'张飞' : ['翼徳'],
'赵云' : ['子龙','赵子龙'],
'周瑜' : ['公瑾','都督']}
**for **replaceWord,dupWords **in **dupDict.items():
**for **word **in **dupWords:
ct=cut_text.count(word)
idx=0
**while **ct>0:
i=cut_text.index(word,idx,-1)
cut_text[i]= replaceWord
idx=i+1
ct-=1
# 词频统计--字典
word_count = {}
**for **word **in **cut_text:
**if **len(word)>1:
word_count[word] = word_count.get(word, 0) + 1
print(sorted(word_count.items(), key = **lambda **kv:kv[1],reverse=True)[:5])
# 人名的词频统计--counter
# word_count = Counter([word for word in cut_text if len(word)>1])
# print(word_count.most_common(5))
# 必须给个符号分隔开分词结果来形成字符串,否则不能绘制词云
result = " ".join(cut_text)
# print(result)
# 4.读入词云背景图片,设置成mask参数
mask = imread(r'C:\Users\15423\Desktop\词云制作\中国地图.png')
# 5.生成词云图
wc = WordCloud(
# 设置词云背景图
*mask=mask, *# 设置字体,不指定就会出现乱码*
*font_path=**'C:/Users/15423/Desktop/词云制作/msyh.ttc'**, *# 设置背景色*
*background_color=**'white'**, *# 设置背景宽*
*width=500, *# 设置背景高*
*height=350, *# 最大字体*
*max_font_size=50, *# 最小字体*
*min_font_size=10, )
# 产生词云
wc.generate(result)
#wc.to_image()
# 保存图片
wc.to_file(r"C:/Users/15423/Desktop/词云制作/三国演义.png")
版权归原作者 梅子在林中 所有, 如有侵权,请联系我们删除。