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

时间:2018-03-14 09:59:17

标签: model nlp load spacy

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

import spacy 

nlp = spacy.load(/some/path/foo.tar.gz)

2 个答案:

答案 0 :(得分:4)

不,那是目前无法实现的。 .tar.gz档案的主要目的是通过pip install轻松安装这些档案。但是,您始终可以从存档中提取模型数据,然后从路径加载 - see here for more details

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

使用spacy link command您还可以创建"快捷链接"对于您的模型,即符号链接,允许您使用自定义名称而不是完整路径或包名称加载模型。如果您正在使用大型模型和多个环境(并且不想在每个环境中安装数据),这将非常有用。

python -m spacy link /path/to/model_data cool_model

上面的快捷方式链接可以让你加载你的模型:

nlp = spacy.load('cool_model')

或者,如果确实需要从存档中加载模型,您总是可以为spacy.load编写一个简单的包装器来获取文件,提取内容,读取{{3获取数据目录的路径,然后在其上调用model meta并返回nlp对象。

答案 1 :(得分:0)

这不是直接答案,但是对于直接使用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"))