Программно устанавливать корпуса или модели NLTK, т.е. Без загрузчика графического интерфейса пользователя?
В моем проекте используется NLTK. Как я могу перечислить требования к корпусу проекта и модели, чтобы они могли автоматически устанавливаться? Я не хочу щелкать через графический интерфейс nltk.download()
, устанавливая пакеты один за другим.
Также любой способ заморозить тот же список требований (например, pip freeze
)?
Ответы
Ответ 1
Сайт NLTK перечисляет интерфейс командной строки для загрузки пакетов и коллекций в нижней части этой страницы:
http://www.nltk.org/data
Использование командной строки зависит от того, какую версию Python вы используете, но на моей установке Python2.6 я заметил, что мне не хватает модели spanish_grammar, и это сработало нормально:
python -m nltk.downloader spanish_grammars
Вы упоминаете список требований к корпусу проекта и модели, и, хотя я не уверен в возможности сделать это автоматически, я решил, что по крайней мере поделюсь этим.
Ответ 2
В дополнение к уже упомянутой опции командной строки вы можете программно установить данные NLTK в Python script, добавив аргумент функции download()
.
См. текст help(nltk.download)
, в частности:
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.
Я могу подтвердить, что это работает для загрузки одного пакета за раз или при передаче list
или 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
Вы также можете попробовать скачать загруженный пакет без проблем:
>>> 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
Также появляется функция, возвращающая логическое значение, которое вы можете использовать, чтобы узнать, удалось ли выполнить загрузку:
>>> 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
Ответ 3
Чтобы установить все корпуса и модели NLTK:
python -m nltk.downloader popular
В качестве альтернативы, в Linux вы можете использовать:
sudo python -m nltk.downloader -d /usr/local/share/nltk_data popular
Вы также можете просматривать корпуса и модели через командную строку:
[email protected]:/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 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>
Ответ 4
Мне удалось установить корпуса и модели внутри настраиваемого каталога, используя следующий код:
import nltk
nltk.download(info_or_id="popular", download_dir="/path/to/dir")
nltk.data.path.append("/path/to/dir")
это установит " все" тела/модели внутри /path/to/dir
и сообщит NLTK, где его искать (data.path.append
).
Вы не можете "заморозить" данные в файле требований, но вы можете добавить этот код в свой __init__
, помимо кода, чтобы проверить, находятся ли файлы уже там.