У меня была такая же проблема. В итоге у меня сработало создание каталога «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/
. Если вы используете загрузчик с графическим интерфейсом, каталог загрузки задается в текстовом поле в нижней части пользовательского интерфейса. Если вы используете командную строку, вы устанавливаете ее в меню конфигурации.
Как только загрузчик узнает, что он указывает на ваш только что созданный каталог nltk_data
, загрузите свой корпус.
Или за один шаг из кода Python:
nltk.download("wordnet", "whatever_the_absolute_path_to_myapp_is/nltk_data/")
Шаг 3. Сообщите nltk, где искать
ntlk
ищет данные, ресурсы и т. д. в местах, указанных в переменной nltk.data.path
. Все, что вам нужно сделать, это добавить nltk.data.path.append('./nltk_data/')
в файл python, используя nltk, и он будет искать корпуса, токенизаторы и тому подобное в дополнение к путям по умолчанию.
Шаг 4. Отправьте его в Heroku
git add nltk_data/
git commit -m 'super useful commit message'
git push heroku master
Это должно сработать! Во всяком случае, это помогло мне. Стоит отметить, что путь от файла python, выполняющего nltk, до каталога nltk_data может отличаться в зависимости от того, как вы структурировали свое приложение, поэтому просто учитывайте это, когда делаете nltk.data.path.append('path_to_nltk_data')
person
follyroof
schedule
14.02.2013