Python 元组没有属性“isdigit”
我需要使用NLTK模块进行一些文字处理,但出现以下错误: AttributeError:“tuple”对象没有属性“isdigit” 有人知道如何处理这个错误吗Python 元组没有属性“isdigit”,python,nltk,tokenize,Python,Nltk,Tokenize,我需要使用NLTK模块进行一些文字处理,但出现以下错误: AttributeError:“tuple”对象没有属性“isdigit” 有人知道如何处理这个错误吗 Traceback (most recent call last): File "preprocessing-edit.py", line 36, in <module> postoks = nltk.tag.pos_tag(tok) NameError: name 'tok' is not defined P
Traceback (most recent call last):
File "preprocessing-edit.py", line 36, in <module>
postoks = nltk.tag.pos_tag(tok)
NameError: name 'tok' is not defined
PS C:\Users\moham\Desktop\Presentation> python preprocessing-edit.py
Traceback (most recent call last):
File "preprocessing-edit.py", line 37, in <module>
postoks = nltk.tag.pos_tag(tok)
File "c:\python34\lib\site-packages\nltk-3.1-py3.4.egg\nltk\tag\__init__.py", line 111, in pos_tag
return _pos_tag(tokens, tagset, tagger)
File "c:\python34\lib\site-packages\nltk-3.1-py3.4.egg\nltk\tag\__init__.py", line 82, in _pos_tag
tagged_tokens = tagger.tag(tokens)
File "c:\python34\lib\site-packages\nltk-3.1-py3.4.egg\nltk\tag\perceptron.py", line 153, in tag
context = self.START + [self.normalize(w) for w in tokens] + self.END
File "c:\python34\lib\site-packages\nltk-3.1-py3.4.egg\nltk\tag\perceptron.py", line 153, in <listcomp>
context = self.START + [self.normalize(w) for w in tokens] + self.END
File "c:\python34\lib\site-packages\nltk-3.1-py3.4.egg\nltk\tag\perceptron.py", line 228, in normalize
elif word.isdigit() and len(word) == 4:
AttributeError: 'tuple' object has no attribute 'isdigit'
在nltk 3.1版本中,默认标记器设置为Perceptron。现在是最新版本。我的所有nltk.regexp_标记都停止正常工作,并且我的所有nltk.pos_标记开始出现上述错误 我目前的解决方案是使用以前的版本nltk 3.0.1使其正常工作。我不确定这是否是nltk当前版本中的错误 ubuntu中nltk 3.0.4版本的安装说明。从主目录或任何其他目录执行以下步骤
$ wget https://github.com/nltk/nltk/archive/3.0.4.tar.gz
$ tar -xvzf 3.0.4.tar.gz
$ cd nltk-3.0.4
$ sudo python3.4 setup.py install
在nltk 3.1版本中,默认标记器设置为Perceptron。现在是最新版本。我的所有nltk.regexp_标记都停止正常工作,并且我的所有nltk.pos_标记开始出现上述错误 我目前的解决方案是使用以前的版本nltk 3.0.1使其正常工作。我不确定这是否是nltk当前版本中的错误 ubuntu中nltk 3.0.4版本的安装说明。从主目录或任何其他目录执行以下步骤
$ wget https://github.com/nltk/nltk/archive/3.0.4.tar.gz
$ tar -xvzf 3.0.4.tar.gz
$ cd nltk-3.0.4
$ sudo python3.4 setup.py install
另一种简单的方法是更改此部分:
tok = nltk.regexp_tokenize(text, sentence_re)
postoks = nltk.tag.pos_tag(tok)
并将其替换为nltk标准单词标记器:
toks = nltk.word_tokenize(text)
postoks = nltk.tag.pos_tag(toks)
从理论上讲,性能和结果应该没有太大差异。另一种简单的方法是更改此部分:
tok = nltk.regexp_tokenize(text, sentence_re)
postoks = nltk.tag.pos_tag(tok)
并将其替换为nltk标准单词标记器:
toks = nltk.word_tokenize(text)
postoks = nltk.tag.pos_tag(toks)
从理论上讲,性能和结果应该没有太大差异。对于nltk的更高版本,正则表达式中的更改可以解决这一问题。我找到了解决办法 - 使用括号对给定表达式进行分组,我将所有括号都更改为非捕获 句子[U re=r'?:?:[A-Z]?:[A-Z]+。?:\w+?:-\w+*?:\$?\d+?:。\d+?%?:
-对于nltk的更高版本,正则表达式中的更改可以解决此问题。我找到了解决办法 - 使用括号对给定表达式进行分组,我将所有括号都更改为非捕获 句子[U re=r'?:?:[A-Z]?:[A-Z]+。?:\w+?:-\w+*?:\$?\d+?:。\d+?%?:
-为什么元组会有isdigit方法?那是一根弦的。很明显,您正在对一个元组进行操作,您认为这是一个字符串。它发生在nltk内部。我猜这意味着它是用一个错误的参数调用的。我不知道该怎么称呼它。为什么一个元组会有一个isdigit方法?那是一根弦的。很明显,您正在对一个元组进行操作,您认为这是一个字符串。它发生在nltk内部。我猜这意味着它是用一个错误的参数调用的。我不知道该怎么称呼它。谢谢你的反馈。这真的很有帮助。但就我而言,我必须安装3.0.4。我仍在努力让这个解决方案发挥作用,但一般来说,一个pip命令或requirements.txt条目更适合这里,因为3.0.5已经发布,并且没有我们正在避免的3.1问题,nltk>3.0,谢谢您的反馈。这真的很有帮助。但就我而言,我必须安装3.0.4。我仍在努力让这个解决方案发挥作用,但一般来说,一个pip命令或requirements.txt条目更适合这里,因为3.0.5已经过时,并且没有我们正在避免的3.1问题,nltk>3.0,