spaCy:在GCloud上部署时,找不到模型“ en”

时间:2019-11-22 10:32:06

标签: python google-app-engine gcloud spacy

我已经训练了一些NLP模型,还完成了Flask应用程序,将模型包装到一个API中,供前端客户端调用。一切顺利,直到按照教程here尝试在Google Cloud App Engine上部署Flask应用程序为止。

在GCloud上,我使用Cloud Shell通过gcloud app deploy来部署Flask应用,并且该应用不断抛出错误:

OSError: [E050] Can't find model 'en'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.

我还尝试了许多其他SO职位提出的各种解决方案,但都没有解决问题:

python3 -m spacy download en
python3 -m spacy download en_core_web_sm
sudo python3 -m spacy download en
sudo python3 -m spacy download en_core_web_sm

我还尝试使用简单的hello world在Cloud Shell上运行本地python shell,但它以某种方式起作用:

Python 3.7.3 (default, Nov 13 2019, 23:27:19)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import spacy
>>> nlp = spacy.load('en')
>>> test = "hello world"
>>> nlp(test)
hello world
>>>

1 个答案:

答案 0 :(得分:3)

您需要做两件事才能使它正常工作。

  1. 不是使用spacy命令加载Spacy lang模块,而是使用pip进行安装。 修改requirements.txt以添加以下行:

    https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.5/en_core_web_sm-2.2.5.tar.gz#en_core_web_sm

  2. 修改代码以使用确切的包名称加载lang模型,因为不再为我们创建目录链接

spacy.load('en_core_web_sm')

这就是全部。再次部署您的应用程序,它应该可以正常工作。