Як налаштувати каталог даних nltk з коду?
Як налаштувати каталог даних nltk з коду?
Відповіді:
Просто змініть елементи nltk.data.path
, це простий список.
'/home/aankney/nltk_data'
першим елементом списку, АЛЕ я перебуваю на сервері і хочу, nltk_data
щоб до нього ділились інші люди, що використовують сервер. Як запобігти використанню nltk як одного із шляхів завантаження?
З коду, 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")
nltk/nltk/data
magically_find_nltk_data()
від stackoverflow.com/questions/36382937 / ...
Замість додавання 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
Для тих, хто використовує uwsgi:
У мене були проблеми, оскільки я хотів, щоб програма uwsgi (яка працює як інший користувач, ніж я) мала доступ до даних nltk, які я раніше завантажував. Мені вдалося додати наступний рядок до myapp_uwsgi.ini
:
env = NLTK_DATA=/home/myuser/nltk_data/
Це встановлює змінну середовища NLTK_DATA
, як пропонує @schemacs.
Можливо, вам доведеться перезапустити процес uwsgi після внесення цієї зміни.
Використовуючи наведені вище поради 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")
Виняток зник.