NLTK v3.2:无法 nltk.pos_tag()
NLTK v3.2: Unable to nltk.pos_tag()
嗨文本挖掘冠军,
我在 Windows 10.(客户端环境)
上使用带有 NLTK v3.2 的 Anaconda
当我尝试 POS 标记时,我不断收到 URLLIB2 错误:
URLError: <urlopen error unknown url type: c>
urllib2 似乎无法识别 windows 路径?我该如何解决这个问题?
命令很简单:
nltk.pos_tag(nltk.word_tokenize("Hello World"))
编辑:
有一个重复的问题,但是我认为 manan 和 alvas 在这里获得的答案是更好的解决方法。
已编辑
此问题已从 NLTK v3.2.1 中解决。升级你的 NLTK 版本可以解决这个问题,例如pip install -U nltk
.
我遇到了同样的问题,遇到的错误如下;
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\nltk-3.2-py2.7.egg\nltk\tag\__init__.py", line 110, in pos_tag
tagger = PerceptronTagger()
File "C:\Python27\lib\site-packages\nltk-3.2-py2.7.egg\nltk\tag\perceptron.py", line 141, in __init__
self.load(AP_MODEL_LOC)
File "C:\Python27\lib\site-packages\nltk-3.2-py2.7.egg\nltk\tag\perceptron.py", line 209, in load
self.model.weights, self.tagdict, self.classes = load(loc)
File "C:\Python27\lib\site-packages\nltk-3.2-py2.7.egg\nltk\data.py", line 801, in load
opened_resource = _open(resource_url)
File "C:\Python27\lib\site-packages\nltk-3.2-py2.7.egg\nltk\data.py", line 924, in _open
return urlopen(resource_url)
File "C:\Python27\lib\urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 391, in open
response = self._open(req, data)
File "C:\Python27\lib\urllib2.py", line 414, in _open
'unknown_open', req)
File "C:\Python27\lib\urllib2.py", line 369, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 1206, in unknown_open
raise URLError('unknown url type: %s' % type)
urllib2.URLError: <urlopen error unknown url type: c>
您提到的 URLError 是由于 Windows 的 NLTK 库中 perceptron.py 文件中的错误造成的。
在我的机器上,该文件位于此位置
C:\Python27\Lib\site-packages\nltk-3.2-py2.7.egg\nltk\tag\perceptron.py
(基本上在您拥有 Python27 文件夹的地方查看等效位置)
该错误基本上是在代码中找到 averaged_perceptron_tagger 在您的机器中的相应位置。可以看看 data.py 文件中提到的第 801 行和第 924 行。
我认为 NLTK 开发者社区最近修复了代码中的这个错误。看看几天前对他们的代码所做的提交。
修改后的代码片段如下;
self.tagdict = {}
self.classes = set()
if load:
AP_MODEL_LOC = 'file:'+str(find('taggers/averaged_perceptron_tagger/'+PICKLE))
self.load(AP_MODEL_LOC)
# Initially it was:AP_MODEL_LOC = str(find('taggers/averaged_perceptron_tagger/'+PICKLE))
def tag(self, tokens):
将文件更新到最近的提交对我有用,并且能够使用 nltk.pos_tag 命令。我相信这也会解决您的问题(假设您已设置好所有其他内容)。
已编辑
此问题已从 NLTK v3.2.1 中解决。请升级您的 NLTK!
首先阅读@MananVyas 的回答以了解原因:
这里是如何使用 NLTK 3.2,而不降级到 NLTK v3.1,你可以使用这个 "hack":
>>> from nltk.tag import PerceptronTagger
>>> from nltk.data import find
>>> PICKLE = "averaged_perceptron_tagger.pickle"
>>> AP_MODEL_LOC = 'file:'+str(find('taggers/averaged_perceptron_tagger/'+PICKLE))
>>> tagger = PerceptronTagger(load=False)
>>> tagger.load(AP_MODEL_LOC)
>>> pos_tag = tagger.tag
>>> pos_tag('The quick brown fox jumps over the lazy dog'.split())
[('The', 'DT'), ('quick', 'JJ'), ('brown', 'NN'), ('fox', 'NN'), ('jumps', 'VBZ'), ('over', 'IN'), ('the', 'DT'), ('lazy', 'JJ'), ('dog', 'NN')]
我前一段时间遇到了同样的问题。
解决方案:
nltk.download('averaged_perceptron_tagger')
嗨文本挖掘冠军,
我在 Windows 10.(客户端环境)
上使用带有 NLTK v3.2 的 Anaconda当我尝试 POS 标记时,我不断收到 URLLIB2 错误:
URLError: <urlopen error unknown url type: c>
urllib2 似乎无法识别 windows 路径?我该如何解决这个问题?
命令很简单:
nltk.pos_tag(nltk.word_tokenize("Hello World"))
编辑: 有一个重复的问题,但是我认为 manan 和 alvas 在这里获得的答案是更好的解决方法。
已编辑
此问题已从 NLTK v3.2.1 中解决。升级你的 NLTK 版本可以解决这个问题,例如pip install -U nltk
.
我遇到了同样的问题,遇到的错误如下;
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\nltk-3.2-py2.7.egg\nltk\tag\__init__.py", line 110, in pos_tag
tagger = PerceptronTagger()
File "C:\Python27\lib\site-packages\nltk-3.2-py2.7.egg\nltk\tag\perceptron.py", line 141, in __init__
self.load(AP_MODEL_LOC)
File "C:\Python27\lib\site-packages\nltk-3.2-py2.7.egg\nltk\tag\perceptron.py", line 209, in load
self.model.weights, self.tagdict, self.classes = load(loc)
File "C:\Python27\lib\site-packages\nltk-3.2-py2.7.egg\nltk\data.py", line 801, in load
opened_resource = _open(resource_url)
File "C:\Python27\lib\site-packages\nltk-3.2-py2.7.egg\nltk\data.py", line 924, in _open
return urlopen(resource_url)
File "C:\Python27\lib\urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 391, in open
response = self._open(req, data)
File "C:\Python27\lib\urllib2.py", line 414, in _open
'unknown_open', req)
File "C:\Python27\lib\urllib2.py", line 369, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 1206, in unknown_open
raise URLError('unknown url type: %s' % type)
urllib2.URLError: <urlopen error unknown url type: c>
您提到的 URLError 是由于 Windows 的 NLTK 库中 perceptron.py 文件中的错误造成的。 在我的机器上,该文件位于此位置
C:\Python27\Lib\site-packages\nltk-3.2-py2.7.egg\nltk\tag\perceptron.py
(基本上在您拥有 Python27 文件夹的地方查看等效位置)
该错误基本上是在代码中找到 averaged_perceptron_tagger 在您的机器中的相应位置。可以看看 data.py 文件中提到的第 801 行和第 924 行。
我认为 NLTK 开发者社区最近修复了代码中的这个错误。看看几天前对他们的代码所做的提交。
修改后的代码片段如下;
self.tagdict = {}
self.classes = set()
if load:
AP_MODEL_LOC = 'file:'+str(find('taggers/averaged_perceptron_tagger/'+PICKLE))
self.load(AP_MODEL_LOC)
# Initially it was:AP_MODEL_LOC = str(find('taggers/averaged_perceptron_tagger/'+PICKLE))
def tag(self, tokens):
将文件更新到最近的提交对我有用,并且能够使用 nltk.pos_tag 命令。我相信这也会解决您的问题(假设您已设置好所有其他内容)。
已编辑
此问题已从 NLTK v3.2.1 中解决。请升级您的 NLTK!
首先阅读@MananVyas 的回答以了解原因:
这里是如何使用 NLTK 3.2,而不降级到 NLTK v3.1,你可以使用这个 "hack":
>>> from nltk.tag import PerceptronTagger
>>> from nltk.data import find
>>> PICKLE = "averaged_perceptron_tagger.pickle"
>>> AP_MODEL_LOC = 'file:'+str(find('taggers/averaged_perceptron_tagger/'+PICKLE))
>>> tagger = PerceptronTagger(load=False)
>>> tagger.load(AP_MODEL_LOC)
>>> pos_tag = tagger.tag
>>> pos_tag('The quick brown fox jumps over the lazy dog'.split())
[('The', 'DT'), ('quick', 'JJ'), ('brown', 'NN'), ('fox', 'NN'), ('jumps', 'VBZ'), ('over', 'IN'), ('the', 'DT'), ('lazy', 'JJ'), ('dog', 'NN')]
我前一段时间遇到了同样的问题。 解决方案:
nltk.download('averaged_perceptron_tagger')