import wordcloud    
import jieba
import PIL
import numpy as np
import matplotlib.pyplot as plt
import jieba.analyse  
image_background = PIL.Image.open('/home/back/pythonclass/11.jpg')
#遮罩
MASK = np.array(image_background)
txt=open("/home/back/pythonclass/2024_government_work_report.txt").read()
w = wordcloud.WordCloud(font_path='/home/back/pythonclass/aaa.ttf',background_color='white', width=4000, height=2000, margin=10, max_words=200, mask =MASK)
#jieba统计并提取权值top30的词语,返回list
ls=jieba.analyse.extract_tags(txt,topK=30)
#将list转换为元素间空格分隔的字符串,创建词云
w.generate(" ".join(ls))
#将词云导出到outfile.png
w.to_file("outfile.png")

生成词云...-LMLPHP

代码解析

导包:

import wordcloud
import jieba
import PIL
import numpy as np
import matplotlib.pyplot as plt
import jieba.analyse

变量定义:

  • image_background: 背景图片
  • MASK: 背景图片的 NumPy 数组
  • txt: 文本文件内容
  • w: 词云对象

代码执行:

  1. 读取背景图片并转换为 NumPy 数组。
  2. 读取文本文件内容。
  3. 使用 jieba.analyse.extract_tags 函数提取文本的 top 30 关键词,并将其转换为空格分隔的字符串。
  4. 创建词云对象,并设置字体、颜色、大小、边距等参数。
  5. 使用 generate 方法生成词云,并将关键词列表作为参数传入。
  6. 使用 to_file 方法将词云导出到 PNG 图片。

代码详解:

  • jieba.analyse.extract_tags(txt, topK=30) 函数用于提取文本的关键词,并根据词频进行排序。topK 参数指定提取的关键词数量。
  • wordcloud.WordCloud(font_path, background_color, width, height, margin, max_words, mask) 函数用于创建词云对象。font_path 参数指定字体文件路径,background_color 参数指定背景颜色,widthheight 参数指定词云大小,margin 参数指定词云边缘的空白区域,max_words 参数指定词云中显示的最大词语数量,mask 参数指定遮罩图片。
  • w.generate(" ".join(ls)) 方法用于生成词云,并将关键词列表作为参数传入。
  • w.to_file(“outfile.png”) 方法用于将词云导出到 PNG 图片。

总结:

以上代码使用 jiebawordcloud 库对文本进行分词、关键词提取和词云生成。最终将词云导出到 PNG 图片。

改进建议:

  • 可以使用其他分词库,例如 pkusegHanLP,进行分词。
  • 可以使用其他词云库,例如 pytagcloudwordcloud2,生成词云。
  • 可以尝试不同参数设置,生成不同风格的词云。
03-26 00:57