【问题标题】:Lambda not supporting NLTK file sizeLambda 不支持 NLTK 文件大小
【发布时间】:2017-10-31 00:54:09
【问题描述】:

我正在编写一个分析一段文本并以 JSON 格式返回数据的 python 脚本。我正在使用 NLTK 来分析数据。基本上,这是我的流程:

创建一个端点(API 网关)-> 调用我的 lambda 函数-> 返回所需数据的 JSON。

我编写了脚本,部署到 lambda,但遇到了这个问题:

资源 \u001b[93mpunkt\u001b[0m 未找到。请使用 NLTK 下载器获取资源:

\u001b[31m>>> 导入 nltk nltk.download('punkt') \u001b[0m
搜索: - '/home/sbx_user1058/nltk_data' - '/usr/share/nltk_data' - '/usr/local/share/nltk_data' - '/usr/lib/nltk_data' - '/usr/local/lib/nltk_data' - '/var/lang/nltk_data' - '/var/lang/lib/nltk_data'

即使在下载 'punkt' 之后,我的脚本仍然给我同样的错误。我在这里尝试了解决方案:

Optimizing python script extracting and processing large data files

但问题是,nltk_data 文件夹很大,而 lambda 有大小限制。

我该如何解决这个问题? 或者我还能在哪里使用我的脚本并仍然集成 API 调用?

我正在使用无服务器来部署我的 python 脚本。

【问题讨论】:

  • 你的文件夹有多大?
  • 1.4G,这是由于nltk库和standford库。关于如何或在哪里托管代码的任何想法?
  • 你不需要下载完整的nltk,如果你只需要punkt为什么不直接下载呢?

标签: python json amazon-web-services lambda


【解决方案1】:

您可以做两件事:

  1. 错误似乎路径未正确定义,可能将其设置为 env 变量?

sys.path.append(os.path.abspath('/var/task/nltk_data/')

或者这样

  1. 运行 nltk.download() 后,将其复制到 AWS lambda 应用程序的根文件夹中。 (将目录命名为“nltk_data”。)

  2. 在 lambda 函数控制面板中(在 AWS 控制台中),添加 NLTK_DATA=./nltk_data 作为 key-var 环境变量。


  1. 减少 nltk 下载的大小,因为您不需要所有这些。

    1. 删除所有 zip 文件,只保留需要的部分,例如:停用词。可以将其移至:save nltk_data/corpora/stopwords 并删除其余部分。

    2. 或者,如果您需要分词器,请保存到 nltk_data/tokenizers/punkt。其中大部分可以单独下载:python -m nltk.downloader punkt,然后复制文件。

【讨论】:

  • 如何将文件复制到 AWS lambda 应用程序的根文件夹?这真的可能吗?
猜你喜欢
  • 2019-04-14
  • 2013-08-07
  • 1970-01-01
  • 2021-01-16
  • 2016-12-16
  • 1970-01-01
  • 2014-03-22
  • 2010-10-14
  • 2014-12-02
相关资源
最近更新 更多