2016-09-04 17 views
0

私はパンダでPOSを抽出したいと思います。私はAttributeError: 'list'オブジェクトに 'isdigit'属性がありません

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' 

何が問題になっていますか? 。isdigitstrのメソッドであるため

答えて

2

あなたは、実際に直接pos_tag()方法にSeriesオブジェクトを渡すことができます。

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')] 
0

表現s.str.split()は、pos_tagが期待する文字列(文字列のlistない

+1

それは実際にはないそれはPAです。 ndas 'Series'インスタンス。その中の各* column *は文字列のリストです。 –

+0

さて、それはリストのようです。間違って申し訳ありません。 –

+0

OPはトレースバックを含んでいませんでしたので理解でき、その式*が原因です。あなたが言う理由のためだけではありません。 –

関連する問題