nlp和nlp的区别是什么?词汇和nlp.词汇.字符串?



我正在学习自然语言处理,我想看看我用空格下载的词汇总量。

import spacy
nlp = spacy.load('en_core_web_trf')
nlp2 = spacy.load('en_core_web_sm')

在导入space并加载较大和较小的包之后,我检查了这些:

len(nlp.vocab)

给了770,

len(nlp2.vocab)

给了761,

len(nlp.vocab.strings)

给了83934,

len(nlp2.vocab.strings)

给了83914。

它们如何以及为什么不同?我如何查看每个包裹的总词汇数?

没有真正的"词汇";在spaCy v2.3或v3中。您应该主要将nlp.vocabnlp.vocab.strings视为总数不是有意义的值的缓存。nlp.vocabVocab不是静态的,并且随着您使用管道处理文本而增长。

vocab是Lexeme对象的缓存,nlp.vocab.stringsStringStore是字符串哈希的缓存。词汇表包含以前在管道处理过的某些文本中见过的标记的词素,字符串存储库包含以前见过的字符串,可以作为标记或作为注释(POS标签、引理、依赖项标签)。

字符串存储不是100%的缓存,可能包含在训练期间添加的字符串,这些字符串在当前加载的管道中之前没有使用过,但是字符串存储的大小并不能告诉你任何关于管道性能的信息。

len(nlp.vocab)是缓存的词汇的数量,因此当您在某些单词上使用模型时,它可能会发生变化。

len(nlp.vocab.strings)将字符串映射到哈希值,反之亦然。它可以给你不同字符串的数量。例如,对于模型en_core_web_md,这将给出701800

如果您想访问单词,请尝试:

words=[]
for x in nlp.vocab.strings:
words.append(x)

相关内容

  • 没有找到相关文章

最新更新