Azure Databricks中Spacy加载en_core_web_md模型失败的技术问询
解决Azure Databricks中spaCy模型加载失败的问题
我之前在Databricks里也碰到过一模一样的情况——明明用%sh装完模型还验证通过了,代码里加载就是报错。核心原因其实很简单:%sh是在集群的系统shell环境里安装模型,但Notebook使用的Python解释器环境和shell环境并不完全一致,导致安装的模型没被Python的环境识别到。
下面是几个亲测有效的解决办法:
方法1:用%pip直接在Notebook环境安装模型
别再用%sh了,直接用Databricks原生支持的%pip命令安装,这个命令会直接把包装到Notebook当前使用的Python环境里,兼容性拉满:
%pip install spacy %pip install en_core_web_md
安装完记得重启一下Notebook的内核(点右上角的"Restart"按钮),再运行nlp = spacy.load("en_core_web_md"),基本就能正常加载了。
方法2:手动指定模型安装路径加载
如果方法1还是不行,先搞清楚模型实际装在哪个位置:
%sh pip show en_core_web_md
输出里会有个Location字段,比如类似/databricks/python3/lib/python3.8/site-packages,把这个路径和模型名拼起来,用完整路径加载就行:
import spacy nlp = spacy.load("/databricks/python3/lib/python3.8/site-packages/en_core_web_md")
方法3:从DBFS加载模型(适合多Notebook共享场景)
要是你的集群里多个Notebook都需要用这个模型,可以把模型包上传到DBFS(Databricks文件系统),然后直接加载DBFS里的模型:
- 先把
en_core_web_md-2.3.1.tar.gz下载到本地,上传到DBFS的某个目录,比如/dbfs/models/en_core_web_md-2.3.1 - 然后在Notebook里加载:
import spacy nlp = spacy.load("/dbfs/models/en_core_web_md-2.3.1")
试下这几个方法,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者Inayat Khan
相关产品推荐
相关产品推荐

