nlp.vocab 和 nlp.vocab.strings 有什么区别?
What is the difference between nlp.vocab and nlp.vocab.strings?
我正在学习NLP,我想看看我用spacy下载的词汇总量。
import spacy
nlp = spacy.load('en_core_web_trf')
nlp2 = spacy.load('en_core_web_sm')
在导入 Spacy 并加载大包和小包后,我检查了这些:
len(nlp.vocab)
给出 770,
len(nlp2.vocab)
给出 761,
len(nlp.vocab.strings)
给出 83934,
len(nlp2.vocab.strings)
给出 83914。
它们有什么不同以及为什么不同?
如何查看每个包裹的总词汇数?
len(nlp.vocab)
是缓存词素的数量,因此当您在某些词上使用模型时,它可能会有所不同。
len(nlp.vocab.strings)
将字符串映射到哈希值,反之亦然。它可以给你不同字符串的数量。例如,对于模型 en_core_web_md
,这将为您提供 701800
。
如果你想访问的话,试试:
words=[]
for x in nlp.vocab.strings:
words.append(x)
spaCy v2.3 或 v3 中没有真正的“词汇”计数。您应该主要将 nlp.vocab
和 nlp.vocab.strings
视为总计数不是有意义值的缓存。 nlp.vocab
Vocab
不是静态的,它会随着您使用管道处理文本而增长。
vocab 是 Lexeme
个对象的缓存,nlp.vocab.strings
StringStore
是字符串哈希的缓存。 vocab 包含之前在管道处理的某些文本中看到的标记的词素,字符串存储包含之前看到的字符串,作为标记或注释(POS 标签、引理、依赖标签)。
字符串存储不是 100% 的缓存,可能包含在训练期间添加的字符串,这些字符串以前未在当前加载的管道中使用过,但字符串存储的大小不会告诉您有关管道的任何信息性能。
我正在学习NLP,我想看看我用spacy下载的词汇总量。
import spacy
nlp = spacy.load('en_core_web_trf')
nlp2 = spacy.load('en_core_web_sm')
在导入 Spacy 并加载大包和小包后,我检查了这些:
len(nlp.vocab)
给出 770,
len(nlp2.vocab)
给出 761,
len(nlp.vocab.strings)
给出 83934,
len(nlp2.vocab.strings)
给出 83914。
它们有什么不同以及为什么不同? 如何查看每个包裹的总词汇数?
len(nlp.vocab)
是缓存词素的数量,因此当您在某些词上使用模型时,它可能会有所不同。
len(nlp.vocab.strings)
将字符串映射到哈希值,反之亦然。它可以给你不同字符串的数量。例如,对于模型 en_core_web_md
,这将为您提供 701800
。
如果你想访问的话,试试:
words=[]
for x in nlp.vocab.strings:
words.append(x)
spaCy v2.3 或 v3 中没有真正的“词汇”计数。您应该主要将 nlp.vocab
和 nlp.vocab.strings
视为总计数不是有意义值的缓存。 nlp.vocab
Vocab
不是静态的,它会随着您使用管道处理文本而增长。
vocab 是 Lexeme
个对象的缓存,nlp.vocab.strings
StringStore
是字符串哈希的缓存。 vocab 包含之前在管道处理的某些文本中看到的标记的词素,字符串存储包含之前看到的字符串,作为标记或注释(POS 标签、引理、依赖标签)。
字符串存储不是 100% 的缓存,可能包含在训练期间添加的字符串,这些字符串以前未在当前加载的管道中使用过,但字符串存储的大小不会告诉您有关管道的任何信息性能。