You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现从文本文件提取关键词前后短语并统计出现频次

关键词前后短语提取统计解决方案

可行性说明

  • 该需求完全可以通过Python实现,常规英文场景无需引入额外NLP相关库,仅使用Python内置的re、collections、os模块即可完成。
  • 仅当需要处理中文分词、词性过滤、复杂语义匹配等场景时,才需要引入jieba、spaCy等NLP工具库。

实现逻辑

  1. 批量读取所有目标文本文件的内容
  2. 对文本做分词处理,过滤标点符号等无关字符
  3. 遍历单词列表匹配目标关键词,校验关键词前后是否有足够数量的可提取词,满足条件则拼接成目标短语
  4. 统计所有短语的出现频次
  5. 按频次从高到低排序输出结果

可直接运行的代码示例

import re
import os
from collections import Counter

def count_keyword_phrases(folder_path: str, keyword: str, window_size: int = 1) -> list[tuple[str, int]]:
    """
    统计指定文件夹下所有文本文件中,关键词前后指定数量词组成的短语出现频次
    :param folder_path: 存储文本文件的文件夹路径
    :param keyword: 目标检索关键词
    :param window_size: 关键词前后各取的单词数量,默认为1
    :return: 按频次降序排序的短语、频次元组列表
    """
    phrase_counter = Counter()
    # 遍历文件夹下所有txt文件,可根据实际文件后缀调整过滤规则
    for file_name in os.listdir(folder_path):
        if not file_name.endswith('.txt'):
            continue
        file_full_path = os.path.join(folder_path, file_name)
        with open(file_full_path, 'r', encoding='utf-8') as f:
            text = f.read()
        # 提取所有单词,自动过滤标点,不需要统一大小写可删除.lower()
        words = re.findall(r'\b\w+\b', text)
        # 匹配关键词提取短语
        for idx, word in enumerate(words):
            if word.lower() == keyword.lower():
                # 跳过前后单词数量不足的情况
                if idx - window_size < 0 or idx + window_size >= len(words):
                    continue
                phrase = ' '.join(words[idx-window_size : idx + window_size + 1])
                phrase_counter[phrase] += 1
    # 按频次降序排序
    return sorted(phrase_counter.items(), key=lambda x: x[1], reverse=True)

if __name__ == '__main__':
    # 替换为你的文本文件所在文件夹路径
    result = count_keyword_phrases(folder_path='./your_text_folder', keyword='park', window_size=1)
    for phrase, count in result:
        print(f"{phrase}: {count}")

扩展调整说明

  • 若需处理中文文本,将分词逻辑替换为jieba分词即可,其余逻辑无需改动
  • 若需要保留文本中的标点符号,调整re.findall的匹配规则即可
  • 大文件场景下可改为逐行读取处理,避免内存占用过高

内容的提问来源于stack exchange,提问作者Chipmunk_da

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:36:03