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

如何在Python中匹配指定后缀术语并追加至停用词列表?

解决方案:匹配指定后缀术语并扩展停用词列表

针对处理9GB大文本、匹配以指定后缀结尾的术语并添加到停用词列表的需求,以下是可行的实现方案:

核心思路

  1. 高效处理大文件:采用逐行读取方式,避免一次性加载整个9GB文件导致内存溢出。
  2. 精准正则匹配:构建匹配指定后缀结尾完整单词的正则表达式,同时转义特殊字符避免匹配异常。
  3. 自动去重:用集合存储匹配结果,避免重复添加相同术语,最后合并到原有停用词列表。

完整代码

import re

# 假设你已定义以下变量
stop_words = ["the", "and", "or"]  # 基础停用词列表
target_suffixes = ["ing", "ed", "tion"]  # 需要匹配的结尾词汇
large_text_path = "forum_posts.txt"  # 9GB论坛文本路径

# 1. 构建安全的正则匹配模式
# 转义后缀中的特殊字符,避免正则元字符干扰
escaped_suffixes = [re.escape(suf) for suf in target_suffixes]
# 匹配以指定后缀结尾的完整单词,\b确保是单词边界
pattern = re.compile(r'\b(\w+(' + '|'.join(escaped_suffixes) + r'))\b', re.UNICODE)

# 2. 逐行读取大文件,收集匹配术语(集合自动去重)
matched_terms = set()
with open(large_text_path, 'r', encoding='utf-8') as f:
    for line in f:
        # 提取所有符合条件的完整单词
        terms = [match[0] for match in pattern.findall(line)]
        matched_terms.update(terms)

# 3. 合并到停用词列表,排除已存在的词汇
stop_words.extend([term for term in matched_terms if term not in stop_words])

# 可选:保存更新后的停用词列表
with open("updated_stopwords.txt", 'w', encoding='utf-8') as f:
    f.write('\n'.join(stop_words))

关键细节说明

  • 正则边界处理:\b用于匹配单词边界,确保不会把"runningman"中的"running"误判为符合"ing"后缀的术语。
  • 特殊字符转义:re.escape()处理后缀中的特殊字符(比如如果后缀包含.、*等正则元字符),避免匹配逻辑出错。
  • 内存效率:逐行读取+集合存储,即使处理9GB文本,内存占用也仅取决于单次匹配到的术语数量,不会出现内存不足问题。
  • 去重逻辑:集合自动去重,最后追加时再检查原有停用词列表,避免重复添加。

内容的提问来源于stack exchange,提问作者Jesse-Burton Nicholson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:35:36