|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 划句顾 于 2021-12-28 12:33 编辑
- '''*************************************************************************
- @author:LaoGu
- @time: 2021/6/8
- @fuction:制作《三国演义-三英战吕布》的词云图
- ****************************************************************************'''
- import re
- import jieba
- import wordcloud
- import collections
- import numpy as np
- from PIL import Image
- import matplotlib.pyplot as plt
- #读取文本
- with open('三国演义-三英战吕布.txt','r') as fn:
- words=fn.read()
-
- #文本预处理
- pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"')#定义正则表达式匹配模式
- words = re.sub(pattern,'',words)#将符合模式的字符去除
- #文本分词
- segWords = jieba.cut(words,cut_all = False) #分词列表,精确模式分词
- #屏蔽词汇
- objWords = {} #目标词汇列表
- '''
- rmvWords = [u'的',u'得',u'地',u'如果']
- for word in segWords: #循环读取每个分词
- if word not in rmvWords: #如果不在屏蔽词库中
- objWords.append(word) #将分词追加到列表
- '''
- for word in segWords:
- if len(word) == 1:
- continue
- else:
- objWords[word] = objWords.get(word,0) + 1
- items = list(objWords.items())
- items.sort(key = lambda x : x[1],reverse = True)
- #词频统计
- word_counts = collections.Counter(objWords) #对分词做词频统计
- word_counts_top20 = word_counts.most_common(20) #获取前20个最高频的词
- print(word_counts_top20)
- #词频展示
- mask = np.array(Image.open('小熊.jpg'))#词频背景图
- wc = wordcloud.WordCloud(
- font_path = 'C:/windows/Fonts/simhei.ttf',
- background_color = 'white',
- mask = mask,
- max_words = 30,
- max_font_size = 100
- )
- wc.generate_from_frequencies(word_counts) #从字典生成词云
- #image_colors = wordcloud.ImageColorGenerator(mask)#从背景图建立颜色方案
- #wc.recolor(color_func = image_colors) #将词云颜色设置为背景图方案
- plt.imshow(wc)#显示词云
- plt.axis("off") #关闭坐标轴
- plt.show() #显示图像
复制代码
结果如下:
|
|