鱼C论坛

 找回密码
 立即注册
查看: 1885|回复: 0

[技术交流] Python:制作《三国演义-三英战吕布》的词云图

[复制链接]
发表于 2021-6-8 08:48:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 划句顾 于 2021-12-28 12:33 编辑

  1. '''*************************************************************************
  2.     @author:LaoGu
  3.     @time: 2021/6/8
  4.     @fuction:制作《三国演义-三英战吕布》的词云图
  5. ****************************************************************************'''
  6. import re
  7. import jieba
  8. import wordcloud
  9. import collections
  10. import numpy as np
  11. from PIL import Image
  12. import matplotlib.pyplot as plt

  13. #读取文本
  14. with open('三国演义-三英战吕布.txt','r') as fn:
  15.         words=fn.read()
  16.    
  17. #文本预处理
  18. pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"')#定义正则表达式匹配模式
  19. words = re.sub(pattern,'',words)#将符合模式的字符去除

  20. #文本分词
  21. segWords = jieba.cut(words,cut_all = False) #分词列表,精确模式分词

  22. #屏蔽词汇
  23. objWords = {} #目标词汇列表
  24. '''
  25. rmvWords = [u'的',u'得',u'地',u'如果']
  26. for word in segWords:  #循环读取每个分词
  27.     if word not in rmvWords: #如果不在屏蔽词库中
  28.         objWords.append(word) #将分词追加到列表
  29. '''
  30. for word in segWords:
  31.     if len(word) == 1:
  32.         continue
  33.     else:
  34.         objWords[word] = objWords.get(word,0) + 1
  35. items = list(objWords.items())
  36. items.sort(key = lambda x : x[1],reverse = True)


  37. #词频统计
  38. word_counts = collections.Counter(objWords) #对分词做词频统计
  39. word_counts_top20 = word_counts.most_common(20) #获取前20个最高频的词
  40. print(word_counts_top20)

  41. #词频展示
  42. mask = np.array(Image.open('小熊.jpg'))#词频背景图
  43. wc = wordcloud.WordCloud(
  44.     font_path = 'C:/windows/Fonts/simhei.ttf',
  45.     background_color = 'white',
  46.     mask = mask,
  47.     max_words = 30,
  48.     max_font_size = 100
  49.     )
  50. wc.generate_from_frequencies(word_counts) #从字典生成词云
  51. #image_colors = wordcloud.ImageColorGenerator(mask)#从背景图建立颜色方案
  52. #wc.recolor(color_func = image_colors) #将词云颜色设置为背景图方案
  53. plt.imshow(wc)#显示词云
  54. plt.axis("off") #关闭坐标轴
  55. plt.show()    #显示图像
复制代码


结果如下:
1623113002.jpg
Figure_1.png


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-22 22:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表