python——读取docx文档wordcloud生成词云并进行词频统计

本文介绍如何使用Python从Word文档中提取文本,并利用jieba分词、WordCloud等库生成词云图,同时展示了如何设置词云背景及保存生成的图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境准备

# 不是docx,是python-docx!!!!!!!
pip install python-docx
pip install wordcloud
pip install jieba

导入库

#导入所需库
from docx import Document

#打开word文档
document = Document("第六组访谈简报汇总.docx")

读取docx并进行分词

关键词:

ask_keyWord_list = ["访", "点", "发现"]
del_keyWord_list = ["会", '情况', '一个', '时候', '对', "的", '好', '不', '还', '就', '可以', '两个', '大', '人', '带', "所", "是", "有", "啥", "来", "陈","点", ':',",", '。', ".", ";", ' ', "、", "他", "自己", '因为', '在', '和', '用', '也', '都', '了', '比较', '去', "觉得", "很"]  
import jieba
#获取所有段落
all_paragraphs = document.paragraphs
txt = ""
text_all_list = []
for paragraph in all_paragraphs:
    DEL_LINE = False
    # 必须给个符号分隔开分词结果来形成字符串,否则绘制词云都以符号为分割,不具备特征性。
    cut_text = jieba.cut(paragraph.text)
    result = " ".join(cut_text)
    # 删除提问
    for keyWord in ask_keyWord_list: 
        if keyWord in result:
            DEL_LINE = True
            break
    # 如果是提问,跳过该段
    if DEL_LINE or result == "":
        continue
    # 删除不必要词语
    res_list = result.split( )
    res_list_copy = res_list
    for delWord in del_keyWord_list:
        for i, res in enumerate(res_list):
            if delWord in res:
                res_list_copy.pop(res_list.index(res))
    # 合成列表
    text_all_list += res_list_copy
    text_result = " ".join(res_list_copy)
    # print("result:", result)
    # print("res_list:", res_list)
    # print("text_result:", text_result)
    txt += text_result
    # input()
# txt

在这里插入图片描述

词频

# 词频统计
import collections # 词频统计库
word_counts = collections.Counter(text_all_list) # 对分词做词频统计
word_counts_top20 = word_counts.most_common(20) # 获取前10最高频的词
print (word_counts_top20) # 输出检查

在这里插入图片描述

词云

设置背景图片(可选)

from PIL import Image
mask_pic = Image.open("科创学院.png")
mask_pic_array = np.array(mask_pic)#将词云图片转换为数组

生成词云

from wordcloud import WordCloud
wc = WordCloud(
        # 设置字体旋转度,0-1,1为垂直
        prefer_horizontal=1, 
        # 设置词云的中文字体所在路径,不指定就会出现乱码
        font_path = "义启-破苍穹.TTF", 
        # 设置背景色
        background_color='white',
        # 设置背景宽
        width=1920,
        # 设置背景高
        height=1080,
        # 最大字体
        max_font_size=300,
        # 最小字体
        min_font_size=10,
        # 词频与放大程度的相关性
        relative_scaling = 1,
        mode='RGBA',
        # colormap='Purples',
        # mask = mask_pic_array
        )
wc.generate(txt)

保存词云并显示

wc.to_file(r"wordcloud.png") # 按照设置的像素宽高度保存绘制好的词云图,比下面程序显示更清晰
# 4.显示图片
# 指定所绘图名称
plt.figure("jay")
# 以图片的形式显示词云
plt.imshow(wc)
# 关闭图像坐标系
plt.axis("off")
plt.show()

在这里插入图片描述

参考文档:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值