您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页基于Python对Word文档中的高频词进行划线标注

基于Python对Word文档中的高频词进行划线标注

来源:叨叨游戏网

在文本分析中,词频统计是一种常用的方法,可以帮助我们了解文本中的重要词汇。本文将介绍如何使用Python读取Word文档,统计词频,并对前15个高频词进行标注(红色下划线、黄色背景)。我们将使用python-docx库来处理Word文档,jieba库来进行中文分词,以及一些XML操作来设置样式。

环境准备

首先,确保你已经安装了以下Python库:

python-docx:用于处理Word文档。

jieba:用于中文分词。

matplotlib(可选):用于可视化词频分布。

你可以使用以下命令安装这些库:

pip install python-docx jieba

2. 分词并统计词频

使用jieba库对文本进行分词,并统计每个词的频率。我们将只考虑长度大于等于2的词。

3. 抽取排名前15的词频

根据词频统计结果,抽取出现次数最多的前15个词。

4. 标注高频词

遍历文档中的每一个段落,找到这些高频词,并对其进行标注(红色下划线、黄色背景)。

5. 保存修改后的文档

将修改后的文档保存到一个新的文件中。

代码实现

下面是完整的代码示例:

import docx
import jieba
from collections import Counter
from docx.oxml.ns import qn  # 用于设置中文字体
from docx.oxml import OxmlElement


# 读取Word文档
def read_docx(file_path):
    doc = docx.Document(file_path)
    full_text = []
    for para in doc.paragraphs:
        full_text.append(para.text)
    return '\n'.join(full_text), doc


# 分词并统计词频
def count_word_frequency(text, min_length=2):
    words = jieba.lcut(text)
    filtered_words = [word for word in words if len(word) >= min_length]
    return Counter(filtered_words)


# 设置背景颜色
def set_background_color(run, color):
    highlight = run._r.get_or_add_rPr().get_or_add_highlight()
    highlight.set(qn('w:val'), color)


# 标注高频词
def highlight_frequent_words(doc, counter, top_n=15):
    # 获取最频繁的top_n个词
    top_words = {word: None for word, _ in counter.most_common(top_n)}

    # 遍历文档中的每一个段落
    for para in doc.paragraphs:
        text = para.text
        start = 0
        while start < len(text):
            for word in top_words:
                index = text.find(word, start)
                if index != -1:
                    # 找到匹配项后创建新的运行
                    run = para.add_run(text[start:index])
                    run = para.add_run(text[index:index + len(word)])
                    run.font.underline = True  # 设置下划线
                    run.font.color.rgb = docx.shared.RGBColor(0xFF, 0x00, 0x00)  # 红色

                    # 确保rFonts元素存在
                    r_fonts = run._r.get_or_add_rPr().get_or_add_rFonts()
                    r_fonts.set(qn('w:eastAsia'), '宋体')  # 设置字体

                    # 设置黄色背景
                    set_background_color(run, 'yellow')

                    start = index + len(word)
                    break
            else:
                # 如果没有找到任何单词,则结束循环
                break
        # 添加剩余部分
        if start < len(text):
            para.add_run(text[start:])


# 主程序
if __name__ == "__main__":
    file_path = r"D:\资料\旅游类短视频的传播特点,表达形式及其应用价值.docx"
    text, doc = read_docx(file_path)
    word_freq = count_word_frequency(text)
    highlight_frequent_words(doc, word_freq)

    # 保存修改后的文档
    output_file_path = r"D:\资料\标注后的旅游类短视频的传播特点,表达形式及其应用价值.docx"
    doc.save(output_file_path)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务