首页 > 解决方案 > 差异 spacy 的“--base-model”和“--vectors”参数用于为 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 分数等。

标签: pythonspacyfasttext

解决方案


如果您需要使用向量初始化 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 版本之间略有不同。


推荐阅读