假设我们有nlp = spacy.load('en_core_web_sm')
.输入len(nlp.Defaults.stop_words)
时,它返回326
,但是当我运行以下代码(基本上计算词汇表的停用词)时,我得到111
:
i=0
for word in nlp.vocab:
if word.is_stop:
print(word.text)
i+=1
print(i)
鉴于(大概)Defaults.stop_words
和nlp.vocab
都使用相同的基础词汇表加载nlp = spacy.load('en_core_web_sm')
,我不明白为什么数字不匹配。有什么想法吗?
用于检查是否使用nlp.Defaults.stop_words
获取任何标记is_stop
的实际默认停用词列表,因此该列表包含326
个单词。
不匹配源于这样一个事实,即nlp.vocab
是一个包含Lexemes
(单词类型)的Vocab
,这些(单词类型)出于不同的原因(例如提高效率)而保留,并且在处理新文档时会使用新条目进行更新。当您初始化Language
(nlp
)时,Vocab
将包含一定数量的默认条目(在我的情况下764
),当您处理文档中实际存在单词的新文档时,您将看到此数字增加。
因此,通过示例中的循环,我们只是检查语言Vocab
的某些默认条目是否存在于包含326
单词且实际上是nlp.Defaults.stop_words
的 DISCRETION 词列表中。