Pregunta

Mi proyecto usa el NLTK. ¿Cómo puedo enumerar los requisitos de Corpus & Model del proyecto para que puedan instalarse automáticamente? No quiero hacer clic en el nltk.download() GUI, instalación de paquetes uno por uno.

Además, cualquier forma de congelar esa misma lista de requisitos (como pip freeze)?

¿Fue útil?

Solución

El sitio NLTK enumera una interfaz de línea de comandos para descargar paquetes y colecciones en la parte inferior de esta página:

http://www.nltk.org/data

El uso de la línea de comandos varía según la versión de Python que está utilizando, pero en mi instalación Python2.6 noté que me faltaba el modelo 'Spanish_grammar' y esto funcionó bien:

python -m nltk.downloader spanish_grammars

Usted menciona enumerar el corpus y los requisitos del modelo del proyecto y, aunque no estoy seguro de una forma de hacerlo automáticamente, pensé que al menos compartiría esto.

Otros consejos

Para instalar todos los corpus y modelos NLTK:

python -m nltk.downloader all

Alternativamente, en Linux, puede usar:

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

Reemplazar all por popular Si solo desea enumerar los corpus y modelos más populares.


También puede navegar por los corpus y modelos a través de la línea de comando:

mlee@server:/scratch/jjylee/tests$ sudo python -m nltk.downloader
[sudo] password for jjylee:
NLTK Downloader
---------------------------------------------------------------------------
    d) Download   l) List    u) Update   c) Config   h) Help   q) Quit
---------------------------------------------------------------------------
Downloader> d

Download which package (l=list; x=cancel)?
  Identifier> l
Packages:
  [ ] averaged_perceptron_tagger_ru Averaged Perceptron Tagger (Russian)
  [ ] basque_grammars..... Grammars for Basque
  [ ] bllip_wsj_no_aux.... BLLIP Parser: WSJ Model
  [ ] book_grammars....... Grammars from NLTK Book
  [ ] cess_esp............ CESS-ESP Treebank
  [ ] chat80.............. Chat-80 Data Files
  [ ] city_database....... City Database
  [ ] cmudict............. The Carnegie Mellon Pronouncing Dictionary (0.6)
  [ ] comparative_sentences Comparative Sentence Dataset
  [ ] comtrans............ ComTrans Corpus Sample
  [ ] conll2000........... CONLL 2000 Chunking Corpus
  [ ] conll2002........... CONLL 2002 Named Entity Recognition Corpus
  [ ] conll2007........... Dependency Treebanks from CoNLL 2007 (Catalan
                           and Basque Subset)
  [ ] crubadan............ Crubadan Corpus
  [ ] dependency_treebank. Dependency Parsed Treebank
  [ ] europarl_raw........ Sample European Parliament Proceedings Parallel
                           Corpus
  [ ] floresta............ Portuguese Treebank
  [ ] framenet_v15........ FrameNet 1.5
Hit Enter to continue: 
  [ ] framenet_v17........ FrameNet 1.7
  [ ] gazetteers.......... Gazeteer Lists
  [ ] genesis............. Genesis Corpus
  [ ] gutenberg........... Project Gutenberg Selections
  [ ] hmm_treebank_pos_tagger Treebank Part of Speech Tagger (HMM)
  [ ] ieer................ NIST IE-ER DATA SAMPLE
  [ ] inaugural........... C-Span Inaugural Address Corpus
  [ ] indian.............. Indian Language POS-Tagged Corpus
  [ ] jeita............... JEITA Public Morphologically Tagged Corpus (in
                           ChaSen format)
  [ ] kimmo............... PC-KIMMO Data Files
  [ ] knbc................ KNB Corpus (Annotated blog corpus)
  [ ] large_grammars...... Large context-free and feature-based grammars
                           for parser comparison
  [ ] lin_thesaurus....... Lin's Dependency Thesaurus
  [ ] mac_morpho.......... MAC-MORPHO: Brazilian Portuguese news text with
                           part-of-speech tags
  [ ] machado............. Machado de Assis -- Obra Completa
  [ ] masc_tagged......... MASC Tagged Corpus
  [ ] maxent_ne_chunker... ACE Named Entity Chunker (Maximum entropy)
  [ ] moses_sample........ Moses Sample Models
Hit Enter to continue: x


Download which package (l=list; x=cancel)?
  Identifier> conll2002
    Downloading package conll2002 to
        /afs/mit.edu/u/m/mlee/nltk_data...
      Unzipping corpora/conll2002.zip.

---------------------------------------------------------------------------
    d) Download   l) List    u) Update   c) Config   h) Help   q) Quit
---------------------------------------------------------------------------
Downloader>

Además de la opción Línea de comando ya mencionada, puede instalar programáticamente datos NLTK en su script de Python agregando un argumento al download() función.

Ver el help(nltk.download) texto, específicamente:

Individual packages can be downloaded by calling the ``download()``
function with a single argument, giving the package identifier for the
package that should be downloaded:

    >>> download('treebank') # doctest: +SKIP
    [nltk_data] Downloading package 'treebank'...
    [nltk_data]   Unzipping corpora/treebank.zip.

Puedo confirmar que esto funciona para descargar un paquete a la vez, o cuando se pasa un list o tuple.

>>> import nltk
>>> nltk.download('wordnet')
[nltk_data] Downloading package 'wordnet' to
[nltk_data]     C:\Users\_my-username_\AppData\Roaming\nltk_data...
[nltk_data]   Unzipping corpora\wordnet.zip.
True

También puede intentar descargar un paquete ya descargado sin problemas:

>>> nltk.download('wordnet')
[nltk_data] Downloading package 'wordnet' to
[nltk_data]     C:\Users\_my-username_\AppData\Roaming\nltk_data...
[nltk_data]   Package wordnet is already up-to-date!
True

Además, parece que la función devuelve un valor booleano que puede usar para ver si la descarga tiene éxito o no:

>>> nltk.download('not-a-real-name')
[nltk_data] Error loading not-a-real-name: Package 'not-a-real-name'
[nltk_data]     not found in index
False

He logrado instalar los corpus y los modelos dentro de un directorio personalizado utilizando el siguiente código:

import nltk
nltk.download(info_or_id="popular", download_dir="/path/to/dir")
nltk.data.path.append("/path/to/dir")

esto se instalará "todos"Corpanos/modelos en el interior /path/to/dir, y le haré saber a NLTK dónde buscarlo (data.path.append).

No puede "congelar" los datos en un archivo de requisitos, pero puede agregar este código a su __init__ Además, venga el código para verificar si los archivos ya están allí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top