首页 > 解决方案 > spaCy BERT 词典

问题描述

我正在尝试访问 spaCy BERT 字典,但我收到了来自模型的奇怪输出。例如对于en_core_web_lg模型,我可以像这样提取约 130 万个令牌

nlp = spacy.load("en_core_web_lg") 
tokens = [t for t in nlp.vocab]

当我对en_trf_bertbaseuncased_lg模型做同样的事情时,我只得到 478 个令牌,

nlp = spacy.load("en_trf_bertbaseuncased_lg") 
tokens = [t for t in nlp.vocab]

而根据BERT 论文应该有大约 30k 个令牌。有没有办法我可以通过nlp.vocab或通过自定义组件属性访问它们?

标签: pythonnlpspacyspacy-transformers

解决方案


我对像“en”这样的标准模型也有类似的问题。有趣的是,长度完全相同。

import spacy
nlp = spacy.load("en")
len([t for t in nlp.vocab])
478

原来像“en”这样的模型不包含真正的向量(参见https://github.com/explosion/spaCy/issues/1520)。所以我想这也是伯特的情况。


推荐阅读