Solución:
Esto se puede configurar tanto por línea de comandos (nltk.download(..., download_dir=)
o por GUI. Extrañamente, nltk parece ignorar por completo su propia variable de entorno NLTK_DATA
y predeterminar sus directorios de descarga a un conjunto estándar de cinco rutas, independientemente de si NLTK_DATA
está definido y hacia dónde apunta, e independientemente de si los cinco directorios predeterminados de nltk existen en la máquina o en la arquitectura (!). Algo de eso está documentado en Installing NLTK Data, aunque está incompleto y un poco enterrado; reproducido a continuación con un formato mucho más claro:
Instalación de línea de comandos
El descargador buscará un
nltk_data
directorio para instalar datos NLTK. Si no existe uno, intentará crear uno en una ubicación central (cuando se usa una cuenta de administrador) o de otra manera en el espacio de archivos del usuario. Si es necesario, ejecute el comando de descarga desde una cuenta de administrador o usando sudo. La ubicación recomendada del sistema es:
C:nltk_data
(Windows);/usr/local/share/nltk_data
(Mac) y/usr/share/nltk_data
(Unix).Puede usar la marca -d para especificar una ubicación diferente (pero si hace esto, asegúrese de configurar la variable de entorno NLTK_DATA en consecuencia).
Ejecuta el comando
python -m nltk.downloader all
Para garantizar la instalación central, ejecute el comando:
sudo python -m nltk.downloader -d /usr/local/share/nltk_data all
Pero realmente deberían decir:
sudo python -m nltk.downloader -d $NLTK_DATA all
Ahora en cuanto a qué ruta recomendada debe usar NLTK_DATA, nltk realmente no brinda ninguna orientación adecuada, pero debería ser una ruta independiente genérica que no esté debajo de ningún árbol de instalación (por lo tanto, no debajo <python-install-directory>/lib/site-packages
) o cualquier directorio de usuario. Por eso, /usr/local/share
, /opt/share
o similar. En MacOS 10.7+, /usr
y por lo tanto /usr/local/
estos días están ocultos por defecto, por lo que /opt/share
bien puede ser una mejor opción. O hacer chflags nohidden /usr/local/share
.
Según la documentación:
De forma predeterminada, los paquetes se instalan en un directorio de todo el sistema (si Python tiene suficiente acceso para escribir en él); o en el directorio de inicio del usuario actual. Sin embargo, el argumento download_dir se puede utilizar para especificar un destino de instalación diferente, si se desea.
Para especificar el directorio de descarga, use por ejemplo:
nltk.download('treebank', download_dir="/mnt/data/treebank")
También puede utilizar nltk.download_shell()
y siga los pasos interactivos que se muestran a continuación.
También use nltk.data.path.append('/your/new/data/directory/path')
para indicar a nltk que cargue datos desde una nueva ruta de datos.