NLTK - come scoprire che cosa corpora sono installati all'interno di pitone?
Domanda
Sto cercando di caricare un po 'di corpora ho installato con il programma di installazione NLTK ma ho avuto una:
>>> from nltk.corpus import machado
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name machado
Ma nel download manager (nltk.download()
) il Machado pacchetto è marcato come installato e ho una cartella nltk_data/corpus/machado
.
Come posso vedere da dentro l'interprete python quali sono i corpi installato?
Inoltre, quale pacchetto devo installare per lavorare con questo how-to? http://nltk.googlecode.com/svn/trunk/doc/howto /portuguese_en.html
Non riesco a trovare il modulo di nltk.examples
refered nel how-to.
Soluzione
try
import nltk.corpus
dir(nltk.corpus)
a quel punto, probabilmente ti ha detto qualcosa a proposito __LazyModule__...
in modo da fare di nuovo dir(nltk.corpus)
.
Se questo non funziona, provare scheda di completamento in ipython.
Altri suggerimenti
Il NLTK comprende un pacchetto, nltk.corpus
, che contiene le definizioni di lettori corpus (come PlainTextCorpusReader
). Questo pacchetto include anche una lunga lista di punti di accesso predefiniti per corpora che possono essere scaricati con nltk.downloader()
. Questi punti di accesso (per esempio, nltk.corpus.brown
) sono definite se il corpus corrispondente è stato scaricato.
-
Per vedere che i punti di accesso sono definiti nella NLTK, uso
dir(nltk.corpus)
(dopoimport nltk
). -
Per vedere che corpora avete nella vostra zona
nltk_data
, provate questo:import os import nltk print( os.listdir( nltk.data.find("corpora") ) )
Questa discariche solo un elenco con il contenuto della cartella di
nltk_data/corpora
. Si può prendere da lì. -
Se è stato installato il proprio corpus nella zona
nltk_data/corpora
e il NLTK non sa a questo proposito, è necessario accendere il lettore appropriata da soli. Per esempio, se si tratta di un corpus di testo in chiaro incorpora/mycorpus
e tutti i file finiscono in.txt
, faresti in questo modo:import nltk from nltk.corpus import PlaintextCorpusReader mypath = nltk.data.find("corpora/mycorpus") mycorpus = PlaintextCorpusReader(mypath, r".*\.txt$")
Ma in questo caso si potrebbe mettere il proprio corpus ovunque, e il punto
mypath
ad esso direttamente invece di chiedere al NLTK per trovarlo.