首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >直接从打包的tar.gz文件加载spacy模型

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

Stack Overflow用户
提问于 2018-03-14 09:59:16
回答 2查看 7.1K关注 0票数 12

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

代码语言:javascript
复制
import spacy 

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

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-14 14:38:20

不,目前不可能。.tar.gz档案的主要目的是使它们易于通过pip install安装。但是,您始终可以从归档文件中提取模型数据,然后从路径更多细节请看这里加载它。

代码语言:javascript
复制
nlp = spacy.load('/path/to/en_core_web_md')

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

代码语言:javascript
复制
python -m spacy link /path/to/model_data cool_model

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

代码语言:javascript
复制
nlp = spacy.load('cool_model')

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

票数 13
EN

Stack Overflow用户

发布于 2019-09-02 13:43:49

这不是直接的答案,但它可能有助于直接加载压缩模型与SpaCy。这可以通过使用pickle来完成。

首先,您需要加载SpaCy模型并使用pickle压缩它

代码语言:javascript
复制
import spacy
import pickle

s = spacy.load("en_core_web_sm", parse=False)

pickle.dump(s, open("save.p", "wb"))

之后,您可以轻松地将泡菜转储作为SpaCy模型加载到其他地方:

代码语言:javascript
复制
s = pickle.load(open("save.p", "rb"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49274650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档