Spacy 自动将单词添加到 vocab?

Spacy adds words automatically to vocab?

我加载了常规的 spacy 语言,并尝试了以下代码:

import spacy

nlp = spacy.load("en_core_web_md")

text = "xxasdfdsfsdzz is the first U.S. public company"

if 'xxasdfdsfsdzz' in nlp.vocab:
    print("in")
else:
    print("not")
    
if 'Apple' in nlp.vocab:
    print("in")
else:
    print("not")


# Process the text
doc = nlp(text)

if 'xxasdfdsfsdzz' in nlp.vocab:
    print("in")
else:
    print("not")
    
if 'Apple' in nlp.vocab:
    print("in")
else:
    print("not")

他们打电话分析后,好像是spacy loaded words - nlp(text) 有人可以解释输出吗?我怎样才能避免它?为什么词汇中不存在“Apple”?为什么存在“xxasdfdsfsdzz”?

输出:

not
not
in
not

spaCy Vocab 主要是一个内部实现细节,用于与 memory-efficient 存储字符串的方法交互。它绝对不是“真实单词”列表或您可能会发现有用的任何其他内容。

默认情况下 Vocab 存储的主要内容是内部使用的字符串,例如 POS 和依存关系标签。在带有向量的管道中,向量中的词也被包括在内。您可以阅读更多关于实施细节 here.

nlp 对象看到的所有单词都需要存储其字符串,因此将出现在 Vocab 中。这就是您在上面的示例中看到的无意义字符串。