在AWS Lambda中使用NLTK语料库(特别是停用词)时,我遇到了一个困难。我知道需要下载语料库,并且已经使用NLTK.download('stopwords')完成了下载,并将它们包含在用于上传nltk_data/ corpora /stopwords中的lambda模块的压缩文件中。
代码中的用法如下:
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'
**********************************************************************我还尝试通过包含以下内容来直接加载数据
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上,但这似乎有点奇怪。
知道什么格式的
有谁知道我可能会出错的地方吗?
发布于 2017-08-29 05:35:28
我以前也遇到过同样的问题,但我使用环境变量解决了它。
为此,您可以使用以下代码
import nltk
nltk.download('punkt', download_dir='nltk_data/')这将下载'punkit‘到你的根目录,然后放在下面的dockerfile中
COPY nltk_data ./nltk_data
发布于 2019-03-20 09:48:57
另一种解决方案是在位置/tmp使用Lambda的临时存储
所以,你会有这样的东西:
import nltk
import json
from nltk.tokenize import word_tokenize
nltk.data.path.append("/tmp")
nltk.download("punkt", download_dir = "/tmp")在运行时,punkt将下载到/tmp目录,该目录是可写的。然而,如果你有巨大的并发性,这可能不是一个很好的解决方案。
发布于 2017-07-13 07:47:06
在AWS Lambda上,您需要在lambda中包含nltk python包,并修改data.py:
path += [
str('/usr/share/nltk_data'),
str('/usr/local/share/nltk_data'),
str('/usr/lib/nltk_data'),
str('/usr/local/lib/nltk_data')
]至
path += [
str('/var/task/nltk_data')
#str('/usr/share/nltk_data'),
#str('/usr/local/share/nltk_data'),
#str('/usr/lib/nltk_data'),
#str('/usr/local/lib/nltk_data')
]您不能包含整个nltk_data目录,删除所有压缩文件,如果您只需要停用字,则保存nltk_data ->语料库->停用字并转储其余部分。如果您需要令牌化器,请保存nltk_data ->令牌化器-> punkt。要下载nltk_data文件夹,请使用anaconda Jupyter notebook并运行
nltk.download()
或
https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/corpora/stopwords.zip
或
python -m nltk.downloader allhttps://stackoverflow.com/questions/42382662
复制相似问题