我正在尝试在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管道,但都不起作用)。
有谁知道我在这里做错了什么?
我很缺乏经验,所以我认为我很可能试图错误地制作包或者提交其他一些基本错误。非常感谢您的帮助!
答案 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 list
或pip freeze
时,它应显示在已安装的软件包中。要加载它,您可以使用包名称调用spacy.load
,该名称通常是语言代码加上打包模型时指定的名称。在此示例中,en_example_model
:
nlp = spacy.load('en_example_model')