如何正确加载指定路径下载的spaCy预训练管道?附文档查询需求
加载本地预训练spaCy管道的正确方法及文档说明
问题场景
执行以下代码加载本地指定路径的预训练管道时,触发OSError,提示无法读取/tmp/spacy/en_core_web_sm/config.cfg文件:
import spacy spacy.cli.download("en_core_web_sm", False, False, "--target", "/tmp/spacy") nlp = spacy.load("/tmp/spacy/en_core_web_sm")
直接使用带版本号的路径(如/tmp/spacy/en_core_web_sm/en_core_web_sm-3.5.0/)可成功加载,但该方法依赖具体版本号,不具备通用性。
环境:Python 3.9.13,spaCy 3.5.0
正确解决方法
方法1:通过环境变量指定模型搜索路径
spacy.cli.download配合--target参数时,模型会被下载到目标目录/模型名/模型名-版本号的嵌套结构中。此时可以通过设置环境变量让spaCy自动识别模型:
import os import spacy # 将模型所在的父目录设为spaCy的模型搜索路径 os.environ["SPACY_MODEL_PATH"] = "/tmp/spacy" # 直接使用模型名称加载,spaCy会自动在指定路径下匹配对应版本 nlp = spacy.load("en_core_web_sm")
方法2:下载时直接解压到目标根目录
在下载命令中添加--unpack参数,模型文件会直接解压到目标目录的根层级,无需嵌套版本子目录:
import spacy # 添加--unpack参数,将模型文件直接释放到/tmp/spacy下 spacy.cli.download("en_core_web_sm", False, False, "--target", "/tmp/spacy", "--unpack") # 直接加载目标目录即可 nlp = spacy.load("/tmp/spacy")
官方文档说明位置
在spaCy官方文档的「使用预训练模型」章节下的「从本地目录加载模型」部分,明确说明了以下内容:
- 模型加载的目录结构要求(核心文件如
config.cfg需在加载路径的根目录) - 通过
SPACY_MODEL_PATH环境变量自定义模型搜索路径的用法 - 使用
--unpack参数调整下载后模型目录结构的方法
内容的提问来源于stack exchange,提问作者mon
相关产品推荐
相关产品推荐

