python - 在 Python 中将 NLTK 语料库与 AWS Lambda 函数结合使用

标签 python nltk aws-lambda

我在 AWS Lambda 中使用 NLTK 语料库(尤其是停用词)时遇到困难。我知道语料库需要下载并已使用 NLTK.download('stopwords') 完成下载,并将它们包含在用于在 nltk_data/corpora/stopwords 中上传 lambda 模块的 zip 文件中。

代码中的用法如下:

from nltk.corpus import stopwords
stopwords = stopwords.words('english')
nltk.data.path.append("/nltk_data")

这从 Lambda 日志输出返回以下错误

module initialization error: 
**********************************************************************
  Resource u'corpora/stopwords' not found.  Please use the NLTK
  Downloader to obtain the resource:  >>> nltk.download()
  Searched in:
    - '/home/sbx_user1062/nltk_data'
    - '/usr/share/nltk_data'
    - '/usr/local/share/nltk_data'
    - '/usr/lib/nltk_data'
    - '/usr/local/lib/nltk_data'
    - '/nltk_data'
**********************************************************************

我也试过通过include直接加载数据

nltk.data.load("/nltk_data/corpora/stopwords/english")

下面会产生不同的错误

module initialization error: Could not determine format for file:///stopwords/english based on its file
extension; use the "format" argument to specify the format explicitly.

它可能在从 Lambda zip 加载数据时遇到问题并需要将其存储在外部......比如在 S3 上,但这似乎有点奇怪。

不知道什么格式

有谁知道我可能哪里出错了?

最佳答案

另一种解决方案是在/tmp 位置使用 Lambda 的临时存储

所以,你会得到这样的东西:

import nltk

nltk.data.path.append("/tmp")
nltk.download("punkt", download_dir="/tmp")

在运行时,punkt 将下载到/tmp 目录,该目录是可写的。但是,如果您的并发量很大,这可能不是一个很好的解决方案。

关于python - 在 Python 中将 NLTK 语料库与 AWS Lambda 函数结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42382662/

相关文章:

amazon-web-services - Lambda 错误未触发 Lambda 目标

python - 如何检测文本是否旋转 180 度或上下颠倒

python 2.6 - 打印法语字符

python - 轮廓中点之间的距离opencv

python - 类型错误 : classify() missing 1 required positional argument: 'featureset'

python - 从 NTLK pos_tag 中仅删除 'NN' 个单词

node.js - Lambda 函数未返回对 Alexa 技能的响应

python - 如何使用 PyTorch 构建 LSTM AutoEncoder?

nlp - 我可以使用 NLTK 来确定评论是正面评论还是负面评论吗?

mysql - 选择包含用户信息和媒体的帖子