3

我試圖拿出一個句子,並提取Person(PER)和Place(GPE)之間的關係。個人與城市/州之間的關係提取

句子:「約翰來自俄亥俄州,邁克爾來自佛羅里達州,麗貝卡來自田納西州的納什維爾。」

對於最後一個人,她有一個城市和一個國家,可以被提取作爲她的地方。到目前爲止,我嘗試過使用nltk來做到這一點,但只能提取她的城市,而不是她的狀態。

我已經試過:

import re 
from nltk import ne_chunk, pos_tag, word_tokenize 
from nltk.sem.relextract import extract_rels, rtuple 

sentence = "John is from Ohio, Michael is from Florida and Rebecca is from Nashville which is in Tennessee." 
chunked = ne_chunk(pos_tag(word_tokenize(sentence))) 
ISFROM = re.compile(r'.*\bfrom\b.*') 
rels = extract_rels('PER', 'GPE', chunked, corpus = 'ace', pattern = ISFROM) 
for rel in rels: 
    print(rtuple(rel)) 

我的輸出是:

[PER: 'John/NNP'] 'is/VBZ from/IN' [GPE: 'Ohio/NNP'] 
[PER: 'Michael/NNP'] 'is/VBZ from/IN' [GPE: 'Florida/NNP'] 
[PER: 'Rebecca/NNP'] 'is/VBZ from/IN' [GPE: 'Nashville/NNP'] 

問題是麗貝卡。我怎樣才能提取納什維爾和田納西都屬於她的位置?甚至只有田納西州呢?

回答

0

在我看來,你必須首先提取位置內關係(納什維爾在田納西州)。然後確保你將所有位置傳遞給麗貝卡(如果麗貝卡在納什維爾,那什維爾在田納西州,那麼麗貝卡在納什維爾,麗貝卡在田納西州)。

這將是一個更多的關係類型和上述推論的一些邏輯(事情變得很複雜,但很難避免它)。