Мой nltk.data.path имеет '/home/aankney/nltk_data'в качестве первого элемента списка, НО я нахожусь на сервере и хочу, nltk_dataчтобы другие люди, использующие сервер, использовали его. Как мне запретить nltk использовать это как один из путей загрузки?
``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')
]
Чтобы изменить путь, просто добавьте к списку возможных путей:
У меня были проблемы, потому что я хотел, чтобы приложение uwsgi (работающее под другим пользователем, чем я) имело доступ к данным nltk, которые я ранее загрузил. Для меня сработало добавление следующей строки myapp_uwsgi.ini:
env = NLTK_DATA=/home/myuser/nltk_data/
Это устанавливает переменную среды NLTK_DATA, как предлагает @schemacs.
После внесения этого изменения вам может потребоваться перезапустить процесс uwsgi.
Ответы:
Просто измените элементы
nltk.data.path
, это простой список.источник
'/home/aankney/nltk_data'
в качестве первого элемента списка, НО я нахожусь на сервере и хочу,nltk_data
чтобы другие люди, использующие сервер, использовали его. Как мне запретить nltk использовать это как один из путей загрузки?Из кода http://www.nltk.org/_modules/nltk/data.html :
Затем в коде:
###################################################################### # 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")
источник
nltk/nltk/data
magically_find_nltk_data()
от stackoverflow.com/questions/36382937/...Я использую добавление, пример
nltk.data.path.append('/libs/nltk_data/')
источник
Вместо добавления
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
для загрузки переменной окруженияКонтрольная работа
Откройте python и выполните следующие строки
import nltk nltk.data.path
Вы можете увидеть свой путь к данным nltk уже там.
Ссылка: ответ @alvations на nltk / nltk # 1997
источник
Для тех, кто использует uwsgi:
У меня были проблемы, потому что я хотел, чтобы приложение uwsgi (работающее под другим пользователем, чем я) имело доступ к данным nltk, которые я ранее загрузил. Для меня сработало добавление следующей строки
myapp_uwsgi.ini
:Это устанавливает переменную среды
NLTK_DATA
, как предлагает @schemacs.После внесения этого изменения вам может потребоваться перезапустить процесс uwsgi.
источник
Другое решение - опередить его.
попробуйте import nltk nltk.download ()
Когда появится окно с вопросом, хотите ли вы загрузить корпус, вы можете указать там, в какой каталог он должен быть загружен.
источник
Используя приведенный выше совет fnjn по распечатке пути:
Я видел строки пути в этом формате в Windows:
Поэтому я переключил свой путь с прямой косой черты типа python '/' на двойную обратную косую черту '\\', когда я использовал path.append:
nltk.data.path.append("C:\\workspace\\my_project\\data\\nltk_books")
Исключение исчезло.
источник