Instalar programáticamente NLTK Corporos / modelos, es decir, sin el descargador de GUI?
-
27-10-2019 - |
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
)?
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:
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í.