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?