首页 > 解决方案 > aws lambda spacy 找不到模型'de_core_news_sm'

问题描述

我想在 aws lambda 函数中使用 spacy 模型。

当我调用该函数时,我收到以下错误消息。函数调用:

aws lambda invoke --function-name my-sourcecode-function --cli-binary-format raw-in-base64-out --payload '{"key1": "value1", "key2": "value2", "key3": "value3"}' output.txt

错误信息:

{"errorMessage": "[E050] Can't find model 'de_core_news_sm'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.", "errorType": "OSError", "stackTrace": ["  File \"/var/lang/lib/python3.8/imp.py\", line 234, in load_module\n    return load_source(name, filename, file)\n", "  File \"/var/lang/lib/python3.8/imp.py\", line 171, in load_source\n    module = _load(spec)\n", "  File \"<frozen importlib._bootstrap>\", line 702, in _load\n", "  File \"<frozen importlib._bootstrap>\", line 671, in _load_unlocked\n", "  File \"<frozen importlib._bootstrap_external>\", line 783, in exec_module\n", "  File \"<frozen importlib._bootstrap>\", line 219, in _call_with_frames_removed\n", "  File \"/var/task/lambda_function.py\", line 2, in <module>\n    nlp = spacy.load('de_core_news_sm')\n", "  File \"/var/task/spacy/__init__.py\", line 30, in load\n    return util.load_model(name, **overrides)\n", "  File \"/var/task/spacy/util.py\", line 175, in load_model\n    raise IOError(Errors.E050.format(name=name))\n"]}

这是我的 lambda_function.py

import spacy
nlp = spacy.load('de_core_news_sm')
def main(event, context):
    doc = nlp(u'Ich bin')
    return doc[0].lemma_
if __name__ == "__main__":
    main('', '')

我使用以下命令安装了模型。

pip3 install --target ./package/ https://github.com/explosion/spacy-models/releases/download/de_core_news_sm-2.3.0/de_core_news_sm-2.3.0.tar.gz

然后我压缩包的内容以用作部署包。

zip -r ../my-deployment-package.zip .

如何正确导入模型?

另请参阅:https ://docs.aws.amazon.com/lambda/latest/dg/python-package-create.html#python-package-create-with-dependency

标签: amazon-web-services

解决方案


推荐阅读