3

Ich versuche, einen Satz zu nehmen und die Beziehung zwischen Person (PER) und Ort (GPE) zu extrahieren.Beziehungsextraktion zwischen Person und Stadt/Staat

Satz: "John kommt aus Ohio, Michael kommt aus Florida und Rebecca kommt aus Nashville in Tennessee."

Für die endgültige Person hat sie sowohl eine Stadt als auch einen Staat, der als ihr Ort extrahiert werden könnte. Bis jetzt habe ich versucht, nltk dazu zu benutzen, aber ich konnte nur ihre Stadt und nicht ihren Zustand extrahieren.

Was ich habe versucht:

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)) 

Meine Ausgabe ist:

[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'] 

Das Problem Rebecca ist. Wie kann ich herausfinden, dass sowohl Nashville als auch Tennesee Teil ihres Standorts sind? Oder auch nur Tennessee allein?

Antwort

0

Es scheint mir, dass Sie zuerst intra-location Beziehung extrahieren müssen (Nashville in Tennessee). Dann stellen Sie sicher, dass Sie alle Standorte zu Rebecca transitiv zuweisen (wenn Rebecca in Nashville und Nashville in Tennessee ist, dann ist Rebecca in Nashville und Rebecca in Tennessee).

Das wäre ein weiterer Beziehungstyp und eine Logik für die obige Schlussfolgerung (Dinge werden ziemlich schnell kompliziert, aber es ist schwer, es zu vermeiden).

Verwandte Themen