AWS Lambda中的NLTK软件包因将字符串分成句子而遇到问题。我认为问题与我的lambda中nltk_data的路径不正确有关。
我尝试了这篇SO帖子-Paths in AWS lambda with Python NLTK中提到的所有解决方案 但不幸的是,这没有帮助
我为lambda构建了一个包含nltk的图层。此外,我下载了nltk_data
并将其放在执行zip的根目录下。
nltk_data包含以下对我有用的文件(由于不需要它们,我删除了所有其他模块)-
\nltk_data\tokenizers\punkt\english.pickle
\nltk_data\tokenizers\punkt\PY3\english.pickle
我还根据建议here (accepted answer from the post above)更新了data.py
库中的nltk
else:
# Common locations on UNIX & OS X:
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的相关lambda代码-
import nltk
from nltk import sent_tokenize
nltk.data.path.append("/var/task/nltk_data/")
def break_paragraph(input_text):
sent_text = sent_tokenize(input_text)
for sentence in sent_text:
print(sentence)
这将从Lambda日志输出中返回以下错误-
{
"errorMessage": "\n**********************************************************************\n
Resource \u001b[93mpunkt\u001b[0m not found.\n Please use the NLTK Downloader to obtain the
resource:\n\n \u001b[31m>>> import nltk\n >>> nltk.download('punkt')\n \u001b[0m\n For more
information see: https://www.nltk.org/data.html\n\n Attempted to load
\u001b[93mtokenizers/punkt/PY3/english.pickle\u001b[0m\n\n Searched in:\n -
'/home/sbx_user1051/nltk_data'\n - '/var/task/nltk_data'\n - '/var/task/nltk_data/'\n
- '/nltk_data'\n -
''\n**********************************************************************\n",
}
有人可以告诉我我想念什么吗?