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")
代码解析
导包:
import wordcloud
import jieba
import PIL
import numpy as np
import matplotlib.pyplot as plt
import jieba.analyse
变量定义:
image_background
: 背景图片MASK
: 背景图片的 NumPy 数组txt
: 文本文件内容w
: 词云对象
代码执行:
- 读取背景图片并转换为 NumPy 数组。
- 读取文本文件内容。
- 使用
jieba.analyse.extract_tags
函数提取文本的 top 30 关键词,并将其转换为空格分隔的字符串。 - 创建词云对象,并设置字体、颜色、大小、边距等参数。
- 使用
generate
方法生成词云,并将关键词列表作为参数传入。 - 使用
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
参数指定背景颜色,width
和height
参数指定词云大小,margin
参数指定词云边缘的空白区域,max_words
参数指定词云中显示的最大词语数量,mask
参数指定遮罩图片。 - w.generate(" ".join(ls)) 方法用于生成词云,并将关键词列表作为参数传入。
- w.to_file(“outfile.png”) 方法用于将词云导出到 PNG 图片。
总结:
以上代码使用 jieba
和 wordcloud
库对文本进行分词、关键词提取和词云生成。最终将词云导出到 PNG 图片。
改进建议:
- 可以使用其他分词库,例如
pkuseg
或HanLP
,进行分词。 - 可以使用其他词云库,例如
pytagcloud
或wordcloud2
,生成词云。 - 可以尝试不同参数设置,生成不同风格的词云。