Извлечение отношений между человеком и городом/штатом

Я пытаюсь взять предложение и извлечь связь между человеком (PER) и местом (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']

Проблема в Ребекке. Как я могу извлечь, что и Нэшвилл, и Теннесси являются частью ее местонахождения? Или хотя бы только один Теннесси?


person jar49    schedule 21.07.2017    source источник


Ответы (1)


Мне кажется, что вы должны сначала извлечь связь внутри местоположения (Нэшвилл в Теннесси). Затем убедитесь, что вы транзитивно назначаете все местоположения Ребекке (если Ребекка находится в Нэшвилле, а Нэшвилл — в Теннесси, то Ребекка находится в Нэшвилле, а Ребекка — в Теннесси).

Это был бы еще один тип отношений и некоторая логика для приведенного выше вывода (все довольно быстро усложняется, но этого трудно избежать).

person sophros    schedule 06.09.2017