Преобразование вопросительного предложения в повелительное предложение

Я пытаюсь разработать интерфейсы естественного языка для базы данных, и мне просто интересно, есть ли библиотека или API (Java), которые я могу использовать для преобразования вопроса (вопросительного предложения) в команду (императивное предложение).

Пример: из «Какие сотрудники родились до 1970 года?» к «Найм сотрудников, родившихся до 1970 года».


person paboot    schedule 27.03.2014    source источник
comment
я тоже хочу... к сожалению хороших нет...   -  person alvas    schedule 12.08.2014
comment
Посмотрев на ваш вопрос, я продолжил анализ некоторых таких вопросов. Мне кажется, что простого эвристического подхода должно быть достаточно, если подлежащее (в вашем примере, работник) присутствует в вопросительном предложении. Вы пробовали смотреть парсеры Стэнфорда/Беркли?   -  person Chthonic Project    schedule 28.09.2014


Ответы (1)


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

Самым простым решением было бы разработать набор правил преобразования на основе регулярных выражений. Например. предположим, что слово, стоящее после (was|were), является глаголом. Вы можете вести словарь всех частых глаголов и их сопоставлений с полями вашей базы данных. Здесь «рожденный» будет сопоставлен с полем, которое можно назвать, например, DATE_OF_BIRTH.

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

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

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

person Tomek    schedule 22.10.2014