Come configurare la directory dei dati nltk dal codice?
Come configurare la directory dei dati nltk dal codice?
Risposte:
Basta cambiare gli elementi di nltk.data.path
, è un semplice elenco.
'/home/aankney/nltk_data'
come primo elemento della lista MA sono su un server e voglio nltk_data
essere condiviso da altre persone che usano il server. Come posso impedire a nltk di usarlo come uno dei percorsi di download?
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")
nltk/nltk/data
magically_find_nltk_data()
da stackoverflow.com/questions/36382937/...
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 source
per caricare la variabile ambientale
source ~/.bashrc
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
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.
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.