【问题标题】:Resource u'tokenizers/punkt/english.pickle' not found找不到资源 u'tokenizers/punkt/english.pickle'
【发布时间】:2014-12-21 15:37:02
【问题描述】:

我的代码:

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 loader 和 l-list 选项下载了所有可用的东西,但问题仍然存在。

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

【问题讨论】:

标签: python unix nltk


【解决方案1】:

将以下行添加到您的脚本中。这将自动下载 punkt 数据。

import nltk
nltk.download('punkt')

【讨论】:

    【解决方案2】:

    对我来说,它通过使用“nltk:”解决了

    http://www.nltk.org/howto/data.html

    Failed loading english.pickle with nltk.data.load

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

    【讨论】:

      【解决方案3】:

      尽管导入了以下内容,但我收到了错误,

      import nltk
      nltk.download()
      

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

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

      【讨论】:

        【解决方案4】:

        只需确保您使用的是Jupyter Notebook 并在笔记本中执行以下操作:

        import nltk
        
        nltk.download()
        

        然后会出现一个弹出窗口(显示信息https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml) 从那里你必须下载所有东西。

        然后重新运行您的代码。

        【讨论】:

          【解决方案5】:

          添加这行代码后,问题就解决了:

          nltk.download('punkt')
          

          【讨论】:

            【解决方案6】:

            我遇到了同样的问题。下载所有内容后,仍然存在“punkt”错误。我在我的 Windows 机器上的 C:\Users\vaibhav\AppData\Roaming\nltk_data\tokenizers 上搜索了包,我可以在那里看到“punkt.zip”。我意识到不知何故 zip 没有被提取到 C:\Users\vaibhav\AppData\Roaming\nltk_data\tokenizers\punk。 一旦我提取了 zip,它就像音乐一样工作。

            【讨论】:

              【解决方案7】:
              import nltk
              nltk.download('punkt')
              

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

              sent_tokenize 函数使用 PunktSentenceTokenizer 的实例 nltk.tokenize.punkt 模块。此实例已经过训练并且适用于 许多欧洲语言。所以它知道什么标点符号和字符标志着一个结束 句子和新句子的开头。

              【讨论】:

                【解决方案8】:

                您可以从 shell 执行:

                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"))'
                

                【讨论】:

                  【解决方案9】:

                  如果您只想下载punkt 模型:

                  import nltk
                  nltk.download('punkt')
                  

                  如果您不确定自己需要哪个数据/模型,您可以安装来自 NLTK 的流行数据集、模型和标记器:

                  import nltk
                  nltk.download('popular')
                  

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

                  【讨论】:

                    【解决方案10】:
                    1. 执行以下代码:

                      import nltk
                      nltk.download()
                      
                    2. 之后会弹出NLTK下载器。

                    3. 选择所有包。
                    4. 下载 punkt。

                    【讨论】:

                      【解决方案11】:

                      对我来说,上述方法都不起作用,所以我只是从网站http://www.nltk.org/nltk_data/ 手动下载了所有文件,然后我也手动将它们放入“nltk_data”文件夹内的“tokenizers”文件中。不是一个很好的解决方案,但仍然是一个解决方案。

                      【讨论】:

                        【解决方案12】:

                        键入

                        转到 python 控制台

                        $蟒蛇

                        在您的终端中。然后,在你的 python shell 中输入以下 2 个命令来安装相应的包:

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

                        这解决了我的问题。

                        【讨论】:

                          【解决方案13】:

                          您需要重新排列文件夹 将您的 tokenizers 文件夹移动到 nltk_data 文件夹中。 如果您的 nltk_data 文件夹包含 corpora 文件夹,则此文件夹包含 tokenizers 文件夹

                          【讨论】:

                            【解决方案14】:

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

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

                            这行得通。! the folder structure needs to be as shown in the picture

                            【讨论】:

                              【解决方案15】:

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

                              所以我只是递归地将所有内容从下载位置复制到 NLTK 想要找到它的路径之一,如下所示:

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

                              【讨论】:

                                【解决方案16】:

                                要添加到alvas' answer,您只能下载punkt语料库:

                                nltk.download('punkt')
                                

                                下载all 对我来说听起来有点矫枉过正。除非那是你想要的。

                                【讨论】:

                                • 感谢 nltk 语料库名称。
                                • 我必须升级到最新的 nltk 版本 3.2.5 才能使 nltk.download('punkt') 工作。
                                • 这是我运行上面的代码后得到的:[nltk_data] 加载 punkt 时出错:
                                • 关于我之前的问题,我所要做的就是关闭我的VPN。
                                【解决方案17】:

                                我得到了解决方案:

                                import nltk
                                nltk.download()
                                

                                NLTK 下载器启动后

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

                                下载器>d

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

                                【讨论】:

                                  【解决方案18】:

                                  我最近也发生了同样的事情,你只需要下载“punkt”包就可以了。

                                  当你在“下载了所有可用的东西”之后执行“list”(l)时,所有的东西都被标记为如下行吗?:

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

                                  如果你看到这条带星号的行,就表示你拥有它,nltk 应该可以加载它。

                                  【讨论】:

                                  • 嘿@supreeth-meka,我很高兴你找到了解决方案,这是我建议你的,你能把我的答案标记为“接受”吗?
                                  猜你喜欢
                                  • 2016-08-11
                                  • 2015-01-28
                                  • 2017-01-09
                                  • 2022-10-14
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2015-05-03
                                  相关资源
                                  最近更新 更多