Nlp 如何找到spaCy模型的词汇量?
我试图找到大型英语模型的词汇量,即Nlp 如何找到spaCy模型的词汇量?,nlp,documentation,spacy,vocabulary,Nlp,Documentation,Spacy,Vocabulary,我试图找到大型英语模型的词汇量,即en_core\u web\u lg,我找到了三种不同的信息来源: spaCy文档:685k密钥,685k唯一向量 nlp.vocab._len__():1340242(词素数量) len(vocab.strings):1476045 三者之间的区别是什么?我无法在文档中找到答案。最有用的数字是与词向量相关的数字nlp.vocab.vectors.n_键告诉您有多少标记有单词向量,len(nlp.vocab.vectors)告诉您有多少唯一的单词向量(
en_core\u web\u lg
,我找到了三种不同的信息来源:
- spaCy文档:685k密钥,685k唯一向量
:1340242(词素数量)nlp.vocab._len__()
:1476045len(vocab.strings)
三者之间的区别是什么?我无法在文档中找到答案。最有用的数字是与词向量相关的数字
nlp.vocab.vectors.n_键
告诉您有多少标记有单词向量,len(nlp.vocab.vectors)
告诉您有多少唯一的单词向量(多个标记可以在md
模型中引用同一单词向量)
len(vocab)
是缓存词素的数量。在md
和lg
模型中,大多数1340242
词素都有一些预先计算的功能(如Token.prob
),但由于在处理文本时可以添加更多条目,因此该缓存中可能会有其他词素,而没有预先计算的功能
len(vocab.strings)
是与标记和注释相关的字符串数(如nsubj
或名词
),因此它不是一个特别有用的数字。训练或处理过程中使用的所有字符串都存储在此处,以便在需要时将内部整数散列转换回字符串。由于spaCy 2.3+,根据,词素不会加载到nlp.vocab
;因此使用len(nlp.vocab)
是无效的。相反,使用nlp.meta['vectors']
查找唯一向量和单词的数量。以下是发行说明中的相关部分:
为了缩短初始加载时间,nlp.vocab
中的词素没有
对于带有向量的模型,初始化时加载的时间更长。像你一样
处理文本时,词汇将自动添加到词汇表中,
就像在没有向量的小模型中一样
要查看唯一向量的数量和带向量的单词的数量,
参见nlp.meta['vectors']
,例如en\u core\u web\u md
有
20000个唯一向量和684830个带向量的单词:
{
'width': 300,
'vectors': 20000,
'keys': 684830,
'name': 'en_core_web_md.vectors'
}
非常感谢您的回复。有没有办法确定哪些字符串具有不同的词向量,哪些映射到同一向量?所有词汇表外单词映射到的默认字符串/单词向量是什么?请查看
Vectors.data
和Vectors.key2row
:。默认的OOV都是0。