如何在Heroku中使用NLTK的Stanford NLP工具?

时间:2017-06-28 11:30:57

标签: java python heroku nltk stanford-nlp

我正在使用Python开发一个聊天机器人(用于Kik信使),最近我将我的应用程序移到了Heroku,就像this question中所描述的那样。另外,我已经包含了NLTK(Python模块)及其the Heroku documentation中描述的一些资源。到目前为止,事情很好地工作,聊天机器人应用程序在Kik信使中响应。

下一步,我想将Stanford NLP的工具与他们的NLTK API一起使用。 Stanford NLP工具与几个模型文件一起作为Java存储库提供。在本地,我根据this answer设置API后完成了此操作。不过,我不知道如何为Heroku做这个。 Heroku关于如何部署可执行jar文件有a documentation,但我不知道如何将它应用于我的问题。

我想要使用的实际函数是我在本地调用的Stanford解析器:

from nltk.parse.stanford import StanfordParser
parser=StanfordParser(model_path="edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz")

这是我关于SO的第一个问题,所以请告诉我是否以及如何编辑此问题以便更容易回答。

编辑:在更一般的层面上,我有一个Python应用程序,我在Heroku云服务上运行(使用临时文件系统),并希望包含一个Java存储库。

2 个答案:

答案 0 :(得分:0)

您需要在构建时下载JAR文件并将其包含在应用中。从您链接到的答案中可以看出,您可以使用以下内容执行此操作:

import nltk
nltk.download()

您还需要将JVM buildpack添加到您的应用中:

$ heroku buildpacks:add heroku/jvm

答案 1 :(得分:0)

在我的情况下,使用删除model.jar文件中不必要的类文件。 在stanford-parser目录中使用此代码,并使jar文件小于100 MB,这是每次推送github的限制。

jar tf stanford-parser-3.6.0-models.jar

并使用此命令删除不必要的类文件

zip -d stanford-parser-3.6.0-models.jar edu/stanford/path/to/file

将您的文件推送到github并部署到您的应用程序。