是否有可能直接从打包的spacy模型文件(即foo.tar.gz
)中加载模型,而不必事先安装它?我想像的是:
可以直接从tar文件中加载spacy模型吗(例如foo.tar.gz
),而不需要预先安装它?我会想到类似这样的东西:
import spacy
nlp = spacy.load(/some/path/foo.tar.gz)
不,目前还不可能。 .tar.gz
档案的主要目的是通过 pip install
轻松安装它们。但是,您总是可以从存档中提取模型数据,然后从路径加载它 - 在此处查看更多详细信息。
nlp = spacy.load('/path/to/en_core_web_md')
使用spacy link
命令,您还可以为您的模型创建“快捷链接”,即符号链接,让您使用自定义名称而不是完整路径或软件包名称加载模型。如果您正在处理大型模型和多个环境(并且不想在每个环境中安装数据),这将非常有用。
python -m spacy link /path/to/model_data cool_model
上面的快捷链接将允许您像这样加载您的模型:
nlp = spacy.load('cool_model')
或者,如果您真的需要从归档中加载模型,您可以编写一个简单的包装器来调用spacy.load
函数,该函数可以接受文件,提取内容,读取模型元数据,获取数据目录的路径,然后在其上调用spacy.util.load_model_from_path
函数,并返回nlp
对象。
这不是直接的答案,但它可能有助于直接使用SpaCy
加载压缩模型。 这可以通过使用pickle
完成。
首先,您需要加载SpaCy
模型并使用pickle
压缩转储它:
import spacy
import pickle
s = spacy.load("en_core_web_sm", parse=False)
pickle.dump(s, open("save.p", "wb"))
SpaCy
模型: "最初的回答"s = pickle.load(open("save.p", "rb"))
python -m spacy link ...
命令,它提示我可以使用spacy.load('cool_model')
加载模型。但是当我尝试加载时,它报错说在venv/lib/python3.7/site-packages/spacy/data/cool_model/
路径下找不到__init__.py
文件。 - Logan Yang