我正在编写一个 python 脚本来分析一段文本并以 JSON 格式返回数据。我正在使用 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”后,我的脚本仍然给我同样的错误。我在这里尝试了解决方案:
优化Python脚本提取和处理大数据文件 https://stackoverflow.com/questions/15905075/optimizing-python-script-extracting-and-processing-large-data-files
但问题是,nltk_data 文件夹很大,而 lambda 有大小限制。
我该如何解决这个问题?
或者我还可以在哪里使用我的脚本并仍然集成 API 调用?
我正在使用无服务器来部署我的 python 脚本。
您可以做两件事:
- 这些错误似乎路径没有正确定义,也许将其设置为环境变量?
sys.path.append(os.path.abspath('/var/task/nltk_data/')
或者这样
一旦你跑了nltk.download()
,然后将其复制到 AWS lambda 应用程序的根文件夹。 (将该目录命名为“nltk_data”。)
在 lambda 函数仪表板(在 AWS 控制台中)中,添加NLTK_DATA
=./nltk_data
作为 key-var 环境变量。
-
减少 nltk 下载的大小,因为您不需要所有这些。
删除所有 zip 文件,仅保留所需部分,例如:停用词。可以将其移至:save nltk_data/corpora/stopwords
并删除其余部分。
或者如果您需要标记器保存到nltk_data/tokenizers/punkt
。其中大部分可以单独下载:python -m nltk.downloader punkt
,然后复制文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)