我正在尝试在 spacy nlp 管道中加载 glove 100d emebddings。
我以 spacy 格式创建词汇表,如下所示:
python -m spacy init-model en spacy.glove.model --vectors-loc glove.6B.100d.txt
glove.6B.100d.txt 通过在第一行添加“400000 100”转换为 word2vec 格式。
现在
spacy.glove.model/vocab has following files:
5468549 key2row
38430528 lexemes.bin
5485216 strings.json
160000128 vectors
在代码中:
import spacy
nlp = spacy.load("en_core_web_md")
from spacy.vocab import Vocab
vocab = Vocab().from_disk('./spacy.glove.model/vocab')
nlp.vocab = vocab
print(len(nlp.vocab.strings))
print(nlp.vocab.vectors.shape) gives
给出 407174 (400000, 100)
然而问题是:
V=nlp.vocab
max_rank = max(lex.rank for lex in V if lex.has_vector)
print(max_rank)
给出 0
我只想将 spacy 中的 100d 手套嵌入与 en_core_web_md 中的“tagger”、“parser”、“ner”模型结合使用。
有谁知道如何正确地做到这一点(这可能吗)?