2013-03-06 2 views
2

Мое настоящее понимание заключается в том, что можно извлекать сущности из текстового документа с помощью наборов инструментов, таких как OpenNLP, Stanford NLP.НЛП найти связь между объектами

Однако существует ли способ найти взаимоотношения между этими объектами?

Для примера рассмотрим следующий текст:.

«Как некоторые из вас могут знать, я провел на прошлой неделе в ЦЕРН, Европейской лаборатории физики высоких энергий, где знаменитый бозон Хиггса был обнаружен в июле прошлого года Каждый раз, Я иду в ЦЕРН. Я чувствую глубокое чувство почтения. Помимо быстрых посещений на протяжении многих лет, я был там в течение трех месяцев в конце 1990-х годов в качестве приглашенного ученого, работая над ранней физикой Вселенной, пытаясь понять, как подключить Вселенную, которую мы видим сегодня, с тем, что могло произойти в младенчестве ».

Сущности: Я (автор), CERN, бозона Хиггса

Отношения: - я "посетил" CERN - ЦЕРН "обнаружил" бозон Хиггса

Спасибо.

+0

Вы должны посмотреть на 'entity linking',' anaphora resolution' – alvas

+0

@ 2er0 - любая хорошая ссылка или отправная точка для этого? –

+0

проверить эту конференцию http://www.nist.gov/tac/2013/KBP/EntityLinking/index.html – alvas

ответ

3

Вы можете извлечь глаголы с их иждивенцами, используя, например, Stanford Parser. Например, вы можете получить «цепочки зависимостей», как

"I :: spent :: at :: CERN". 

Это гораздо сложнее задача, чтобы признать, что «я провел в ЦЕРНе» и «Я посетил CERN» и «CERN состоялся мой визит» (и т.д.) обозначают такое же событие. Переход к тому, как это можно сделать, выходит за рамки вопроса SO, но вы можете прочитать литературу распознавания парафраз (here - одна обзорная статья). Существует также related question на SO.

Как только вы можете сгруппировать похожие цепи, вам нужно найти способ их маркировки. Вы можете просто выбрать глагол самой общей цепочки в кластере.

Если, однако, у вас есть предопределенный набор типов отношений, которые вы хотите извлечь, и много текстов, аннотированных вручную для этих отношений, то подход может быть очень различным, например, используя машинное обучение, чтобы узнать, как распознать тип отношения, основанный на аннотированных данных.

2

Не знаете, интересуетесь ли вы, но CoreNLP добавил новый аннотатор под названием OpenIE (Open Information Extraction), который должен выполнить то, что вы ищете. Проверьте это: OpenIE

1

Как и анализатор Stanford, вы также можете использовать API Google Language, где вы отправляете строку и получаете ответ дерева зависимостей.

Вы можете проверить это API первых, чтобы увидеть, если он хорошо работает с корпуса: https://cloud.google.com/natural-language/

Результат здесь является объектом субъект предикат (SPO) триплет, где ваш предикат описывает отношения. Вам нужно будет пройти график зависимости и написать сценарий для разбора триплета.

Смежные вопросы