NLTK - 如何从Python中查找已安装的语料库?
我正在尝试加载一些我用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解释器中查看已安装的语料库呢?
另外,我应该安装哪个包来使用这个教程?http://nltk.googlecode.com/svn/trunk/doc/howto/portuguese_en.html
我找不到教程中提到的模块nltk.examples
。
2 个回答
NLTK里有一个包叫做 nltk.corpus
,里面包含了一些用来读取语料库的工具,比如 PlainTextCorpusReader
。这个包还提供了很多可以下载的语料库的预定义访问点,你可以用 nltk.downloader()
来下载它们。这些访问点(比如 nltk.corpus.brown
)的定义是存在的,不管你是否已经下载了对应的语料库。
如果你想查看 在NLTK中定义了哪些访问点,可以在导入NLTK后使用
dir(nltk.corpus)
。如果你想知道 你在
nltk_data
目录下有哪些语料库,可以试试这个:import os import nltk print( os.listdir( nltk.data.find("corpora") ) )
这个命令会列出
nltk_data/corpora
文件夹里的内容。你可以根据这个列表进行操作。如果 你自己安装了一个语料库 在
nltk_data/corpora
目录下,但NLTK不知道它的存在,你需要自己启动合适的读取工具。例如,如果你的语料库是一个纯文本格式的,放在corpora/mycorpus
里,所有文件都以.txt
结尾,你可以这样做:import nltk from nltk.corpus import PlaintextCorpusReader mypath = nltk.data.find("corpora/mycorpus") mycorpus = PlaintextCorpusReader(mypath, r".*\.txt$")
不过在这种情况下,你可以把自己的语料库放在任何地方,然后直接把
mypath
指向它,而不是让NLTK去找。
尝试一下
import nltk.corpus
dir(nltk.corpus)
这时候,它可能会告诉你一些关于 __LazyModule__...
的信息,所以再执行一次 dir(nltk.corpus)
。
如果这样还是不行,可以试试在 iPython 中使用自动补全功能。