¿Cómo configurar el directorio de datos nltk desde el código?


Respuestas:


71

Simplemente cambie los elementos de nltk.data.path, es una lista simple.


29
o establezca la variable de entorno NLTK_DATA.
schemacs

Mi nltk.data.path tiene '/home/aankney/nltk_data'como primer elemento de la lista, PERO estoy en un servidor y quiero nltk_dataque otras personas lo compartan. ¿Cómo evito que nltk use esto como una de las rutas de descarga?
Austin A

41

Desde el código, 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``.

Luego, dentro del código:

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

Para modificar la ruta, simplemente agregue a la lista de posibles rutas:

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

O en windows:

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

¿Qué directorio contendría este archivo?
hlin117

está en el código fuente original de NLTK. Vaya al directorio donde guarda el código fuente y luego vaya anltk/nltk/data
alvas

echar un vistazo a magically_find_nltk_data()partir stackoverflow.com/questions/36382937/...
alvas

28

Yo uso adjuntar, ejemplo

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

14

En lugar de agregar nltk.data.path.append('your/path/to/nltk_data')a cada script, NLTK acepta la variable de entorno NLTK_DATA. ( enlace de código )

Abierta ~/.bashrc(o ~/.profile) con el editor de texto (por ejemplo nano, vim, gedit), y añadir la línea siguiente:

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

Ejecutar sourcepara cargar la variable ambiental

source ~/.bashrc


Prueba

Abra Python y ejecute las siguientes líneas

import nltk
nltk.data.path

Puede ver su ruta de datos nltk ya allí.

Referencia: respuesta de @ alvations en nltk / nltk # 1997


1

Para aquellos que usan uwsgi:

Tenía problemas porque quería que una aplicación uwsgi (que se ejecutaba como un usuario diferente al mío) tuviera acceso a los datos de nltk que había descargado previamente. Lo que funcionó para mí fue agregar la siguiente línea a myapp_uwsgi.ini:

env = NLTK_DATA=/home/myuser/nltk_data/

Esto establece la variable de entorno NLTK_DATA, como lo sugiere @schemacs.
Es posible que deba reiniciar su proceso de uwsgi después de realizar este cambio.


0

Otra solución es adelantarse.

intente importar nltk nltk.download ()

Cuando aparezca el cuadro de la ventana preguntando si desea descargar el corpus, puede especificar allí en qué directorio se descargará.


0

Siguiendo los consejos de fnjn anteriores para imprimir la ruta:

print(nltk.data.path)

Vi las cadenas de ruta en este tipo de formato en Windows:

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

Así que cambié mi ruta de la barra inclinada '/' de tipo Python, a una barra invertida doble '\\' cuando usé path.append:

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

La excepción desapareció.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.