Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 元组没有属性“isdigit”_Python_Nltk_Tokenize - Fatal编程技术网

Python 元组没有属性“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

我需要使用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

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,