Программно установить NLTK corpora / models, т.е. без загрузчика графического интерфейса? - PullRequest
51 голосов
/ 30 апреля 2011

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

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

Ответы [ 4 ]

47 голосов
/ 19 мая 2011

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

http://www.nltk.org/data

Использование командной строки зависит от того, какую версию Python вы используете.я использую, но в моей установке Python2.6 я заметил, что мне не хватает модели 'spanish_grammar', и она работала нормально:

python -m nltk.downloader spanish_grammars

Вы упоминаете список требований к корпусу и модели проекта, и хотя я не уверенспособа сделать это автоматически, я решил, что по крайней мере поделюсь этим.

26 голосов
/ 10 декабря 2015

Для установки всех моделей и моделей NLTK:

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>
15 голосов
/ 15 февраля 2013

В дополнение к уже упомянутому параметру командной строки вы можете программно установить данные 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
3 голосов
/ 16 января 2017

Мне удалось установить корпуса и модели в пользовательский каталог, используя следующий код:

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__, кроме как прийтикод для проверки наличия файлов.

...