Stanford OpenNLP извлекает только те имена, которые упоминаются в отношении (идентифицированной) организации - PullRequest
0 голосов
/ 24 августа 2018

С помощью тега Stanford NER я могу извлечь всех ЛИЦ и ОРГАНИЗАЦИЙ, как и ожидалось.Вот краткий фрагмент:

    ss=tagger.get_entities(text)
    xorg=unique_list(ss.get('ORGANIZATION'))
    xper=unique_list(ss.get('PERSON'))
    out= (xorg,xperson)
    #out is written to database

Мой вопрос заключается в том, как извлечь только те имена ЧЕЛОВЕКА, которые имеют отношение к именованной ОРГАНИЗАЦИИ?В частности, я хочу, чтобы выходные данные представляли собой триплет: ЧЕЛОВЕК, ОТНОШЕНИЕ, ОРГАНИЗАЦИЯ.

Для либо «Enron Chairman Kenneth Lay», либо «Kenneth Lay, председатель, Enron», я ожидаю, что результат будет читаться как (Kenneth Lay)(Председатель) (Enron).

Любая помощь будет полезна.

1 Ответ

0 голосов
/ 27 августа 2018

Обычный NER - это просто поиск (именованных) сущностей и их правильная маркировка. Ваша задача называется извлечением отношений. Вы должны посмотреть по следующим ссылкам:

Stanford Relation Extractor извлекает отношения между сущностями: Live_In, Located_In, OrgBased_In, Work_For и None.

Stanford OpenIE может извлекать произвольные бинарные отношения из текста. Таким образом, выполнение NER не обязательно заранее.

Возможно, один из этих инструментов поможет вам в вашей задаче.

...