with what natural libreria lib language python django heroku nltk wordnet

python - what - El recurso ''corpora/wordnet'' no se encuentra en Heroku



nltk reference (6)

Estoy tratando de hacer que NLTK y wordnet trabajen en Heroku. Ya lo hice

heroku run python nltk.download() wordnet pip install -r requirements.txt

Pero me sale este error:

Resource ''corpora/wordnet'' not found. Please use the NLTK Downloader to obtain the resource: >>> nltk.download() Searched in: - ''/app/nltk_data'' - ''/usr/share/nltk_data'' - ''/usr/local/share/nltk_data'' - ''/usr/lib/nltk_data'' - ''/usr/local/lib/nltk_data''

Sin embargo, he mirado en / app / nltk_data y está ahí, así que no estoy seguro de lo que está pasando.


Actualizar

Como señaló Kenneth Reitz , se ha agregado una solución mucho más simple al paquete de construcción heroku-python. Agregue un archivo nltk.txt a su directorio raíz y enumere sus cuerpos dentro. Consulte https://devcenter.heroku.com/articles/python-nltk para obtener más información.

Respuesta original

Aquí hay una solución más limpia que le permite instalar los datos de NLTK directamente en Heroku sin agregarlos a su repositorio git.

Utilicé pasos similares para instalar https://devcenter.heroku.com/articles/python-nltk en Heroku, que usa NLTK como una dependencia. He realizado algunos ajustes menores en mi código original en los pasos 3 y 4 que deberían funcionar para una instalación solo NLTK.

El paquete de compilación heroku predeterminado incluye un paso post_compile que se ejecuta después de que se hayan completado todos los pasos de compilación predeterminados:

# post_compile #!/usr/bin/env bash if [ -f bin/post_compile ]; then echo "-----> Running post-compile hook" chmod +x bin/post_compile sub-env bin/post_compile fi

Como puede ver, busca en su directorio de proyectos su propio archivo post_compile en el directorio bin , y lo ejecuta si existe. Puede utilizar este gancho para instalar los datos nltk.

  1. Cree el directorio bin en la raíz de su proyecto local.

  2. Agregue su propio archivo post_compile al directorio bin .

    # bin/post_compile #!/usr/bin/env bash if [ -f bin/install_nltk_data ]; then echo "-----> Running install_nltk_data" chmod +x bin/install_nltk_data bin/install_nltk_data fi echo "-----> Post-compile done"

  3. Agregue su propio archivo install_nltk_data al directorio bin .

    # bin/install_nltk_data #!/usr/bin/env bash source $BIN_DIR/utils echo "-----> Starting nltk data installation" # Assumes NLTK_DATA environment variable is already set # $ heroku config:set NLTK_DATA=''/app/nltk_data'' # Install the nltk data # NOTE: The following command installs the wordnet corpora, # so you may want to change for your specific needs. # See http://www.nltk.org/data.html python -m nltk.downloader wordnet # If using Textblob, use this instead: # python -m textblob.download_corpora lite # Open the NLTK_DATA directory cd ${NLTK_DATA} # Delete all of the zip files find . -name "*.zip" -type f -delete echo "-----> Finished nltk data installation"

  4. Agregue nltk a su archivo textblob (O a textblob si está usando Textblob).

  5. Confíe todos estos cambios a su repositorio.
  6. Establezca la variable de entorno NLTK_DATA en su aplicación heroku.

    $ heroku config:set NLTK_DATA=''/app/nltk_data''

  7. Desplegar a Heroku. Verá el post_compile paso post_compile al final de la implementación, seguido de la descarga de nltk.

¡Espero que hayas encontrado esto util! ¡Disfrutar!


Éste funciona:

Para usuarios de Mac OS.

python -m nltk.downloader -d /usr/local/share/nltk_data wordnet


Acabo de tener este mismo problema. Lo que me funcionó fue crear un directorio ''nltk_data'' en la carpeta de la aplicación, descargar el corpus en ese directorio y agregar una línea a mi código que le permita a nltk saber qué buscar en ese directorio. Puedes hacer esto localmente y luego enviar los cambios a Heroku.

Entonces, suponiendo que mi aplicación python está en un directorio llamado "myapp /"

Paso 1: Crea el directorio

cd myapp/ mkdir nltk_data

Paso 2: Descargar Corpus a Nuevo Directorio

python -m nltk.downloader

Esto nltk descargador de nltk . Establezca su Directorio de descarga en la whatever_the_absolute_path_to_myapp_is/nltk_data/ . Si está utilizando el descargador de GUI, el directorio de descarga se establece a través de un campo de texto en la parte inferior de la interfaz de usuario. Si está utilizando la línea de comando uno, configúrela en el menú de configuración.

Una vez que el descargador sepa apuntar a su directorio nltk_data recién creado, descargue su corpus.

O en un solo paso desde el código de Python:

nltk.download("wordnet", "whatever_the_absolute_path_to_myapp_is/nltk_data/")

Paso 3: Deja que nltk sepa dónde mirar

ntlk busca datos, recursos, etc. en las ubicaciones especificadas en la variable nltk.data.path . Todo lo que necesita hacer es agregar nltk.data.path.append(''./nltk_data/'') al archivo python que realmente usa nltk, y buscará corpus, tokenizadores y demás, además de las rutas predeterminadas.

Paso 4: Envíalo a Heroku

git add nltk_data/ git commit -m ''super useful commit message'' git push heroku master

¡Eso debería funcionar! Lo hizo por mí de todos modos. Una cosa que vale la pena tener en cuenta es que la ruta desde el archivo python que ejecuta nltk stuff al directorio nltk_data puede ser diferente dependiendo de cómo haya estructurado su aplicación, así que tenga en cuenta eso cuando haga nltk.data.path.append(''path_to_nltk_data'')


Estaba recibiendo este problema. Para aquellos que no están trabajando en un entorno virtual, deberán descargarse en el siguiente directorio en ubuntu:

/usr/share/nltk_data/corpora/wordnet

En lugar de wordnet podría ser marrón o lo que sea. Puede ejecutar este comando directamente en su terminal si desea descargar el corpus.

$ sudo python -m nltk.downloader -d /usr/share/nltk_data wordnet

De nuevo, en lugar de wordnet, podría ser marrón.



Solo para usuarios de Mac OS.

python -m nltk.downloader -d /usr/share/nltk_data wordnet

los datos corpora no se pueden descargar directamente a la carpeta /usr/share/nltk_data . Informes de error "sin permiso", dos soluciones:

  1. Agregue un cambio de permiso adicional al sistema Mac, los detalles se refieren a la Operación No Permitida cuando está en la raíz El Capitán (deshabilitado sin raíz) . Sin embargo, no quiero cambiar a la configuración predeterminada de Mac solo para este cuerpo. Y voy por la segunda solución.

    • Descargue los corpus a cualquier directorio al que tenga acceso. `python -m nltk.downloader -d some_user_accessable_directory wordnet ''. Notado, allí solo descarga los corpus requeridos, por ejemplo, wordnet, reuters en lugar de los corpus completos de nltk.
    • Añadir ruta a la ruta nltk. En el archivo py, agregue las siguientes líneas:

      import nltk nltk.data.path.append(''nltk_data'')