Программно установить NLTK Corpora / Models, то есть без загрузки GUI?
-
27-10-2019 - |
Вопрос
Мой проект использует NLTK. Как я могу перечислить требования к корпусу и модели проекта, чтобы их можно было автоматически установлено? Я не хочу нажимать на nltk.download()
GUI, установка пакетов один за другим.
Кроме того, любой способ заморозить тот же список требований (например pip freeze
)?
Решение
На сайте NLTK перечислены интерфейс командной строки для загрузки пакетов и коллекций внизу этой страницы:
Использование командной строки зависит от какой версии Python, которую вы используете, но при установке Python2.6 я заметил, что мне не хватало модели «испанского_граммара», и это работало нормально:
python -m nltk.downloader spanish_grammars
Вы упоминаете, что в перечислении требования к корпусу и моделям проекта, и хотя я не уверен в способе автомагически сделать это, я подумал, что поделится этим.
Другие советы
Чтобы установить все NLTK Corpora & Models:
python -m nltk.downloader all
В качестве альтернативы, на Linux вы можете использовать:
sudo python -m nltk.downloader -d /usr/local/share/nltk_data all
Заменять all
по popular
Если вы просто хотите перечислить самые популярные корпорации и модели.
Вы также можете просмотреть корпуса и модели через командную строку:
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>
В дополнение к уже упомянутой опции командной строки, вы можете программно установить данные NLTK в свой скрипт Python, добавив аргумент в 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
Мне удалось установить корпусы и модели внутри пользовательского каталога, используя следующий код:
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__
Кроме того, приходите код, чтобы проверить, есть ли файлы уже есть.