2013-10-21 9 views
9

名前と組織名のように固有名詞をsmsのような非常に小さな塊から抽出しようとしています.nltk Finding Proper Nouns using NLTK WordNetで利用できる基本パーサーは名詞我々は固有名詞を取得するときに問題が大文字で始まらないさを得るために、このようなテキストのためにSUMITのような名前が適切な名詞(名前と組織)を取得するためにテキストを解析する - python nltk

>>> sentence = "i spoke with sumit and rajesh and Samit about the gridlock situation last night @ around 8 pm last nite" 
>>> tagged_sent = pos_tag(sentence.split()) 
>>> print tagged_sent 
[('i', 'PRP'), ('spoke', 'VBP'), ('with', 'IN'), **('sumit', 'NN')**, ('and', 'CC'), ('rajesh', 'JJ'), ('and', 'CC'), **('Samit', 'NNP'),** ('about', 'IN'), ('the', 'DT'), ('gridlock', 'NN'), ('situation', 'NN'), ('last', 'JJ'), ('night', 'NN'), ('@', 'IN'), ('around', 'IN'), ('8', 'CD'), ('pm', 'NN'), ('last', 'JJ'), ('nite', 'NN')] 
+0

名前付きエンティティリコグナイザを適用する前にトゥルーキャスティングを試すことができます。 –

答えて

1

python-nameparserをご覧ください。 名前もcapitalizationと推測します。不完全な答えは申し訳ありませんが、python-nameparserを使用した経験はあまりありません。

運が良かった!

+1

まあ、netgenderのような名前のパーサー、あなたが名前を知っているので、それを解析することができますが、名前が "sumit"や "Sumit"や "SUMIT"のように書かれていても、 –

7

固有名詞として認識されませんに良い方法はあります人や組織の名前を抽出する

from nltk import pos_tag, ne_chunk 
from nltk.tokenize import SpaceTokenizer 

tokenizer = SpaceTokenizer() 
toks = tokenizer.tokenize(sentence) 
pos = pos_tag(toks) 
chunked_nes = ne_chunk(pos) 

nes = [' '.join(map(lambda x: x[0], ne.leaves())) for ne in chunked_nes if isinstance(ne, nltk.tree.Tree)] 

ただし、すべて名前付きエンティティ認識器はコミットエラーです。あなたが本当に適切な名前を見逃したくなければ、適切な名前の辞書を使い、その名前が辞書に含まれているかどうかを調べることができます。

+0

ありがとう@mbatchkarov私は(私が持っている)名前の膨大な辞書を持っている場合、私はどのように私はPythonで1つを作るのですか、アドバイスをしてください、あなたの答えはよさそうだよそれを試してみるよ –

0

は、あなたがこのne_chunk()関数の助けを借りて、人、組織、場所の名前を取得することができます

def get_entities(self,args): 
    qry = "who is Mahatma Gandhi" 
    tokens = nltk.tokenize.word_tokenize(qry) 
    pos = nltk.pos_tag(tokens) 
    sentt = nltk.ne_chunk(pos, binary = False) 
    print sentt 
    person = [] 
    for subtree in sentt.subtrees(filter=lambda t: t.node == 'PERSON'): 
     for leave in subtree.leaves(): 
      person.append(leave) 
    print "person=", person 

このコードを試してみてください。それが役に立てば幸い。 Thankz

関連する問題