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

为何`Defaults.stop_words`与`nlp.vocab`的停用词数量不匹配?

spaCy中Defaults.stop_words与vocab停用词数量差异的原因

这两个数值差异的核心原因是两者的统计范围完全不同:

  • nlp.Defaults.stop_words是spaCy预定义的完整英文停用词集合,包含所有官方标记为停用词的词汇(共326个),这个集合不依赖于当前加载的词汇表大小。
  • nlp.vocab是当前模型(这里是en_core_web_sm)实际加载的词汇条目集合。en_core_web_sm是轻量模型,它的词汇表只保留了训练数据中高频出现的词汇,很多低频的停用词并没有被预加载到vocab里。当你遍历nlp.vocab时,只会统计那些已经被加载的、且标记为停用词的词汇,所以数量只有111个。

验证示例

可以通过以下代码确认这个逻辑:

import spacy
nlp = spacy.load('en_core_web_sm')

# 检查一个低频停用词
low_freq_stop_word = "whereafter"

# 该词属于预定义停用词集合
print(low_freq_stop_word in nlp.Defaults.stop_words)  # 输出: True

# 但该词不在预加载的vocab条目里
print(low_freq_stop_word in [token.text for token in nlp.vocab])  # 输出: False

# 主动访问该词时,spaCy会动态创建词汇条目并标记为停用词
print(nlp.vocab[low_freq_stop_word].is_stop)  # 输出: True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:54:51