我正在学习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。
两者有何不同,为何不同?如何检查每个包裹的总词汇量?
发布于 2021-08-22 23:52:00
在spaCy v2.3或v3中没有真正的“语音”计数。您应该主要将nlp.vocab
和nlp.vocab.strings
看作缓存,其中总计数不是有意义的值。nlp.vocab
Vocab
不是静态的,而是在使用管道处理文本时增长的。
词汇表是Lexeme
对象的缓存,nlp.vocab.strings
StringStore
是字符串哈希的缓存。该词汇表包含以前在管道处理过的某些文本中看到的标记的词,字符串存储包含以前看到的字符串,这些字符串是作为标记或注释(POS标签、引引词、依赖项标签)出现的。
字符串存储不是100%的缓存,可能包含在培训期间添加的字符串,这些字符串以前在当前加载的管道中从未使用过,但是字符串存储的大小没有告诉您任何关于管道性能的信息。
发布于 2021-08-22 08:36:16
len(nlp.vocab)
是缓存词的数量,因此,当您对某些单词使用模型时,缓存的词数可能会有所不同。
len(nlp.vocab.strings)
将字符串映射到哈希值,反之亦然。它可以给出不同字符串的数目。例如,对于模型en_core_web_md
,这将为您提供701800
。
如果您想访问这些单词,请尝试:
words=[]
for x in nlp.vocab.strings:
words.append(x)
https://stackoverflow.com/questions/68876169
复制相似问题