Python 无法使用nltk.data.load加载english.pickle
尝试加载Python 无法使用nltk.data.load加载english.pickle,python,jenkins,nltk,Python,Jenkins,Nltk,尝试加载punkt标记器时 import nltk.data tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle') …引发了一个LookupError: > LookupError: > ********************************************************************* > Resource 'tokenizers/punkt
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()
然后出现一个安装窗口。转到“模型”选项卡,并从“标识符”列下选择“punkt”。然后单击下载,它将安装必要的文件。那它就应该起作用了 我在尝试使用nltk进行词性标注时遇到了这个问题。 我得到正确答案的方法是,创建一个新目录以及名为“taggers”的corpora目录,并在目录taggers中复制max_pos_tagger。
希望它对你也有用。祝你好运 您看到该错误的主要原因是nltk无法找到
punkt
包。由于nltk
suite的大小,默认情况下安装时不会下载所有可用的软件包
你可以像这样下载punkt
软件包
import nltk
nltk.download('punkt')
from nltk import word_tokenize,sent_tokenize
在较新版本的错误消息中也建议这样做:
LookupError:
**********************************************************************
Resource punkt not found.
Please use the NLTK Downloader to obtain the resource:
>>> import nltk
>>> nltk.download('punkt')
Searched in:
- '/root/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
- '/usr/nltk_data'
- '/usr/lib/nltk_data'
- ''
**********************************************************************
如果不向下载
函数传递任何参数,它将下载所有包,即分块器
,语法
,杂项
,情感
,标记器
,语料库
,帮助
,模型
,词干
,标记器
nltk.download()
上述功能将包保存到特定目录。您可以从这里的注释中找到该目录位置 Simplenltk.download()
无法解决此问题。我尝试了下面的方法,效果很好:
在nltk
文件夹中创建tokenizers
文件夹,并将punkt
文件夹复制到tokenizers
文件夹中
这会有用的。!文件夹结构需要如图所示 这就是刚才对我起作用的原因:
# 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))
句子\u标记化是一个标记列表:
[['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', '.']]
这些句子取自示例检查是否有所有NLTK库。NLTK有其预先训练的标记器模型。模型从内部预定义的web源下载,并存储在已安装nltk包的路径中,同时执行以下可能的函数调用 例1 tokenizer=nltk.data.load('nltk:tokenizers/punkt/english.pickle') 例2 nltk.download('punkt') 如果您在代码中调用上述句子,请确保您的internet连接没有任何防火墙保护 我想和大家分享一些更好的方法,以更好的理解来解决上述问题 请按照以下步骤使用nltk进行英语单词标记 步骤1:首先按照web路径下载“english.pickle”模型 转到链接“”并单击选项“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
让我知道,如果您在bash命令行中遇到任何问题,请运行:
$ python -c "import nltk; nltk.download('punkt')"
在Jenkins上,可以通过在Build选项卡下的Virtualenv Builder中添加以下类似代码来解决此问题:
python-m nltk.downloader punkt
这对我来说很有用:
>>> import nltk
>>> nltk.download()
在windows中,您还将获得nltk下载程序
punkt tokenizers数据非常大,超过35 MB,如果您像我一样在资源有限的环境(如lambda)中运行nltk,这可能是一件大事 如果您只需要一个或几个语言标记器,您可以通过只包含那些语言
.pickle
文件来大幅减少数据的大小
如果您只需要支持英语,那么您的nltk数据大小可以减少到407KB(对于python 3版本)
台阶
nltk_数据/tokenizers/punkt
,如果使用python 3,请添加另一个文件夹PY3
,以便新的目录结构看起来像nltk_数据/tokenizers/punkt/PY3
。在我的例子中,我在项目的根目录下创建了这些文件夹李>
.pickle
文件移动到刚刚创建的punkt
文件夹中注意:Python 3用户应该使用PY3
文件夹中的pickle。加载语言文件后,它应该看起来像:nltk_data
文件夹添加到搜索路径,假设您的数据不在其中一个路径中。您可以使用环境变量NLTK_data='path/将数据添加到/your/NLTK_data'
。您还可以通过以下操作在python运行时添加自定义路径:从nltk导入数据
data.path+=['/path/to/your/nltk_data']
注意:如果您不需要在运行时加载数据或将数据与代码捆绑在一起,最好在Spyder中的中创建
nltk_数据
文件夹,转到活动shell并使用以下2个命令下载nltk。
导入nltk
nltk.download()
然后您应该看到NLTK downloader窗口如下所示打开,转到该窗口中的“模型”选项卡,单击“punkt”并下载“punkt”
nltk.download()
无法解决此问题。我尝试了下面的方法,效果很好:
在
“…AppData\Roaming\nltk_data\tokenizers”
文件夹中,提取相同位置下载的punkt.zip
文件夹。在Python-3.6
中,我可以在回溯中看到建议。那很有帮助。
因此,我会告诉你们注意你们所犯的错误,大多数时候答案都在这个问题之内;)
然后,正如其他人所建议的,使用python终端或使用类似py的命令
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')
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."))
import os as _os
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from nltk import download as nltk_download
from nltk.data import path as nltk_path
nltk_path.append( _os.path.join(get_project_root_path(), 'temp'))
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."))
import nltk
nltk.download()