Python统计文本词频时如何过滤the、is等停用词?有哪些相关可用库?
Python文本停用词过滤方案
你提到的这类无实际检索意义的高频常用词汇,在自然语言处理领域统一称为停用词(Stop Words),目前已有成熟的Python库内置了多语言的停用词表,无需手动录入所有过滤规则。
常用实现方案
方案1:NLTK库(轻量、适合快速实现)
NLTK是最常用的Python自然语言处理工具库,内置了覆盖数十种语言的停用词表,完全覆盖你提到的the/is/was/am这类基础常用词。
操作步骤
- 安装依赖:
pip install nltk - 示例代码:
import nltk from nltk.corpus import stopwords from collections import Counter # 首次运行执行一次即可,后续运行可注释该行 nltk.download('stopwords') # 加载对应语言的停用词表,中文场景替换为'chinese'即可 stop_words = set(stopwords.words('english')) # 读取本地文本文件,替换为你的实际文件路径 with open('target.txt', 'r', encoding='utf-8') as f: # 统一转为小写后拆分词汇,可根据你的需求替换为更精准的分词逻辑 words = f.read().lower().split() # 过滤停用词后统计频次 filtered_words = [word for word in words if word not in stop_words] word_frequency = Counter(filtered_words) # 输出频次最高的20个重要词汇 print(word_frequency.most_common(20))
方案2:spaCy库(适合复杂文本处理场景)
如果你的文本需要同步做分词、词性标注等其他处理,可选择spaCy库,它的停用词表适配性更高,适合工业级场景。
操作步骤
- 安装依赖:
pip install spacy - 下载对应语言模型(英文场景为例):
python -m spacy download en_core_web_sm - 停用词过滤逻辑和NLTK基本一致,可直接调用模型内置的
stop_words集合。
自定义扩展
如果有额外需要过滤的自定义词汇,直接添加到停用词集合即可:stop_words.add('自定义过滤词')
内容的提问来源于stack exchange,提问作者Anirudh Dayanand
相关产品推荐
相关产品推荐

