假设我们有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')
加载的相同的底层词汇表,我不明白为什么数字不匹配。有什么想法吗?
发布于 2022-07-31 06:00:57
用于检查在is_stop
中是否获得任何令牌nlp.Defaults.stop_words
的实际默认停止词列表,因此该列表包含326
单词。
这种不匹配的原因是,nlp.vocab
是一个包含Lexemes
(word-type)的Vocab
,由于不同的原因,比如提高效率,并且在处理新文档时使用新条目进行更新。当您初始化Language
(nlp
)时,Vocab
将包含一定数量的默认条目(在我的例子中是764
),当您处理包含文档中实际出现的单词的新文档时,这个数字会增加。
因此,在这个例子中的循环中,我们只是检查语言Vocab
的一些默认条目是否存在于包含326
单词和实际上是nlp.Defaults.stop_words
的停止词列表中。
https://stackoverflow.com/questions/73179078
复制