【问题标题】:AttributeError: 'list' object has no attribute 'isdigit'AttributeError:“列表”对象没有属性“isdigit”
【发布时间】:2016-09-05 05:54:29
【问题描述】:

我想在 pandas 中提取 POS。我这样做如下

import pandas as pd
from nltk.tag import pos_tag
df = pd.DataFrame({'pos': ['noun', 'Alice', 'good', 'well', 'city']})
s = df['pos']
tagged_sent = pos_tag(s.str.split())

但是得到一个回溯:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "../lib/python2.7/site-packages/nltk/tag/__init__.py", line 111, in pos_tag
    return _pos_tag(tokens, tagset, tagger)
  File "../lib/python2.7/site-packages/nltk/tag/__init__.py", line 82, in _pos_tag
    tagged_tokens = tagger.tag(tokens)
  File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/site-packages/nltk/tag/perceptron.py", line 152, in tag
    context = self.START + [self.normalize(w) for w in tokens] + self.END
  File "../lib/python2.7/site-packages/nltk/tag/perceptron.py", line 224, in normalize
    elif word.isdigit() and len(word) == 4:
AttributeError: 'list' object has no attribute 'isdigit'

怎么了?

【问题讨论】:

    标签: python nltk pos-tagger


    【解决方案1】:

    您实际上可以将Series 对象直接传递给pos_tag() 方法:

    s = df['pos']
    tagged_sent = pos_tag(s)  # or pos_tag(s.tolist())
    print(tagged_sent)
    

    打印:

    [('noun', 'JJ'), ('Alice', 'NNP'), ('good', 'JJ'), ('well', 'RB'), ('city', 'NN')]
    

    【讨论】:

      【解决方案2】:

      表达式s.str.split() 是字符串的list,而不是字符串(由pos_tag 预期。因为isdigitstr 的方法。

      【讨论】:

      • 实际上并非如此。这是一个熊猫Series 实例。其中的每一都是一个字符串列表。
      • 好吧,它看起来像一个列表。抱歉弄错了。
      • OP 没有费心包含回溯,所以这是可以理解的,并且该表达式 的原因。只是不是因为你说的原因。
      • @MartijnPieters 我试图插入回溯但我不能。代码太多
      • @Edward:我为你插入了一个。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      • 2021-07-05
      • 2018-01-16
      • 2016-05-14
      • 2016-12-21
      • 2022-01-23
      相关资源
      最近更新 更多