【发布时间】:2013-08-22 15:51:20
【问题描述】:
嘿,我想在我的 Heroku 服务器上安装 NLTK pos_tag。我怎么能这样做。请给我作为 Heroku 服务器系统新手的步骤。
【问题讨论】:
嘿,我想在我的 Heroku 服务器上安装 NLTK pos_tag。我怎么能这样做。请给我作为 Heroku 服务器系统新手的步骤。
【问题讨论】:
我刚刚在 buildpack 中添加了官方 nltk 支持!
只需添加一个nltk.txt 文件,其中包含您要安装的语料库列表,一切都会按预期工作。
【讨论】:
As Kenneth Reitz pointed out,在 heroku-python-buildpack 中添加了一个更简单的解决方案。将nltk.txt 文件添加到您的根目录并在其中列出您的语料库。详情请见https://devcenter.heroku.com/articles/python-nltk。
这是一个解决方案,允许您直接在 Heroku 上安装 NLTK 数据,而无需将其添加到您的 git 存储库中。
我使用类似的步骤在 Heroku 上安装 Textblob,它使用 NLTK 作为依赖项。我在第 3 步和第 4 步中对我的原始代码进行了一些小调整,这些调整应该适用于仅 NLTK 的安装。
默认的 heroku buildpack 包含一个 post_compile step,它在所有默认构建步骤完成后运行:
# post_compile
#!/usr/bin/env bash
if [ -f bin/post_compile ]; then
echo "-----> Running post-compile hook"
chmod +x bin/post_compile
sub-env bin/post_compile
fi
如您所见,它会在您的项目目录中查找您自己的 post_compile 文件,该文件位于 bin 目录中,如果存在则运行它。你可以使用这个钩子来安装 nltk 数据。
在本地项目的根目录中创建bin 目录。
将您自己的post_compile 文件添加到bin 目录。
# bin/post_compile
#!/usr/bin/env bash
if [ -f bin/install_nltk_data ]; then
echo "-----> Running install_nltk_data"
chmod +x bin/install_nltk_data
bin/install_nltk_data
fi
echo "-----> Post-compile done"
将您自己的install_nltk_data 文件添加到bin 目录。
# bin/install_nltk_data
#!/usr/bin/env bash
source $BIN_DIR/utils
echo "-----> Starting nltk data installation"
# Assumes NLTK_DATA environment variable is already set
# $ heroku config:set NLTK_DATA='/app/nltk_data'
# Install the nltk data
# NOTE: The following command installs the averaged_perceptron_tagger corpora,
# so you may want to change for your specific needs.
# See http://www.nltk.org/data.html
python -m nltk.downloader averaged_perceptron_tagger
# If using Textblob, use this instead:
# python -m textblob.download_corpora lite
# Open the NLTK_DATA directory
cd ${NLTK_DATA}
# Delete all of the zip files
find . -name "*.zip" -type f -delete
echo "-----> Finished nltk data installation"
将nltk 添加到您的requirements.txt 文件(如果您使用的是Textblob,则添加textblob)。
将所有这些更改提交到您的存储库。
在您的 heroku 应用上设置 NLTK_DATA 环境变量。
$ heroku config:set NLTK_DATA='/app/nltk_data'
部署到 Heroku。您将在部署结束时看到 post_compile 步骤触发器,然后是 nltk 下载。
我希望这对您有所帮助!享受吧!
【讨论】:
如果您想使用简单的功能,例如 pos_tag、tokenizer、词干提取等,那么您可以执行以下步骤
【讨论】:
nltk.data、nltk.word_tokenize、nltk.post_tag、nltk.sentiment。你知道在这种情况下我应该在nltk.txt 文件中包含什么吗?
nltk.txt中提到的所需包,请查看heroku日志(转到网站中的应用>更多>查看日志),然后查看细节。例如。如果你缺少punkt,它会说:nltk.download('punkt'),所以你在nltk.txt等中添加punkt。我最终只需要punkt,vader_lexicon,averaged_perceptron_tagger
您需要按照以下步骤操作。
更改行尾是非常重要的一步。可以通过 Sublime Text 或 Notepad++ 轻松完成。在 Sublime Text 中,可以从 View 菜单完成,然后是 Line Endings。
希望对你有帮助
【讨论】: