NLTK - 如何从Python中查找已安装的语料库?

9 投票
2 回答
10477 浏览
提问于 2025-04-15 17:00

我正在尝试加载一些我用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 个回答

7

NLTK里有一个包叫做 nltk.corpus,里面包含了一些用来读取语料库的工具,比如 PlainTextCorpusReader。这个包还提供了很多可以下载的语料库的预定义访问点,你可以用 nltk.downloader() 来下载它们。这些访问点(比如 nltk.corpus.brown)的定义是存在的,不管你是否已经下载了对应的语料库。

  1. 如果你想查看 在NLTK中定义了哪些访问点,可以在导入NLTK后使用 dir(nltk.corpus)

  2. 如果你想知道 你在 nltk_data 目录下有哪些语料库,可以试试这个:

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

    这个命令会列出 nltk_data/corpora 文件夹里的内容。你可以根据这个列表进行操作。

  3. 如果 你自己安装了一个语料库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去找。

13

尝试一下

import nltk.corpus
dir(nltk.corpus)

这时候,它可能会告诉你一些关于 __LazyModule__... 的信息,所以再执行一次 dir(nltk.corpus)

如果这样还是不行,可以试试在 iPython 中使用自动补全功能。

撰写回答