Программно установить NLTK Corpora / Models, то есть без загрузки GUI?

StackOverflow https://stackoverflow.com/questions/5843817

Вопрос

Мой проект использует NLTK. Как я могу перечислить требования к корпусу и модели проекта, чтобы их можно было автоматически установлено? Я не хочу нажимать на nltk.download() GUI, установка пакетов один за другим.

Кроме того, любой способ заморозить тот же список требований (например pip freeze)?

Это было полезно?

Решение

На сайте NLTK перечислены интерфейс командной строки для загрузки пакетов и коллекций внизу этой страницы:

http://www.nltk.org/data

Использование командной строки зависит от какой версии 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__ Кроме того, приходите код, чтобы проверить, есть ли файлы уже есть.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top