You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

nlp.vocab与nlp.vocab.strings有何区别?如何查询spaCy模型总词汇量?

spaCy词汇查询结果差异原因及正确查询方法

1. 两个查询接口的核心区别

你调用的两个长度查询对应完全不同的统计逻辑,数值差异的原因如下:

  • len(nlp.vocab):统计的是当前已经加载到内存中的词法条目(Lexeme)数量。spaCy采用懒加载机制,刚加载模型未处理任何文本时,只会预加载高频词、特殊标记、停用词、标点等最少必要的词法条目,所以初始值只有几百。en_core_web_trf和en_core_web_sm的预加载基础条目有9个的差异,就出现了你看到的770和761的区别。
  • len(nlp.vocab.strings):统计的是模型内置的全局字符串哈希映射表的总条目数,包含了模型训练阶段用到的所有词汇的字符串对应关系,这个数值才是模型内置的总词汇量。两个模型数值差20,是因为en_core_web_trf比en_core_web_sm多内置了少量和transformer推理相关的特殊标记、补充词汇。

2. 总词汇量的正确查询方式

  • 如果你要查模型内置的完整总词汇量,直接使用len(nlp.vocab.strings)即可,你拿到的83934、83914就是两个模型对应的总词汇量。
  • 如果你使用的是带静态词向量的模型(en_core_web_sm/md/lg系列,trf版本用动态transformer embedding无静态词向量),要查询有对应预训练词向量的词汇量,可以调用len(nlp.vocab.vectors)获取结果。

补充注意:nlp.vocab的数值是动态增长的,你用模型处理文本时遇到的新词汇会被自动加入到nlp.vocab中,后续再查询长度会持续增加,所以它的数值永远不能代表模型的固定总词汇量。

内容的提问来源于stack exchange,提问作者cagatay.e.sahin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:18:00