"Defaults.stop_words"中的停用词与派生自"nlp.vocab"



假设我们有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_wordsnlp.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 词列表中。

最新更新