如何在Heroku中安装NLTK模块

时间:2013-08-22 15:51:20

标签: python heroku nltk

嘿,我想在我的Heroku服务器上安装NLTK pos_tag。我怎么能这样做。请给我一些新的Heroku服务器系统的步骤。

5 个答案:

答案 0 :(得分:9)

我刚刚对buildpack添加了官方nltk支持!

只需添加一个nltk.txt文件,其中包含您要安装的语料库列表,一切都应该按预期工作。

答案 1 :(得分:4)

更新

As Kenneth Reitz pointed out,一个更简单的解决方案已被添加到heroku-python-buildpack中。将nltk.txt文件添加到根目录并在其中列出您的语料库。有关详细信息,请参阅https://devcenter.heroku.com/articles/python-nltk

原始答案

这是一个解决方案,允许您直接在Heroku上安装NLTK数据,而无需将其添加到您的git仓库。

我使用类似的步骤在Heroku上安装Textblob,Heroku使用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数据。

  1. 在本地项目的根目录中创建bin目录。

  2. 将您自己的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"
    
  3. 将您自己的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"
    
  4. nltk添加到requirements.txt文件中(如果您使用的是Textblob,则为textblob)。

  5. 将所有这些更改提交给您的回购。
  6. 在heroku应用程序上设置NLTK_DATA环境变量。

    $ heroku config:set NLTK_DATA='/app/nltk_data'
    
  7. 部署到Heroku。您将在部署结束时看到post_compile步骤触发器,然后是nltk下载。
  8. 我希望你发现这有用!享受!

答案 2 :(得分:1)

按照Installing NLTK on Heroku上的说明进行操作,或查看heroku-buildpack-python-sklearn存储库

答案 3 :(得分:1)

如果您想使用pos_tag,tokenizer,stemming等简单功能,那么您可以执行以下步骤

  1. 在requirements.txt中提及nltk
  2. 在nltk.txt中提及以下模块
    • WordNet的
    • pros_cons
    • 路透社
    • hmm_treebank_pos_tagger
    • maxent_treebank_pos_tagger
    • universal_tagset
    • punkt
    • averaged_perceptron_tagger_ru
    • averaged_perceptron_tagger
    • snowball_data
    • rslp
    • porter_test
    • vader_lexicon
    • treebank
    • dependency_treebank

答案 4 :(得分:0)

您需要执行以下步骤。

  1. nltk.txt需要显示在根文件夹中
  2. 将要下载的模块(如punkt,停用词)添加为单独的行项
  3. 将以Windows结尾的行更改为UNIX

更改行尾是非常重要的一步。可以通过Sublime Text或Notepad ++轻松完成。在Sublime Text中,可以从“查看”菜单中选择“行尾”。

希望这会有所帮助