2017-03-13 1 views
3

NLTKを使用して、PERSONとORGANIZATIONの関係を抽出しています。NLTKの文からの関係の抽出

また、ORGANIZATIONとLOCATIONの関係を抽出したいと思います。 NLTKのバージョンは3.2.1です。

私は品詞タグ付けと名前付きエンティティ認識(NER)を利用しました。また、NER結果のためにパーズツリーが描画されます。
しかし、私はその文から上記の関係を抽出することができません。ここで

コードです:

import nltk, re 
from nltk import word_tokenize 

sentence = "Mark works at JPMC in London every day" 
pos_tags = nltk.pos_tag(word_tokenize(sentence))   # POS tagging of the sentence 
ne = nltk.ne_chunk(pos_tags)        # Named Entity Recognition 
ne.draw()             # Draw the Parse Tree 

IN = re.compile(r'.*\bin\b(?!\b.+ing)') 
for rel1 in nltk.sem.extract_rels('PER', 'ORG', pos_tags, pattern = IN): 
    print(nltk.sem.rtuple(rel1)) 
for rel2 in nltk.sem.extract_rels('ORG', 'LOC', pos_tags, pattern = IN): 
    print(nltk.sem.rtuple(rel2)) 


「人を - 組織を抽出する方法関係と'組織 - 場所'関係を?

答えて

2

私はdocsにはタグが付けられていないと思うので、それはNEであるべきです。 [PER: 'マーク/ NNP']

の作業コード

senten = "Mark works in JPMC in London every day" 
pos_tags = nltk.pos_tag(word_tokenize(senten)) # POS tagging of the sentence 
ne = nltk.ne_chunk(pos_tags) # Named Entity Recognition 

chunked = nltk.ne_chunk_sents(pos_tags, binary=True) 
# ne.draw() # Draw the Parse Tree 


print(pos_tags) 

IN = re.compile(r'.*\bin\b(?!\b.+ing)') 

for rel in nltk.sem.extract_rels('PERSON', 'ORGANIZATION', ne, corpus='ace', pattern=IN): 
    print(nltk.sem.rtuple(rel)) 

出力

は '中/ IN/VBZを作品' [ORG: 'JPMC/NNP']

関連する問題