三国演义 制作词云 2------python
# 导入库 from wordcloud import WordCloud from imageio import imread import jieba # from collections import Counter # 读入txt文本数据 text = open(rC:Users15423Desktop词云制作 hreekingdoms.txt, "r", encoding=utf-8).read() # 结巴中文分词,生成字符串,默认精确模式,如果不通过分词,无法直接生成正确的中文词云 cut_text = jieba.lcut(text) #去掉不重要的词 removes =[,,。,",:,曰,将军, 二人,却说, , 次日,左右, 主公, 不能, 今日, 不可,商议,于是,军士] 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(rC:Users15423Desktop词云制作中国地图.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")