无法使用nltk.data.load加载english.pickle

当试图加载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' > ********************************************************************** 

我有这个相同的问题。 进入一个python shell并键入:

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

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

 import nltk nltk.download('punkt') from nltk import word_tokenize,sent_tokenize 

使用分词器:)

这就是我刚才的工作:

 # 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', '.']] 

这些句子是从随书“挖掘社交networking,第二版”的示例ipython笔记本中提取的。

简单的nltk.download()不会解决这个问题。 我试了下面,它为我工作:

nltk文件夹中创build一个tokenizers文件夹,并将你的punkt文件夹复制到tokenizers文件夹中。

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

当我试图在nltk中做pos标记时,我遇到了这个问题。 我得到正确的方式是通过创build一个新目录以及名为“taggers”的语料库目录,并复制目录标记中的max_pos_tagger。
希望它也适合你。 祝你好运!

从bash命令行运行:

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

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

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

例如2 nltk.download('punkt')

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

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

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

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

转到链接“ http://www.nltk.org/nltk_data/ ”并点击“下载”选项“107. Punkt Tokenizer Models”

步骤2:解压下载的“punkt.zip”文件,find“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 

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

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