Як налаштувати каталог даних nltk з коду?


Відповіді:


71

Просто змініть елементи nltk.data.path, це простий список.


29
або встановити змінну середовища NLTK_DATA.
schemacs

Мій nltk.data.path є '/home/aankney/nltk_data'першим елементом списку, АЛЕ я перебуваю на сервері і хочу, nltk_dataщоб до нього ділились інші люди, що використовують сервер. Як запобігти використанню nltk як одного із шляхів завантаження?
Остін A

41

З коду, 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/")

Або у вікнах:

import nltk
nltk.data.path.append("C:\somewhere\farfar\away\path")

Який каталог міститиме цей файл?
hlin117

це в оригінальному вихідному коді NLTK. Перейдіть до каталогу, де ви зберігаєте вихідний код, а потім перейдіть доnltk/nltk/data
alvas

подивіться на magically_find_nltk_data()від stackoverflow.com/questions/36382937 / ...
Alvas


14

Замість додавання 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


1

Для тих, хто використовує uwsgi:

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

env = NLTK_DATA=/home/myuser/nltk_data/

Це встановлює змінну середовища NLTK_DATA, як пропонує @schemacs.
Можливо, вам доведеться перезапустити процес uwsgi після внесення цієї зміни.


0

Іншим рішенням є випередження.

спробуйте імпортувати nltk nltk.download ()

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


0

Використовуючи наведені вище поради fnjn щодо роздрукування шляху:

print(nltk.data.path)

Я бачив рядки шляхів у такому форматі у вікнах:

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

Отже, я переключився зі шляху косої риски типу «/» на подвійну косу риску «\\», коли використовував path.append:

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

Виняток зник.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.