Как настроить каталог данных nltk из кода?

Как настроить каталог данных nltk из кода?


person Juanjo Conti    schedule 19.08.2010    source источник
comment
Связано: Изменить каталог пути nltk.download () по умолчанию ~ / ntlk_data   -  person smci    schedule 02.11.2017


Ответы (7)


arrow_upward
74
arrow_downward

Просто измените элементы nltk.data.path, это простой список.

person Tim McNamara    schedule 11.10.2010
comment
или установите переменную окружения NLTK_DATA. - person schemacs; 16.10.2013
comment
В моем nltk.data.path первым элементом списка является '/home/aankney/nltk_data', НО я нахожусь на сервере и хочу, чтобы nltk_data был доступен другим людям, использующим сервер. Как мне запретить nltk использовать это как один из путей загрузки? - person Austin A; 17.06.2015

arrow_upward
46
arrow_downward

Из кода http://www.nltk.org/_modules/nltk/data.html:

``nltk:path``: Specifies the file stored in the NLTK data
 package at *path*.  NLTK will search for these files in the
 directories specified by ``nltk.data.path``.

Затем в коде:

######################################################################
# Search Path
######################################################################

path = []
"""A list of directories where the NLTK data package might reside.
   These directories will be checked in order when looking for a
   resource in the data package.  Note that this allows users to
   substitute in their own versions of resources, if they have them
   (e.g., in their home directory under ~/nltk_data)."""

# User-specified locations:
path += [d for d in os.environ.get('NLTK_DATA', str('')).split(os.pathsep) if d]
if os.path.expanduser('~/') != '~/':
    path.append(os.path.expanduser(str('~/nltk_data')))

if sys.platform.startswith('win'):
    # Common locations on Windows:
    path += [
        str(r'C:\nltk_data'), str(r'D:\nltk_data'), str(r'E:\nltk_data'),
        os.path.join(sys.prefix, str('nltk_data')),
        os.path.join(sys.prefix, str('lib'), str('nltk_data')),
        os.path.join(os.environ.get(str('APPDATA'), str('C:\\')), str('nltk_data'))
    ]
else:
    # Common locations on UNIX & OS X:
    path += [
        str('/usr/share/nltk_data'),
        str('/usr/local/share/nltk_data'),
        str('/usr/lib/nltk_data'),
        str('/usr/local/lib/nltk_data')
    ]

Чтобы изменить путь, просто добавьте его к списку возможных путей:

import nltk
nltk.data.path.append("/home/yourusername/whateverpath/")

Или в windows:

import nltk
nltk.data.path.append("C:\somewhere\farfar\away\path")
person alvas    schedule 10.04.2014
comment
В каком каталоге будет находиться этот файл? - person hlin117; 10.08.2014
comment
это в исходном исходном коде NLTK. Перейдите в каталог, в котором вы сохранили исходный код, затем перейдите в nltk/nltk/data - person alvas; 10.08.2014
comment
взгляните на magically_find_nltk_data() из stackoverflow.com/questions/36382937/ - person alvas; 04.04.2016

arrow_upward
28
arrow_downward

Я использую добавление, пример

nltk.data.path.append('/libs/nltk_data/')
person bahlum    schedule 10.04.2014

arrow_upward
17
arrow_downward

Вместо добавления nltk.data.path.append('your/path/to/nltk_data') к каждому сценарию NLTK принимает переменную среды NLTK_DATA. (кодовая ссылка)

Откройте ~/.bashrc (или ~/.profile) с помощью текстового редактора (например, nano, vim, gedit) и добавьте следующую строку:

export NLTK_DATA="your/path/to/nltk_data"

Выполните source, чтобы загрузить переменную окружения

source ~/.bashrc


Контрольная работа

Откройте python и выполните следующие строки

import nltk
nltk.data.path

Вы можете увидеть свой путь к данным nltk уже там.

Ссылка: ответ @alvations на nltk / nltk # 1997

person fnjn    schedule 02.04.2018

arrow_upward
1
arrow_downward

Для тех, кто использует uwsgi:

У меня были проблемы, потому что я хотел, чтобы приложение uwsgi (работающее под другим пользователем, чем я) имело доступ к данным nltk, которые я ранее загрузил. Для меня сработало добавление следующей строки в myapp_uwsgi.ini:

env = NLTK_DATA=/home/myuser/nltk_data/

Это устанавливает переменную среды NLTK_DATA, как это предлагает @schemacs.
Вам может потребоваться перезапустить процесс uwsgi после внесения этого изменения.

person danyamachine    schedule 20.06.2017

arrow_upward
0
arrow_downward

Другое решение - опередить это.

попробуйте import nltk nltk.download ()

Когда появится окно с вопросом, хотите ли вы загрузить корпус, вы можете указать там, в какой каталог он должен быть загружен.

person Steve    schedule 05.06.2019

arrow_upward
0
arrow_downward

Используя приведенный выше совет fnjn по распечатке пути:

print(nltk.data.path)

Я видел строки пути в этом формате в Windows:

C:\\Users\\my_user_name\\AppData\\Roaming\\SPB_Data

Поэтому я переключил свой путь с прямой косой черты типа python '/' на двойную обратную косую черту '\\', когда я использовал path.append:

nltk.data.path.append("C:\\workspace\\my_project\\data\\nltk_books")

Исключение ушло.

person Odysseus Ithaca    schedule 09.10.2020