无法在Google colab上加载spacy模型'en_core_web_lg'

Jit*_*mes 4 python nlp spacy google-colaboratory

我在Google colab中使用spacy建立了一个NER模型,为此我使用以下命令下载了spaCy'en_core_web_lg'模型

    import spacy.cli
    spacy.cli.download("en_core_web_lg")
Run Code Online (Sandbox Code Playgroud)

我收到一条消息说

    ? Download and installation successful
    You can now load the model via spacy.load('en_core_web_lg')
Run Code Online (Sandbox Code Playgroud)

但是然后当我尝试加载模型时

    nlp = spacy.load('en_core_web_lg')
Run Code Online (Sandbox Code Playgroud)

打印以下错误:

    OSError: [E050] Can't find model 'en_core_web_lg'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

小智 14

在 Google Colab Notebooks 中,您应该将模型作为包导入

但是,您下载并安装模型:

!pip install <model_s3_url> # tar.gz file e.g. from release notes like https://github.com/explosion/spacy-models/releases//tag/en_core_web_lg-2.3.1
!pip install en_core_web_lg
import spacy
Run Code Online (Sandbox Code Playgroud)

您无权在 Colab 中使用正常的 spacy 用法加载模型:

nlp = spacy.load("en_core_web_lg") # not via packages
nlp = spacy.load("/path/to/en_core_web_lg") #not via paths
nlp = spacy.load("en") # nor via shortcut links
spacy.load()
Run Code Online (Sandbox Code Playgroud)

相反,导入模型并直接加载它:

import en_core_web_lg
nlp = en_core_web_lg.load()
Run Code Online (Sandbox Code Playgroud)

然后按照指示使用:

doc = nlp("This is a sentence. Soon, it will be knowledge.")
Run Code Online (Sandbox Code Playgroud)

  • 现在这是正确的答案,接受的答案不再有效。 (3认同)

Dav*_*cco 8

在使用Python 3内核的colab上,应该都设置为在一个单元格中运行(需要一段时间,但会为您提供有关进度的直观反馈,与有所不同spacy.cli

!python -m spacy download en_core_web_lg
Run Code Online (Sandbox Code Playgroud)

然后,重新启动colab运行时(要在colab菜单中执行此操作,请选择“运行时>重新启动运行时...”)。

之后,执行

import spacy
nlp = spacy.load('en_core_web_lg')
Run Code Online (Sandbox Code Playgroud)

应该可以完美地工作。

  • 重新启动运行时间 是的! (2认同)

GoP*_*kGo 5

似乎最好的答案是在这个线程上:如何在 Google Colab 上安装模型/下载包?

import spacy.cli
spacy.cli.download("en_core_web_lg")
import en_core_web_lg
nlp = en_core_web_lg.load()
Run Code Online (Sandbox Code Playgroud)