spacy - 在训练模型上使用“Spacy 包”:错误“无法定位模型数据”
问题描述
我正在尝试在 SpaCy 中训练 NER 以识别一组新实体。一切正常,直到我尝试保存并重新加载模型。
我正在尝试遵循https://spacy.io/usage/training#saving-loading中的 SpaCy 文档建议,因此我一直在保存:
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 管道,两者都不起作用)。
有谁知道我在这里可能做错了什么?
我非常缺乏经验,所以我认为我很有可能试图错误地制作一个包或犯一些其他基本错误。非常感谢您提前提供的帮助!
解决方案
该命令将根据您的模型数据spacy package
创建可安装和可加载的Python 包pip install
,然后您可以将其存储在单个.tar.gz
文件中。如果你只是想加载一个你已经保存的模型,你通常甚至不需要打包它——你可以简单地将模型目录的路径传递给spacy.load
. 例如:
nlp = spacy.load('/path/to/save_this_model')
spacy.load
可以采用模型目录的路径、模型包名称或快捷链接的名称(如果可用)。
如果您是 spaCy 的新手并且只是在试验训练模型,那么从目录加载它们通常是最简单的解决方案。如果您想与其他人共享您的模型(因为您可以将它作为一个可安装文件共享),或者如果您想将它集成到您的 CI 工作流程或测试套件中(因为模型可以是您的应用程序,就像它依赖的任何其他包一样)。
因此,如果您确实想要一个 Python 包,您首先需要通过在以下创建的目录中运行包设置来构建它spacy package
:
cd saved_model_package
python setup.py sdist
您可以在文档中找到更多详细信息。上面的命令将.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')
推荐阅读
- c++ - 为什么基于for循环的范围内的二维数组的元素是T*而不是T(*)[n]?
- javascript - 用户脚本:EventListener 不听(在显示远程 pdf 的选项卡上)
- javascript - 控制台命令有问题,内容无法打印?
- python - Django - 使用来自 python 列表的 src 显示图像
- reactjs - React WebApp 与 Word Press 的集成
- mariadb - MariaDB安装dll文件和window包管理器相关问题
- javascript - 使用 cypress 测试反应应用程序时,无法从样式化组件应用 GlobalStyles
- javascript - 如何在 alpinejs 上显示选择选项
- python - 在列表列表的列表中搜索某些元素的索引
- machine-learning - 什么时候微观和宏观平均值相差很大?