直接从打包的 tar.gz 文件加载 spacy 模型
Directly load spacy model from packaged tar.gz file
是否可以直接从 tar 文件加载打包的 spacy 模型(即 foo.tar.gz
)而不是预先安装?我会想象这样的事情:
import spacy
nlp = spacy.load(/some/path/foo.tar.gz)
不,这目前是不可能的。 .tar.gz
档案的主要目的是使它们易于通过 pip install
安装。但是,您始终可以从存档中提取模型数据,然后从路径加载它 – see here for more details.
nlp = spacy.load('/path/to/en_core_web_md')
使用 spacy link
command 您还可以为您的模型创建 "shortcut links",即 symlinks 允许您使用自定义名称而不是完整路径或包加载模型姓名。如果您使用大型模型和多个环境(并且不想在每个环境中安装数据),这将特别有用。
python -m spacy link /path/to/model_data cool_model
上面的快捷方式 link 然后可以让您像这样加载模型:
nlp = spacy.load('cool_model')
或者,如果您真的需要从档案中加载模型,您总是可以为spacy.load
编写一个简单的包装器,它获取文件,提取内容,读取上面的 model meta, gets the path to the data directory and then calls spacy.util.load_model_from_path
和 returns 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"))
之后,您可以直接在其他地方轻松加载 pickle dump 作为 SpaCy
模型:
s = pickle.load(open("save.p", "rb"))
是否可以直接从 tar 文件加载打包的 spacy 模型(即 foo.tar.gz
)而不是预先安装?我会想象这样的事情:
import spacy
nlp = spacy.load(/some/path/foo.tar.gz)
不,这目前是不可能的。 .tar.gz
档案的主要目的是使它们易于通过 pip install
安装。但是,您始终可以从存档中提取模型数据,然后从路径加载它 – see here for more details.
nlp = spacy.load('/path/to/en_core_web_md')
使用 spacy link
command 您还可以为您的模型创建 "shortcut links",即 symlinks 允许您使用自定义名称而不是完整路径或包加载模型姓名。如果您使用大型模型和多个环境(并且不想在每个环境中安装数据),这将特别有用。
python -m spacy link /path/to/model_data cool_model
上面的快捷方式 link 然后可以让您像这样加载模型:
nlp = spacy.load('cool_model')
或者,如果您真的需要从档案中加载模型,您总是可以为spacy.load
编写一个简单的包装器,它获取文件,提取内容,读取上面的 model meta, gets the path to the data directory and then calls spacy.util.load_model_from_path
和 returns 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"))
之后,您可以直接在其他地方轻松加载 pickle dump 作为 SpaCy
模型:
s = pickle.load(open("save.p", "rb"))