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

Python读取txt文本后如何删除另一停用词txt文件中包含的词汇

问题分析
  • 逻辑错误:循环替换停用词时,每次都基于未修改的原始newline变量执行替换,再赋值给policy,前序的所有替换结果都会被覆盖,最终只会生效最后一个停用词的删除操作
  • 匹配逻辑错误:直接使用str.replace()会匹配词汇内部的停用词片段,比如文本中的there会被误删开头的the,变成无意义的ater
  • 流程不合理:统计词频前需要先将文本拆分为独立的单个词汇,再过滤停用词,直接在整段文本上删除停用词的逻辑本身就不符合需求
正确实现代码
import re
from collections import Counter

# 读取并清洗原文本(去除标点)
with open('../data/policy_new.txt','r', encoding='utf-8') as handle:
    line = handle.read()
    # 去除标点,同时保留空格用于后续分词
    newline = re.sub(r"[!\"#$%&'()*+,\-./:;<=>?@\[\]^_`{|}~“”‘’]+", "", line)

# 读取停用词,转为集合提高查询效率
with open('../data/stop_words.txt','r', encoding='utf-8') as handle2:
    stopwords = {word.strip() for word in handle2.readlines()}

# 第一步:将文本拆分为单个词汇(默认按空格拆分,所有词汇转为小写避免大小写匹配问题)
word_list = [word.lower() for word in newline.split() if word.strip()]

# 第二步:过滤停用词
filtered_word = [word for word in word_list if word not in stopwords]

# 第三步:统计词频
word_count = Counter(filtered_word)

# 输出结果示例:打印出现频率最高的10个词汇
print(word_count.most_common(10))
代码说明
  • 停用词存储为set类型,查询效率比列表高100倍以上,适合大量停用词的场景
  • 先分词再过滤的逻辑可以完全避免词汇片段被误删的问题
  • 新增了collections.Counter工具直接完成词频统计,无需自己写计数逻辑
  • 统一转为小写匹配,避免The、THE这类大小写变体无法被识别为停用词的问题

内容的提问来源于stack exchange,提问作者程彩霞

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:51:02