环境准备与安装
在开始之前,我们需要确保安装了必要的Python库。这些库包括jieba用于中文分词,wordcloud用于生成词云,以及matplotlib和PIL用于图像处理和展示。
pip install jieba wordcloud matplotlib pillow
读取文件并分词整理
首先,我们需要读取文本文件并进行分词。这里我们使用jieba库来进行中文分词。
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
# 1. 读取文件并分词整理
def read_and_cut(file_path):
# 读取txt文件
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read()
# 使用jieba进行分词
words = jieba.cut(text)
words = " ".join(words)
return words
生成词云
接下来,我们根据分词结果生成词云。可以选择是否使用自定义形状的图片作为词云的形状。
# 2. 生成词云
def generate_wordcloud(words, font_path='path_to_your_chinese_font.ttf', stopwords=None, mask_image=None):
# 如果有形状图片,加载它
if mask_image:
mask = np.array(Image.open(mask_image))
wordcloud = WordCloud(font_path=font_path,
mask=mask, # 使用自定义形状
contour_color='black',
contour_width=1,
background_color='white',
stopwords=stopwords,
max_words=200,
width=800,
height=400).generate(words)
else:
# 如果没有形状图片,简单生成词云
wordcloud = WordCloud(font_path=font_path,
background_color='white',
stopwords=stopwords,
max_words=200,
width=800,height=400
).generate(words)
# 显示词云
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off') # 不显示坐标轴
plt.show()
可选:读取停用词文件
为了提高词云的质量,我们可以提供一个停用词文件,过滤掉一些常见的无意义词汇。
# 3. 可选:读取停用词文件
def load_stopwords(stopwords_file_path):
stopwords = set()
with open(stopwords_file_path, 'r', encoding='utf-8') as file:
for line in file:
stopwords.add(line.strip()) # 去除每行的换行符
return stopwords
主程序执行
最后,我们将所有步骤整合到主程序中,完成整个流程。
# 主程序执行
def main():
# 1. 读取文件并进行分词
file_path = "D:\\软件\\报告.txt"
words = read_and_cut(file_path)
# 2. 可选:加载停用词
stopwords = load_stopwords("D:\\软件\\stopwords.txt")
# 3. 可选:提供自定义形状
mask_image = "D:\\软件\\微信图片2_20241212205558.png"
# 4. 生成词云
generate_wordcloud(words,
font_path='C:\Windows\Fonts\方正粗黑宋简体.ttf',
stopwords=stopwords,
mask_image=mask_image)
if __name__ == "__main__":
main()
注:读者自行将主程序中的文件路径改为自己的路径即可,包括需要生成词云的文本路径,停用词文本路径,背景图片路径(这里的图片,尽量选用png图片,我使用的是背景全白的图片,一定要纯白,至于别的文章说使用背景透明的文件,我试了不行,不知道是不是我的透明文件有问题,后来我又改用背景全白的图片可以),以及字体文件路径,在设置里面找电脑自带的即可。
运行图片结果
总结
通过本文,我们学习了如何使用Python生成词云。从环境准备、分词、生成词云到最终的展示,每一步都详细讲解了实现方法。未来,我们可以进一步优化词云的样式和布局,甚至结合更多的自然语言处理技术,使词云更加智能和美观。希望这篇文章能对大家有所帮助!
结束语:
感谢您花时间阅读这篇文章。我仍在学习和成长,如果您有任何建议或反馈,欢迎随时与我分享。希望这篇文章对您有所帮助,也期待在未来的讨论中继续交流。谢谢!