Lambda不支持NLTK文件大小



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

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

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

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

\u001b[31m>>导入nltknltk.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"之后,我的脚本仍然给了我同样的错误。我在这里尝试了解决方案:

优化python脚本提取和处理大数据文件

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

如何解决此问题?或者,我在哪里可以使用我的脚本并仍然集成API调用?

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

您可以做两件事:

  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作为关键字var Environment Variable。


  • 减少nltk下载的大小,因为您不需要所有下载。

    1. 删除所有zip文件,只保留所需的部分,例如:stopwwords。可以移动到:save nltk_data/corpora/stopwords并删除其余部分。

    2. 或者,如果您需要令牌化器,请保存到nltk_data/tokenizers/punkt。其中大多数可以单独下载:python -m nltk.downloader punkt,然后通过文件进行复制。

  • 最新更新