使用nltk.data.load加载english.pickle失败

时间:2011-02-01 19:43:49

标签: python jenkins nltk

尝试加载punkt令牌化程序时...

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

... LookupError已被提出:

> LookupError: 
>     *********************************************************************   
> Resource 'tokenizers/punkt/english.pickle' not found.  Please use the NLTK Downloader to obtain the resource: nltk.download().   Searched in:
>         - 'C:\\Users\\Martinos/nltk_data'
>         - 'C:\\nltk_data'
>         - 'D:\\nltk_data'
>         - 'E:\\nltk_data'
>         - 'E:\\Python26\\nltk_data'
>         - 'E:\\Python26\\lib\\nltk_data'
>         - 'C:\\Users\\Martinos\\AppData\\Roaming\\nltk_data'
>     **********************************************************************

17 个答案:

答案 0 :(得分:238)

我有同样的问题。进入python shell并输入:

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

然后会出现一个安装窗口。转到“模型”标签,然后从“标识符”列下方选择“朋克”。然后单击“下载”,它将安装必要的文件。然后它应该工作!

答案 1 :(得分:81)

import nltk
nltk.download('punkt')

from nltk import word_tokenize,sent_tokenize

使用标记器:)

答案 2 :(得分:24)

这对我来说很有用:

# Do this in a separate python interpreter session, since you only have to do it once
import nltk
nltk.download('punkt')

# Do this in your ipython notebook or analysis script
from nltk.tokenize import word_tokenize

sentences = [
    "Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very nice fellow.",
    "Professor Plum has a green plant in his study.",
    "Miss Scarlett watered Professor Plum's green plant while he was away from his office last week."
]

sentences_tokenized = []
for s in sentences:
    sentences_tokenized.append(word_tokenize(s))

sentences_tokenized是令牌列表的列表:

[['Mr.', 'Green', 'killed', 'Colonel', 'Mustard', 'in', 'the', 'study', 'with', 'the', 'candlestick', '.', 'Mr.', 'Green', 'is', 'not', 'a', 'very', 'nice', 'fellow', '.'],
['Professor', 'Plum', 'has', 'a', 'green', 'plant', 'in', 'his', 'study', '.'],
['Miss', 'Scarlett', 'watered', 'Professor', 'Plum', "'s", 'green', 'plant', 'while', 'he', 'was', 'away', 'from', 'his', 'office', 'last', 'week', '.']]

句子取自示例ipython notebook accompanying the book "Mining the Social Web, 2nd Edition"

答案 3 :(得分:11)

从bash命令行运行:

$ python -c "import nltk; nltk.download('punkt')"

答案 4 :(得分:8)

这对我有用:

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

在Windows中你也会得到nltk下载器

NLTK Downloader

答案 5 :(得分:6)

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

nltk文件夹中创建tokenizers文件夹,并将punkt文件夹复制到tokenizers文件夹中。

这将有效。文件夹结构需要如图所示!1

答案 6 :(得分:5)

nltk拥有预先训练好的标记器模型。模型从内部预定义的Web源下载并存储在已安装的nltk包的路径中,同时执行以下可能的函数调用。

E.g。 1 tokenizer = nltk.data.load(' nltk:tokenizers / punkt / english.pickle')

E.g。 2 nltk.download(' PUNKT&#39)

如果您在代码中使用上述句子,请确保您的互联网连接没有任何防火墙保护。

我想与更好的深层理解分享一些更好的改变网络方式来解决上述问题。

请按照以下步骤使用nltk享受英语单词标记化。

第1步:首先下载" english.pickle"模型遵循网络路径。

转到链接" http://www.nltk.org/nltk_data/"并点击"下载"选项" 107。 Punkt Tokenizer模型"

第2步:提取下载的" punkt.zip"提交并找到" english.pickle"从中获取文件并放入C盘。

步骤3:按照代码复制粘贴并执行。

from nltk.data import load
from nltk.tokenize.treebank import TreebankWordTokenizer

sentences = [
    "Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very nice fellow.",
    "Professor Plum has a green plant in his study.",
    "Miss Scarlett watered Professor Plum's green plant while he was away from his office last week."
]

tokenizer = load('file:C:/english.pickle')
treebank_word_tokenize = TreebankWordTokenizer().tokenize

wordToken = []
for sent in sentences:
    subSentToken = []
    for subSent in tokenizer.tokenize(sent):
        subSentToken.extend([token for token in treebank_word_tokenize(subSent)])

    wordToken.append(subSentToken)

for token in wordToken:
    print token

如果您遇到任何问题,请告诉我

答案 7 :(得分:4)

在Jenkins上,可以通过在构建标签下的 Virtualenv Builder 中添加以下代码来解决此问题:

python -m nltk.downloader punkt

enter image description here

答案 8 :(得分:3)

在使用分配的文件夹进行多次下载时,我遇到了类似的问题,我不得不手动添加数据路径:

单次下载,可以完成以下操作(有效)

getY()

此代码有效,这意味着nltk会记住在下载功能中传递的下载路径。另一方面,如果我下载后续软件包,则会得到与用户所描述的类似的错误:

多次下载会引发错误:

import os as _os
from nltk.corpus import stopwords
from nltk import download as nltk_download

nltk_download('stopwords', download_dir=_os.path.join(get_project_root_path(), 'temp'), raise_on_error=True)

stop_words: list = stopwords.words('english')

错误:

未找到资源标记。 请使用NLTK下载器获取资源:

导入nltk nltk.download('punkt')

现在,如果我将ntlk数据路径附加到我的下载路径中,它将起作用:

import os as _os

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

from nltk import download as nltk_download

nltk_download(['stopwords', 'punkt'], download_dir=_os.path.join(get_project_root_path(), 'temp'), raise_on_error=True)

print(stopwords.words('english'))
print(word_tokenize("I am trying to find the download path 99."))


这有效...不确定为什么在一种情况下不起作用,但在另一种情况下不起作用,但是错误消息似乎暗示它第二次不检入下载文件夹。 注意:使用Windows8.1 / python3.7 / nltk3.5

答案 9 :(得分:2)

当我试图在nltk中进行pos标记时,我遇到了这个问题。 我弄错的方法是创建一个新目录以及名为“taggers”的语料库目录,并在目录标记器中复制max_pos_tagger。 希望它也适合你。祝它好运!!!。

答案 10 :(得分:2)

Python-3.6中,我可以在回溯中看到建议。那很有帮助。 因此,我要说的是,你们要注意自己遇到的错误,大多数时候答案都在该问题之内;)。

enter image description here

然后按照此处其他人的建议,使用python终端或使用python -c "import nltk; nltk.download('wordnet')"之类的命令,我们可以即时安装它们。 您只需运行一次该命令,然后它将数据本地保存在您的主目录中。

答案 11 :(得分:0)

在Spyder中,转到活动的外壳并使用以下2个命令下载nltk。 导入NLTK nltk.download() 然后,您应该看到NLTK下载器窗口打开,如下所示,转到此窗口中的“模型”选项卡,然后单击“ punkt”并下载“ punkt”

Window

答案 12 :(得分:0)

HttpOnly无法解决此问题。我尝试了以下方法,它对我有用:

nltk.download()文件夹中,将下载的'...AppData\Roaming\nltk_data\tokenizers'文件夹解压缩到同一位置。

答案 13 :(得分:0)

punkt标记生成器的数据非常大,超过了 35 MB ,如果像我一样,您在lambda这样的资源有限的环境中运行nltk,这可能是一个大问题。

如果您只需要一种或几种语言标记器,则可以通过仅包含这些语言的.pickle文件来大大减少数据的大小。

如果您只需要支持英语,那么您的nltk数据大小可以减小为 407 KB (对于python 3版本)。

步骤

  1. 下载nltk点数据:https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip
  2. 在您的环境中的某个位置创建文件夹:nltk_data/tokenizers/punkt,如果使用python 3,请添加另一个文件夹PY3,以便新目录结构看起来像nltk_data/tokenizers/punkt/PY3。就我而言,我在项目的根目录下创建了这些文件夹。
  3. 解压缩zip并将您要支持的语言的.pickle文件移动到刚创建的punkt文件夹中。 注意:Python 3用户应使用PY3文件夹中的泡菜。加载语言文件后,其外观应类似于:example-folder-stucture
  4. 现在,假设您的数据不在pre-defined search paths之一中,则只需将nltk_data文件夹添加到搜索路径。您可以使用环境变量NLTK_DATA='path/to/your/nltk_data'添加数据。您还可以通过以下方式在python的运行时添加自定义路径:
from nltk import data
data.path += ['/path/to/your/nltk_data']

注意:如果您不需要在运行时加载数据或将数据与代码捆绑在一起,则最好在built-in locations that nltk looks for上创建nltk_data文件夹。

答案 14 :(得分:0)

检查您是否拥有所有NLTK库。

答案 15 :(得分:0)

您只需要转到python控制台并键入->

导入nltk

按Enter键并重新输入->

nltk.download()

,然后会出现一个界面。只需搜索下载按钮并按下即可。它将安装所有必需的项目,并且需要时间。给时间,然后再试一次。您的问题会得到解决

答案 16 :(得分:-1)

import nltk
nltk.download('gutenberg')
nltk.download('genesis')
nltk.download('inaugural')
nltk.download('nps_chat')
nltk.download('webtext')
nltk.download('treebank')
nltk.download('punkt')
nltk.download('wordnet')