私はちょうどこれと同じ問題を抱えていました。私にとってうまくいったのは、アプリケーションのフォルダー自体に「nltk_data」ディレクトリを作成し、コーパスをそのディレクトリにダウンロードし、コードに行を追加して、nltk がそのディレクトリを調べることを知らせることです。これをすべてローカルで実行してから、変更を Heroku にプッシュできます。
したがって、私の python アプリケーションが「myapp/」というディレクトリにあるとします。
ステップ 1: ディレクトリを作成する
cd myapp/
mkdir nltk_data
ステップ 2: コーパスを新しいディレクトリにダウンロードする
python -m nltk.downloader
これにより、ダウンローダーがポップアップしnltk
ます。ダウンロード ディレクトリを に設定しますwhatever_the_absolute_path_to_myapp_is/nltk_data/
。GUI ダウンローダを使用している場合、ダウンロード ディレクトリは UI の下部にあるテキスト フィールドで設定されます。コマンドラインを使用している場合は、構成メニューで設定します。
ダウンローダーが、新しく作成されたディレクトリを指すことを認識したら、nltk_data
コーパスをダウンロードします。
または、Python コードから 1 ステップで:
nltk.download("wordnet", "whatever_the_absolute_path_to_myapp_is/nltk_data/")
ステップ 3: nltk にどこを見ればよいかを知らせる
ntlk
データ、リソースなどを探します。nltk.data.path
変数で指定された場所。nltk.data.path.append('./nltk_data/')
実際に nltk を使用して python ファイルに追加するだけで、デフォルト パスに加えてコーパス、トークナイザーなどが検索されます。
ステップ 4: Heroku に送信する
git add nltk_data/
git commit -m 'super useful commit message'
git push heroku master
それはうまくいくはずです!とにかくそれは私のためにしました。注目すべきことの 1 つは、nltk を実行する python ファイルから nltk_data ディレクトリへのパスが、アプリケーションの構造によって異なる可能性があることです。nltk.data.path.append('path_to_nltk_data')