如何下载NLTK数据?

69

更新的答案:NLTK在2.7上可以很好地运行。 我之前使用的是3.2版本。 我卸载了3.2并安装了2.7版本。 现在它可以工作了!

我已经安装了NLTK并尝试下载NLTK数据。 我所做的就是按照这个网站上的说明进行操作:http://www.nltk.org/data.html

我下载了NLTK,安装了它,然后尝试运行以下代码:

>>> import nltk
>>> nltk.download()

我收到了以下错误消息:

Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    nltk.download()
AttributeError: 'module' object has no attribute 'download'
 Directory of C:\Python32\Lib\site-packages

我尝试了 nltk.download()nltk.downloader() 两种方法,但都出现错误信息。

然后我使用了 help(nltk) 命令来获取包的信息,它显示了以下内容:

NAME
    nltk

PACKAGE CONTENTS
    align
    app (package)
    book
    ccg (package)
    chat (package)
    chunk (package)
    classify (package)
    cluster (package)
    collocations
    corpus (package)
    data
    decorators
    downloader
    draw (package)
    examples (package)
    featstruct
    grammar
    help
    inference (package)
    internals
    lazyimport
    metrics (package)
    misc (package)
    model (package)
    parse (package)
    probability
    sem (package)
    sourcedstring
    stem (package)
    tag (package)
    test (package)
    text
    tokenize (package)
    toolbox
    tree
    treetransforms
    util
    yamltags

FILE
    c:\python32\lib\site-packages\nltk

我确实在那里看到了Downloader,但不确定为什么它不起作用。使用的是Python 3.2.2,操作系统是Windows Vista。


1
简短说明:我不知道问题出在哪里,但你所做的是正确的,应该会给你一个GUI来选择要下载的内容(也就是说,你没有做错什么,但确实有些问题存在)。 - Miquel
你是从哪里安装NLTK的?我强烈建议你通过像pip这样的软件包管理器来安装它,以便为你处理所有的依赖关系。 - Michael Aquilina
我不确定该怎么做。你是说我应该先安装pip,然后使用它来安装NLTK吗?我找到了这个资源:链接 我是否只需将get-pip.py链接中的内容复制粘贴到一个Python文件中,然后将其保存到c:/python32中?我真的很希望能得到更多详细信息。谢谢。 - Q-ximi
只需按照网站上的命令安装pip(您需要使用命令提示符窗口来执行此操作)。 安装完成后,使用命令提示符窗口并键入“pip install nltk”。 完成后,请尝试再次运行nltk命令以查看是否已解决您的问题。 - Michael Aquilina
2
使用终端进行安装:python3 -m nltk.downloader all - gl3yn
显示剩余3条评论
15个回答

102

简述

要下载特定的数据集或模型,请使用nltk.download()函数,例如,如果您想下载punkt句子分词器,请使用:

$ python3
>>> import nltk
>>> nltk.download('punkt')

如果您不确定需要哪些数据/模型,可以使用以下基本数据+模型列表开始:

>>> import nltk
>>> nltk.download('popular')
它将下载一个“热门”资源列表,其中包括:
<collection id="popular" name="Popular packages">
      <item ref="cmudict" />
      <item ref="gazetteers" />
      <item ref="genesis" />
      <item ref="gutenberg" />
      <item ref="inaugural" />
      <item ref="movie_reviews" />
      <item ref="names" />
      <item ref="shakespeare" />
      <item ref="stopwords" />
      <item ref="treebank" />
      <item ref="twitter_samples" />
      <item ref="omw" />
      <item ref="wordnet" />
      <item ref="wordnet_ic" />
      <item ref="words" />
      <item ref="maxent_ne_chunker" />
      <item ref="punkt" />
      <item ref="snowball_data" />
      <item ref="averaged_perceptron_tagger" />
    </collection>

编辑

如果有人想避免从nltk下载大数据集时出现错误,可以参考https://dev59.com/CZjga4cB1Zd3GeqPLYbR#38135306的解决方案。

$ rm /Users/<your_username>/nltk_data/corpora/panlex_lite.zip
$ rm -r /Users/<your_username>/nltk_data/corpora/panlex_lite
$ python

>>> import nltk
>>> dler = nltk.downloader.Downloader()
>>> dler._update_index()
>>> dler._status_cache['panlex_lite'] = 'installed' # Trick the index to treat panlex_lite as it's already installed.
>>> dler.download('popular')

更新

从 v3.2.5 开始,当找不到 nltk_data 资源时,NLTK 提供了更详细的错误信息,例如:

>>> from nltk import word_tokenize
>>> word_tokenize('x')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/l/alvas/git/nltk/nltk/tokenize/__init__.py", line 128, in word_tokenize
    sentences = [text] if preserve_line else sent_tokenize(text, language)
  File "/Users//alvas/git/nltk/nltk/tokenize/__init__.py", line 94, in sent_tokenize
    tokenizer = load('tokenizers/punkt/{0}.pickle'.format(language))
  File "/Users/alvas/git/nltk/nltk/data.py", line 820, in load
    opened_resource = _open(resource_url)
  File "/Users/alvas/git/nltk/nltk/data.py", line 938, in _open
    return find(path_, path + ['']).open()
  File "/Users/alvas/git/nltk/nltk/data.py", line 659, in find
    raise LookupError(resource_not_found)
LookupError: 
**********************************************************************
  Resource punkt not found.
  Please use the NLTK Downloader to obtain the resource:

  >>> import nltk
  >>> nltk.download('punkt')

  Searched in:
    - '/Users/alvas/nltk_data'
    - '/usr/share/nltk_data'
    - '/usr/local/share/nltk_data'
    - '/usr/lib/nltk_data'
    - '/usr/local/lib/nltk_data'
    - ''
**********************************************************************

相关


1
要在conda环境中安装nltk_data,请参见https://dev59.com/Y5Xfa4cB1Zd3GeqPirA5#53464117 - Shatu

36

尝试执行

nltk.download('all')

这将下载所有数据,无需逐个下载。


在我的情况下,它没有加载UI...不知道为什么...但这帮了我。谢谢。 - desaiankitb
6
请注意,截至2019年12月15日,该整个文件夹大小约为3.2 GB,包括ZIP文件在内。 - Florin Andrei
非常感谢@FlorinAndrei提供的信息。 - Deepam Gupta

16

安装Pip:在终端中运行:sudo easy_install pip

安装NumPy(可选):运行:sudo pip install -U numpy

安装NLTK:运行:sudo pip install -U nltk

测试安装:运行:python

然后输入:import nltk

下载语料库:

运行:python -m nltk.downloader all


13

这对我起作用了:

nltk.set_proxy('http://user:password@proxy.example.com:8080')
nltk.download()

13

不要将文件命名为nltk.py,我曾使用相同的代码并将其命名为nltk,结果出现了与你一样的错误,我更改了文件名后问题得到解决。


10

请试一试

import nltk

nltk.download()
在运行后,您将获得类似于此的结果。
NLTK Downloader
---------------------------------------------------------------------------
   d) Download   l) List    u) Update   c) Config   h) Help   q) Quit
---------------------------------------------------------------------------

接着,按下d键

请按照以下步骤进行:

Downloader> d all

下载完成后,您将看到以下消息,然后提示按q键


5

你不能拥有一个名为nltk.py的已保存Python文件,因为解释器正在读取该文件而不是实际文件。

更改Python shell正在读取的文件的名称,然后尝试最初要做的事情:

import nltk,然后nltk.download()


5

这非常简单...

  1. 打开 pyScripter 或其他编辑器
  2. 创建一个名为 install.py 的 Python 文件
  3. 在文件中写下以下代码。
import nltk
nltk.download()
  1. 弹出窗口将出现,点击下载。

下载窗口


弹出窗口没有打开。我已经尝试了很多次。nltk的版本也是新的,即3.4.1。现在告诉我应该是什么问题? - Hamza Tahir
@HamzaTahir 我也遇到了同样的问题,我重新启动了我的内核。 - Lakhani Aliraza

4
我曾遇到类似的问题。可能要检查是否使用了代理。
如果是,下载前请设置代理:
nltk.set_proxy('http://proxy.example.com:3128', ('USERNAME', 'PASSWORD'))

4

如果你正在运行一个非常旧版本的nltk,那么确实没有可用的下载模块(参考

尝试这个:

import nltk
print(nltk.__version__)

根据参考资料,0.9.5之后的任何版本都应该没问题。

2
这实际上是我怀疑的,这就是为什么我建议OP使用pip安装NLTK的原因。 - Michael Aquilina
它甚至无法打印出版本信息。该版本为2.0.4。这是我从书籍《Python自然语言处理》中遵循的链接。这是链接:http://www.nltk.org/install.html。 - Q-ximi
好的,这就是最新的了。我猜这不是它。我们把它留在这里以备将来参考。 - Miquel
任何nltk是否适用于您?尝试运行:nltk.word_tokenize("hello world"),看看是否会输出任何内容。 - Michael Aquilina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接