找不到资源u'tokenizers / punkt / english.pickle'


96

我的代码:

import nltk.data
tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')

错误信息:

[ec2-user@ip-172-31-31-31 sentiment]$ python mapper_local_v1.0.py
Traceback (most recent call last):
File "mapper_local_v1.0.py", line 16, in <module>

    tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')

File "/usr/lib/python2.6/site-packages/nltk/data.py", line 774, in load

    opened_resource = _open(resource_url)

File "/usr/lib/python2.6/site-packages/nltk/data.py", line 888, in _open

    return find(path_, path + ['']).open()

File "/usr/lib/python2.6/site-packages/nltk/data.py", line 618, in find

    raise LookupError(resource_not_found)

LookupError:

Resource u'tokenizers/punkt/english.pickle' not found.  Please
use the NLTK Downloader to obtain the resource:

    >>>nltk.download()

Searched in:
- '/home/ec2-user/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
- u''

我正在尝试在Unix机器上运行此程序:

根据错误消息,我从unix机器登录python shell,然后使用以下命令:

import nltk
nltk.download()

然后我使用d-down加载程序和l-list选项下载了所有可用的内容,但问题仍然存在。

我尽力在Internet中找到解决方案,但得到的解决方案与上述步骤中提到的解决方案相同。


Answers:


171

要添加到alvas的答案中,您只能下载punkt语料库:

nltk.download('punkt')

all对我来说下载声音听起来像是过分杀了。除非那是您想要的。


感谢您的nltk语料库名称。
奥斯丁

我必须升级到最新的nltk版本3.2.5才能使nltk.download('punkt')工作。
查尔斯·戈麦斯(Charles Gomes)

这是我在运行上面的代码后得到的:[nltk_data]加载punkt时出错:<urlopen错误[Errno 111]连接[nltk_data]被拒绝>
Paul

关于我以前的问题,我要做的就是关闭我的VPN。
保罗

59

如果您只想下载punkt模型:

import nltk
nltk.download('punkt')

如果不确定所需的数据/模型,可以从NLTK 安装流行的数据集,模型和标记器:

import nltk
nltk.download('popular')

使用上面的命令,无需使用GUI下载数据集。


34

我得到了解决方案:

import nltk
nltk.download()

NLTK下载器启动后

d)下载l)列表u)更新c)配置h)帮助q)退出

下载器> d

下载哪个软件包(l = list; x = cancel)?标识符> punkt


25

您可以从外壳执行:

sudo python -m nltk.downloader punkt 

如果要安装流行的NLTK语料库/模型:

sudo python -m nltk.downloader popular

如果要安装所有 NLTK语料库/模型:

sudo python -m nltk.downloader all

列出您已下载的资源:

python -c 'import os; import nltk; print os.listdir(nltk.data.find("corpora"))'
python -c 'import os; import nltk; print os.listdir(nltk.data.find("tokenizers"))'

10
import nltk
nltk.download('punkt')

打开Python提示符并运行以上语句。

sent_tokenize函数使用的一个实例PunktSentenceTokenizernltk.tokenize.punkt模块。该实例已经过培训,并适用于许多欧洲语言。因此,它知道哪些标点符号和字符标记了句子的结尾和新句子的开头。


9

最近我也发生了同样的事情,您只需要下载“ punkt”软件包,它就可以工作。

在“下载所有可用内容”之后执行“列表”(l)时,所有内容是否都标记为以下行?:

[*] punkt............... Punkt Tokenizer Models

如果看到带有星星的这条线,则表示您已经拥有它,并且nltk应该能够加载它。


1
嘿@ supreeth-meka,很高兴您找到解决方案,这是我建议的解决方案,您能否将我的回答标记为“已接受”?
eeelnico 2014年

5

通过键入转到python控制台

$蟒蛇

在您的终端中。然后,在python shell中键入以下2条命令以安装相应的软件包:

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

这为我解决了这个问题。


2

我的问题是我叫nltk.download('all')root用户,但是最终使用nltk的进程是另一个用户,该用户无权访问下载内容的/ root / nltk_data。

因此,我只是以递归方式将所有内容从下载位置复制到NLTK希望找到的路径之一,如下所示:

cp -R /root/nltk_data/ /home/ubuntu/nltk_data


2

尽管导入了以下内容,但还是出现错误,

import nltk
nltk.download()

但是对于谷歌colab,这解决了我的问题。

   !python3 -c "import nltk; nltk.download('all')"

1

简单的nltk.download()无法解决此问题。我尝试了以下方法,它对我有用:

在nltk文件夹中,创建一个tokenizers文件夹,然后将您的punkt文件夹复制到tokenizers文件夹中。

这将起作用。 文件夹结构必须如图所示


1

您需要重新排列文件夹将tokenizers文件夹移到nltk_data文件夹中。如果您的nltk_data文件corpora夹中包含 tokenizers文件夹,则此方法不起作用


1

对我而言,上述方法均无效,因此我只是从网站http://www.nltk.org/nltk_data/手动下载了所有文件,并将它们也手动放置在“ nltk_data”内部的“ tokenizers”文件中”文件夹。不是一个漂亮的解决方案,但仍然是一个解决方案。


1

添加此行代码后,该问题将得到解决:

nltk.download('punkt')

0

我遇到了同样的问题。下载所有内容后,仍然存在“ punkt”错误。我在Windows机器上的C:\ Users \ vaibhav \ AppData \ Roaming \ nltk_data \ tokenizers中搜索了程序包,在那里可以看到“ punkt.zip”。我意识到,该zip尚未以某种方式提取到C:\ Users \ vaibhav \ AppData \ Roaming \ nltk_data \ tokenizers \ punk中。一旦我解压缩后,它就像音乐一样工作。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.