用到jieba和python-docx wordcloud matplotlib库。
from docx import Document
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS
import numpy as np
from PIL import Image
import jieba
# 读取Word文档内容
docx_file = "your_document.docx" # 替换为你的Word文档路径
doc = Document(docx_file)
text = ""
for para in doc.paragraphs:
text += para.text
# 使用结巴分词进行中文分词
seg_list = jieba.cut(text, cut_all=False)
text_data = " ".join(seg_list)
# 选择自定义形状图片
shape_mask = np.array(Image.open("your_shape_image.png")) # 替换为你的自定义形状图片路径
# 创建WordCloud对象并生成词云图,指定中文字体路径和形状图片
font_path = "your_chinese_font.ttf" # 替换为中文字体文件路径
wordcloud = WordCloud(width=800, height=400, background_color="white", font_path=font_path,
mask=shape_mask, contour_width=1, contour_color='black').generate(text_data)
# 显示词云图
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
# 保存词云图为图片
wordcloud.to_file("wordcloud_custom_shape.png") # 保存为PNG图片,可以根据需要修改文件名和格式
结果。。。。出现乱码,应该是中文乱码问题。
检查发现第23行代码有问题
自行导入中文所在路径:
找想要的字体并复制路径。
结果运行正确
要生成有自定义形状的词云图,并确保不出现中文乱码,可以使用wordcloud库的WordCloud对象的mask参数指定一个形状图片,并使用font_path参数指定中文字体的文件路径。