Глава 5

Обработка текста

Введение

Лексический анализ и грамматический разбор

Пролог обладает большими возможностями по сопоставлению объектов с эталоном (pattern matching), поэтому данный язык программирования очень хорошо подходит для обработки текстов На Прологе можно с успехом реализовать генераторы отчетов, текстовые редакторы и трансляторы с языков. В данной главе довольно подробно рассматриваются программы, предназначенные для обработки текстов. На примере этих программ демонстрируется непосредственное практическое применение языка Пролог.

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

Содержание данной главы

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

В конце главы рассматриваются два примера применения систем грамматического разбора. В первом из них описывается конвертирование Пролог-программ с версии языка для ЭВМ DEC-10 на "ядро" микро-Пролога. Эти две версии Пролога отличаются используемым в них синтаксисом Во втором примере обсуждается язык запросов к базе данных. Запросы пишутся на языке, похожем на английский язык, и преобразуются в Пролог-запросы.

Стратегии грамматического разбора и стратегии решения задач

Одна из причин, по которой системы грамматического разбора вызывают столь большой интерес, заключается в существовании близкой аналогии между стратегиями грамматического разбора и стратегиями решения задач в целом В интерпретаторе языка Пролог по умолчанию принята стратегия решения задач с обратным ходом решения. Решение начинается с гипотезы (т.е. с запроса), которая затем разбивается на субгипотезы (т. е. подцели правила), далее каждая субгипотеза делится на еще более мелкие составные части и т д. Исходная гипотеза будет подтверждена, когда интерпретатор дойдет до субгипотез, которые уже нельзя разделить на составные части (т. е до фактов) Альтернативой служит стратегия решения задач с прямым ходом решения. Такая стратегия применяется в языке OPS-5. Решение начинается с фактов, а затем отыскиваются заключения, вытекающие из них. Далее на основании этих заключений делаются заключения более высокого уровня и т д. Это происходит до тех пор, пока не будет достигнуто искомое заключение.

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

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие