2011-02-01 39 views
98

当试图加载punkt标记生成器无法载入english.pickle ...与nltk.data.load

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' 
>  ********************************************************************** 
+2

你可以使用`下载咸菜模型>>> nltk.download()` – alvas 2013-03-06 11:54:50

回答

191

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

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

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

+0

这完美的作品,谢谢! – JohnZ 2013-04-03 17:53:38

+3

请注意,在某些版本中,没有“模型”选项卡,您可以转到“下载”并尝试获取软件包“punkt”或使用任何“列表”选项列出可用软件包。 – ely 2014-01-17 19:04:25

+1

它安装到我的个人文件夹的目录nltk_data。我应该将这个punkt目录复制到任何nltk库文件夹中。请帮助 – sumanth232 2015-04-14 11:31:14

2

我遇到这个问题,当我试图在nltk做pos标记。 我正确的方法是制作一个新目录以及名为“taggers”的语料库目录,并在目录标签中复制max_pos_tagger。
希望它也适用于你。祝你好运!!!

65
import nltk 
nltk.download('punkt') 

from nltk import word_tokenize,sent_tokenize 

使用断词:)

2

简单nltk.download()不会解决这个问题。我试过下面和它的工作对我来说:在nltk文件夹

创建tokenizers文件夹,并将您的punkt文件夹到文件夹tokenizers

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

18

这就是我刚才的工作:

# 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"

0

检查你是否有所有的NLTK库。

2

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

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

E.g. 2 nltk.download('punkt')

如果您在代码中调用上述语句,请确保您的Internet连接没有任何防火墙保护。

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

请遵循以下步骤,并使用nltk享受英语单词标记化。

步骤1:首先下载web路径下的“english.pickle”模型。

转到链接“http://www.nltk.org/nltk_data/”,并在选项点击“下载”,“107 PUNKT标记生成器模型”

第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 

让我知道,如果你面对任何问题

4

从bash命令行中运行:

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

在詹金斯这可以通过添加以下类似的代码VIRTUALENV生成器被固定 under Build tab:

python -m nltk.downloader punkt

enter image description here