Jak skonfigurować katalog danych nltk z kodu?
Jak skonfigurować katalog danych nltk z kodu?
Odpowiedzi:
Po prostu zmień pozycje nltk.data.path
, to prosta lista.
'/home/aankney/nltk_data'
jako pierwszy element listy, ALE jestem na serwerze i chcę nltk_data
być udostępniony innym osobom korzystającym z serwera. Jak zapobiec używaniu tego przez nltk jako jednej ze ścieżek pobierania?
Z kodu, 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``.
Następnie w kodzie:
######################################################################
# 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')
]
Aby zmodyfikować ścieżkę, po prostu dołącz do listy możliwych ścieżek:
import nltk
nltk.data.path.append("/home/yourusername/whateverpath/")
Lub w oknach:
import nltk
nltk.data.path.append("C:\somewhere\farfar\away\path")
nltk/nltk/data
magically_find_nltk_data()
z stackoverflow.com/questions/36382937/...
Zamiast dodawać nltk.data.path.append('your/path/to/nltk_data')
do każdego skryptu, NLTK akceptuje zmienną środowiskową NLTK_DATA. ( link do kodu )
Otwarte ~/.bashrc
(lub ~/.profile
) z edytora tekstu (np nano
, vim
, gedit
), a następnie dodaj następującą linię:
export NLTK_DATA="your/path/to/nltk_data"
Wykonaj, source
aby załadować zmienną środowiskową
source ~/.bashrc
Otwórz Pythona i wykonaj następujące linie
import nltk
nltk.data.path
Możesz zobaczyć swoją ścieżkę danych nltk już tam.
Odniesienie: odpowiedź @ alvations na nltk / nltk # 1997
Dla osób używających uwsgi:
Miałem problem, ponieważ chciałem, aby aplikacja uwsgi (działająca jako inny użytkownik niż ja) miała dostęp do danych nltk, które wcześniej pobrałem. U mnie zadziałało dodanie następującego wiersza do myapp_uwsgi.ini
:
env = NLTK_DATA=/home/myuser/nltk_data/
To ustawia zmienną środowiskową NLTK_DATA
, zgodnie z sugestią @schemacs.
Po wprowadzeniu tej zmiany może być konieczne ponowne uruchomienie procesu uwsgi.
Korzystając z powyższej rady fnjn dotyczącej drukowania ścieżki:
print(nltk.data.path)
Widziałem ciągi ścieżek w tego typu formacie w systemie Windows:
C:\\Users\\my_user_name\\AppData\\Roaming\\SPB_Data
Więc zmieniłem ścieżkę z ukośnika typu Python „/” na podwójny lewy ukośnik „\\”, kiedy użyłem path.append:
nltk.data.path.append("C:\\workspace\\my_project\\data\\nltk_books")
Wyjątek zniknął.