区别 spacy 的“--base-model”和“--vectors”论点以使用 NER 的自定义嵌入?

Difference spacy's "--base-model" and "--vectors" arguments for using custom embeddings for NER?

我训练了 fasttext 嵌入并将它们保存为 .vec 文件。 我想将这些用于我的 spacy NER 模型。

有区别吗

python -m spacy train en [new_model] [train_data] [dev_data] --pipeline ner --base-model embeddings.vec

python -m spacy train en [new_model] [train_data] [dev_data] --pipeline ner --vectors embeddings.vec

两种方法产生几乎相同的训练损失、F 分数等

如果需要用向量初始化 spacy 模型,请像这样使用 spacy init-model 其中 lg 是语言代码:

spacy init-model lg model_dir -v embeddings.vec -vn my_custom_vectors

将矢量保存为 spacy 模型的一部分后:

  • --vectors 从提供的模型中加载向量,因此初始模型为 spacy.blank("lg") + 向量
  • --base-model 从提供的模型中加载所有内容(分词器、管道组件、向量),因此初始模型是 spacy.load(model)

如果提供的模型中没有任何管道组件,唯一的潜在区别是 spacy.blank("lg") 产生的分词器设置,这在各个 spacy 版本之间可能略有不同。