NLTK - como descobrir o que corpora são instalados dentro de python?
Pergunta
Estou tentando carregar alguns corpora I instalado com o instalador NLTK mas eu tenho um:
>>> from nltk.corpus import machado
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name machado
Mas no gerenciador de download (nltk.download()
) o machado pacote é marcado como instalado e eu tenho uma pasta nltk_data/corpus/machado
.
Como posso ver de dentro do python intepreter quais são os corpora instalado?
Além disso, o pacote deve instalar ao trabalho com este how-to? http://nltk.googlecode.com/svn/trunk/doc/howto /portuguese_en.html
Não consigo encontrar o nltk.examples
módulo referiu no how-to.
Solução
try
import nltk.corpus
dir(nltk.corpus)
em que ponto, ele provavelmente lhe disse algo sobre __LazyModule__...
assim fazer dir(nltk.corpus)
novamente.
Se isso não funcionar, tente guia-conclusão em ipython.
Outras dicas
O NLTK inclui um pacote, nltk.corpus
, que contém definições de leitores corpus (como PlainTextCorpusReader
). Este pacote inclui também uma grande lista de pontos de acesso pré-definidas para a corpora que podem ser baixados com nltk.downloader()
. Esses pontos de acesso (por exemplo, nltk.corpus.brown
) são definidos ou não o corpus correspondente já foi baixado.
-
Para ver que os pontos de acesso são definidos na NLTK, uso
dir(nltk.corpus)
(apósimport nltk
). -
Para ver que corpora você tem em sua área
nltk_data
, tente o seguinte:import os import nltk print( os.listdir( nltk.data.find("corpora") ) )
Isto apenas despeja uma lista com o conteúdo do
nltk_data/corpora
pasta. Você pode levá-lo de lá. -
Se você instalou seu próprio corpus na área de
nltk_data/corpora
e não o NLTK não sei sobre isso, você precisa acender o leitor apropriado si mesmo. Por exemplo, se é um corpus de texto simples emcorpora/mycorpus
e todos os arquivos terminam em.txt
, você faria assim:import nltk from nltk.corpus import PlaintextCorpusReader mypath = nltk.data.find("corpora/mycorpus") mycorpus = PlaintextCorpusReader(mypath, r".*\.txt$")
Mas, nesse caso, você poderia colocar o seu próprio lugar corpus, e ponto
mypath
a ele diretamente, em vez de pedir o NLTK para encontrá-lo.