我正在编写一个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脚本。
您可以做两件事:
- 这些错误似乎没有正确定义路径,可能将其设置为env变量
sys.path.append(os.path.abspath('/var/task/nltk_data/')
或者这样
-
运行
nltk.download()
后,将其复制到AWS lambda应用程序的根文件夹中。(将目录命名为"nltk_data"。) -
在lambda函数面板(在AWS控制台中)中,添加
NLTK_DATA
=./nltk_data
作为关键字var Environment Variable。
减少nltk下载的大小,因为您不需要所有下载。
-
删除所有zip文件,只保留所需的部分,例如:stopwwords。可以移动到:
save nltk_data/corpora/stopwords
并删除其余部分。 -
或者,如果您需要令牌化器,请保存到
nltk_data/tokenizers/punkt
。其中大多数可以单独下载:python -m nltk.downloader punkt
,然后通过文件进行复制。