2012-07-03 4 views
0

Я пытаюсь разработать решение, способное извлекать в закрытом контексте определенные действия.Незначительный разбор с ANTLR

Например, в контексте бронирования билетов в кино, если пользователь говорит:

«Я хотел бы пойти в кино завтра вечером, было бы Casablanca, я хотел бы быть на последняя строка, пожалуйста»

Я разработал грамматик для получения названия фильма, желаемому сиденье, дата и часа проекции и т.д.

Однако, хотя я думал о ANTLR для разработки таких решение, я не знаю, имеет ли он такую ​​функциональность, я имею в виду, если я могу определить несколько корневых символов.

ответ

2

ANTLR не подходит для разбора человек языки: они слишком неоднозначны. Вместо этого попробуйте NLP. Вот список natural language processing toolkits.

+0

Спасибо, я посмотрю на эти альтернативы. В любом случае, есть ли способ идентифицировать определенные действия в предложении с ANTLR? – asuka

+0

@adsuar, * «Есть ли способ идентифицировать определенные действия в предложении с ANTLR?» *, Конечно же, набор инструментов NLP будет делать это намного лучше. И эти инструментальные средства поставляются с грамматиками для языка (ов), который вы можете использовать из коробки: с ANTLR вам нужно будет написать свою собственную грамматику (которая никогда не приблизится к надежному анализу широкого диапазона английских предложений!). –

+0

Насколько я могу видеть в списке программного обеспечения, которое вы мне облегчили, почти каждое заданное программное обеспечение имеет важные статистические усилия с помощью корпусов, и сейчас у меня большой недостаток или тело. Вот почему мне было интересно узнать о неглубоком анализе ** в ANTLR, так как я могу развить крошечные грамматики для захвата определенных понятий. – asuka

3

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

ANTLR в конечном итоге устраняет двусмысленность что один конкретный вариант среди множества возможных вариантов - правильное решение. Поскольку эта резолюция происходит на очень ранней стадии процесса синтаксического анализа с ANTLR, очень сложно включить семантическую логику в этот процесс принятия решений (в отличие от логики, включающей только синтаксис).

Редакция: Одна вещь, особенно интересная в отношении ANTLR 4 в контексте НЛП, заключается в том, что ANTLR 4 использует в качестве основы для своего анализатора augmented transition network. Где-то там я знаю, что можно будет изменить его для использования в обработке на естественном языке, но на сегодняшний день не выяснили, как заставить его работать. Ссылка: Я разработал версию времени исполнения ANTLR 4 optimized, которая в настоящее время немного отстает от ссылочной ветви, но я догоню позже этим летом.

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