NLTK - как узнать, какие корпуса установлены изнутри python? - PullRequest
8 голосов
/ 14 декабря 2009

Я пытаюсь загрузить несколько корпусов, которые я установил с помощью установщика NLTK, но я получил:

>>> from nltk.corpus import machado
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      ImportError: cannot import name machado

Но в диспетчере загрузок (nltk.download()) пакет machado помечен как установленный, и у меня есть папка nltk_data/corpus/machado.

Как я могу увидеть изнутри python intepreter, какие установлены корпуса?

Кроме того, какой пакет я должен установить для работы с этим руководством? http://nltk.googlecode.com/svn/trunk/doc/howto/portuguese_en.html

Я не могу найти модуль nltk.examples, на который есть ссылки в руководстве.

Ответы [ 2 ]

10 голосов
/ 14 декабря 2009

1001 * попробовать *

import nltk.corpus
dir(nltk.corpus)

В этот момент он, вероятно, сказал вам что-то о __LazyModule__..., поэтому повторите dir(nltk.corpus).

Если это не сработает, попробуйте завершить табуляцию в iPython.

4 голосов
/ 19 ноября 2013

NLTK включает в себя пакет nltk.corpus, который содержит определения считывателей корпусов (например, PlainTextCorpusReader). Этот пакет также включает в себя большой список предопределенных точек доступа для корпораций, которые можно загрузить с помощью nltk.downloader(). Эти точки доступа (например, nltk.corpus.brown) определяются независимо от того, был ли загружен соответствующий корпус.

  1. Чтобы увидеть , какие точки доступа определены в NLTK, используйте dir(nltk.corpus) (после import nltk).

  2. Чтобы увидеть какой корпус у вас есть в вашем nltk_data районе, попробуйте это:

    import os
    import nltk
    print( os.listdir( nltk.data.find("corpora") ) )
    

    Это просто выводит список с содержимым папки nltk_data/corpora. Вы можете взять его оттуда.

  3. Если вы установили свой собственный корпус в области nltk_data/corpora, и НЛТК не знает об этом, вам нужно самостоятельно запустить соответствующий читатель. Например, если это текстовый корпус в corpora/mycorpus и все файлы оканчиваются на .txt, вы должны сделать это так:

    import nltk
    from nltk.corpus import PlaintextCorpusReader
    
    mypath = nltk.data.find("corpora/mycorpus")
    mycorpus = PlaintextCorpusReader(mypath, r".*\.txt$")
    

    Но в этом случае вы можете поместить свой собственный корпус куда угодно и указать mypath прямо на него, вместо того, чтобы попросить НЛТК найти его.

...