从打包的tar.gz文件中直接加载spacy模型

eve*_*ean 3 python load nlp model spacy

是否可以foo.tar.gz直接从tar文件加载打包的spacy模型(即),而不是事先安装它?我会想像的东西:

import spacy 

nlp = spacy.load(/some/path/foo.tar.gz)
Run Code Online (Sandbox Code Playgroud)

Ine*_*ani 6

不,目前无法实现。.tar.gz存档的主要目的是使它们易于通过进行安装pip install。但是,您始终可以从存档中提取模型数据,然后从路径中加载它- 有关更多详细信息,请参见此处

nlp = spacy.load('/path/to/en_core_web_md')
Run Code Online (Sandbox Code Playgroud)

使用该spacy link命令,您还可以为模型创建“快捷链接”,即符号链接,使您可以使用自定义名称而不是完整路径或包名称在模型中加载。如果您正在使用大型模型和多个环境(并且不想在每个模型中都安装数据),这将特别有用。

python -m spacy link /path/to/model_data cool_model
Run Code Online (Sandbox Code Playgroud)

然后,上面的快捷链接将使您像这样加载模型:

nlp = spacy.load('cool_model')
Run Code Online (Sandbox Code Playgroud)

另外,如果您确实需要从档案库中加载模型,则始终可以编写一个简单的包装程序spacy.load,以获取文件,提取内容,读取模型meta,获取数据目录的路径,然后对其进行调用spacy.util.load_model_from_path并返回nlp宾语。

  • 我做了`python -m spacy link ...`,它说我可以使用`spacy.load('cool_model')`加载。但是当我尝试加载它时抱怨在 `venv/lib/python3.7/site-packages/spacy/data/cool_model/` 中找不到 `__init__.py` (3认同)