在Python中将NLTK send_tokenize与AWS Lambda函数一起使用

时间:2019-12-06 06:25:57

标签: python python-3.x amazon-web-services aws-lambda nltk

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",
}

有人可以告诉我我想念什么吗?

0 个答案:

没有答案