是否可以直接从tar文件加载打包的spacy模型(即foo.tar.gz
)而不是事先安装它?我想象的是:
import spacy
nlp = spacy.load(/some/path/foo.tar.gz)
答案 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"))