在训练有素的模型上使用“Spacy package”:错误“找不到模型数据”

时间:2018-06-01 19:57:49

标签: spacy

我正在尝试在SpaCy中训练NER以识别一组新的实体。一切正常,直到我尝试保存并重新加载模型。

我正在尝试遵循https://spacy.io/usage/training#saving-loading中的SpaCy doc建议,因此我一直在保存:

model.to_disk("save_this_model")

然后转到命令行并尝试使用以下命令将其转换为包:

python -m spacy package save_this_model saved_model_package

所以我可以使用

spacy.load('saved_model_package') 

将模型拉回来。

但是,当我尝试从命令行使用spacy软件包时,我不断收到错误消息“找不到模型数据”

我查看了save_this_model文件,那里有一个meta.json,以及各种管道的文件夹(我试过这个,保存了所有管道,禁用了非NER管道,但都不起作用)。

有谁知道我在这里做错了什么?

我很缺乏经验,所以我认为我很可能试图错误地制作包或者提交其他一些基本错误。非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

spacy package命令将根据您的模型数据创建可安装且可加载的 Python包,然后您可以pip install将其存储在一个.tar.gz中文件。如果您只想加载已保存的模型,通常甚至不需要打包它 - 您只需将模型目录的路径传递给spacy.load即可。例如:

nlp = spacy.load('/path/to/save_this_model')

spacy.load可以获取模型目录的路径,模型包名称或shortcut link的名称(如果可用)。

如果您是spaCy的新手,只是尝试使用训练模型,那么从目录中加载它们通常是最简单的解决方案。如果您想与其他人共享您的模型(因为您可以将其作为一个可安装文件共享),或者您希望将其集成到CI工作流程或测试套件中(因为模型可以是您的组件),模型包会派上用场应用程序,就像它依赖的任何其他包一样)。

因此,如果您确实需要Python包,则首先需要通过在spacy package创建的目录中运行包安装程序来构建它:

cd saved_model_package
python setup.py sdist

您可以找到更多详情here in the docs。上面的命令将在目录.tar.gz中创建一个/dist存档,然后您可以在您的环境中安装该存档。

pip install /path/to/en_example_model-1.0.0.tar.gz

如果模型安装正确,则在运行pip listpip freeze时,它应显示在已安装的软件包中。要加载它,您可以使用包名称调用spacy.load,该名称通常是语言代码加上打包模型时指定的名称。在此示例中,en_example_model

nlp = spacy.load('en_example_model')