在 Azure Databricks 中为 spacy 导入 'en_core_web_sm' 时出错

Error while importing 'en_core_web_sm' for spacy in Azure Databricks

我在 Databricks 笔记本中加载 'en_core_web_sm' spacy 时出错。我已经看到很多其他关于相同的问题,但它们没有帮助。

代码如下

 import spacy
 !python -m spacy download en_core_web_sm 
  from spacy import displacy

  nlp = spacy.load("en_core_web_sm")
  # Process 
  text = ("This is a test document")
  doc = nlp(text)

我收到错误“OSError:[E050] 找不到模型 'en_core_web_sm'。它似乎不是 Python 包或数据目录的有效路径”。 =14=]

安装详情

  Python - 3.8.10
  spaCy version 3.3

根本行不通。我尝试了以下

   ℹ spaCy installation:
   /databricks/python3/lib/python3.8/site-packages/spacy

   NAME             SPACY                 VERSION                            
   en_core_web_sm   >=2.2.2               3.3.0   ✔
   

但错误依旧

不确定此消息是否相关

/databricks/python3/lib/python3.8/site-packages/spacy/util.py:845: UserWarning: [W094] Model 'en_core_web_sm' (2.2.5) 指定了约束不足的 spaCy 版本要求:>= 2.2.2.这可能会导致与旧版本的兼容性问题,或者随着新 spaCy 版本的发布,因为该模型可能会说它兼容,而实际上却不兼容。考虑将 meta.json 中的“spacy_version”更改为一个版本范围,使用较低和较高的引脚。例如:>=3.3.0,<3.4.0 warnings.warn(warn_msg)

还有安装“en_core_web_sm”时的消息

“默认为用户安装,因为普通站点包不可写”

任何帮助将不胜感激

象头神

我怀疑您的集群具有自动缩放功能,当自动缩放发生时,新节点没有安装该模块。另一个原因可能是集群节点被云提供商和集群管理器终止并拉了一个新节点。

为了防止这种情况,我建议使用 cluster init script as it's described in the following answer - 它会保证即使在新节点上也安装了模块。脚本内容很简单:

#!/bin/bash

pip install spacy
python -m spacy download en_core_web_sm