如何在Heroku中安装NLTK模块

use*_*082 9 python heroku nltk

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

Ken*_*itz 9

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

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


Mic*_*all 5

更新资料

正如Kenneth Reitz所指出的那样,在heroku-python-buildpack中添加一个更为简单的解决方案。将nltk.txt文件添加到您的根目录,并在其中列出您的语料库。有关详细信息,请参见https://devcenter.heroku.com/articles/python-nltk


原始答案

这是一个解决方案,可让您直接在Heroku上安装NLTK数据,而无需将其添加到git repo中。

我使用了类似的步骤在Heroku 上安装Textblob,后者使用NLTK作为依赖项。在第3步和第4步中,我对原始代码进行了一些小的调整,这些调整应仅适用于NLTK安装。

默认的Heroku buildpack包括post_compile,经过所有的默认构建步骤运行已完成:

# 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
Run Code Online (Sandbox Code Playgroud)

如您所见,它将在项目目录中查找目录中您自己的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"
    
    Run Code Online (Sandbox Code Playgroud)
  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"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 添加nltk到您的requirements.txt文件(或者textblob如果您正在使用Textblob)。

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

    $ heroku config:set NLTK_DATA='/app/nltk_data'
    
    Run Code Online (Sandbox Code Playgroud)
  7. 部署到Heroku。您将post_compile在部署结束时看到步骤触发器,然后下载nltk。

希望对您有所帮助!请享用!