Come configurare la directory dei dati nltk dal codice?


Risposte:


73

Basta cambiare gli elementi di nltk.data.path, è un semplice elenco.


30
o imposta la variabile d'ambiente NLTK_DATA.
schemacs

Il mio nltk.data.path ha '/home/aankney/nltk_data'come primo elemento della lista MA sono su un server e voglio nltk_dataessere condiviso da altre persone che usano il server. Come posso impedire a nltk di usarlo come uno dei percorsi di download?
Austin A

43

Dal codice, 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``.

Quindi all'interno del codice:

######################################################################
# 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')
    ]

Per modificare il percorso, è sufficiente aggiungere all'elenco dei possibili percorsi:

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

O in Windows:

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

Quale directory conterrebbe questo file?
hlin117

è nel codice sorgente originale di NLTK. Vai alla directory in cui salvi il codice sorgente, quindi vai anltk/nltk/data
alvas

dare un'occhiata a magically_find_nltk_data()da stackoverflow.com/questions/36382937/...
alvas

28

Uso append, esempio

nltk.data.path.append('/libs/nltk_data/')

15

Invece di aggiungere nltk.data.path.append('your/path/to/nltk_data')a ogni script, NLTK accetta la variabile di ambiente NLTK_DATA. ( link codice )

Apri ~/.bashrc(o ~/.profile) con un editor di testo (ad es nano. vim, gedit) E aggiungi la seguente riga:

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

Esegui sourceper caricare la variabile ambientale

source ~/.bashrc


Test

Apri python ed esegui le seguenti righe

import nltk
nltk.data.path

Puoi vedere il tuo percorso dati nltk già lì.

Riferimento: risposta di @ alvations su nltk / nltk # 1997


1

Per coloro che utilizzano uwsgi:

Avevo problemi perché volevo che un'app uwsgi (eseguita come un utente diverso da me) avesse accesso ai dati nltk che avevo scaricato in precedenza. Ciò che ha funzionato per me è stato l'aggiunta della seguente riga a myapp_uwsgi.ini:

env = NLTK_DATA=/home/myuser/nltk_data/

Questo imposta la variabile d'ambiente NLTK_DATA, come suggerito da @schemacs.
Potrebbe essere necessario riavviare il processo uwsgi dopo aver apportato questa modifica.


0

Un'altra soluzione è anticiparla.

prova a importare nltk nltk.download ()

Quando si apre la finestra che chiede se si desidera scaricare il corpus, è possibile specificare in quale directory deve essere scaricato.


0

Usando il consiglio di fnjn sopra per stampare il percorso:

print(nltk.data.path)

Ho visto le stringhe di percorso in questo tipo di formato su Windows:

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

Quindi ho cambiato il mio percorso dal tipo python barra in avanti '/', a una doppia barra rovesciata '\\' quando ho usato path.append:

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

L'eccezione è andata via.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.