- •Глава 5
- •Обработка текста
- •Введение
- •Лексический анализ и грамматический разбор
- •Содержание данной главы
- •Стратегии грамматического разбора и стратегии решения задач
- •5. 1. Лексический анализатор
- •Процедура "читатьпредлож"
- •Алгоритм работы лексического анализатора "читатьпредлож"
- •Использование программы "читатьпредлож"
- •5. 2. Система нисходящего грамматического разбора Программа "объект"
- •Использование программы "объект"
- •Использование процедуры "объект" в обратном направлении
- •Расширение грамматики
- •Принцип работы системы нисходящего грамматического разбора
- •5. 3. Система восходящего грамматического разбора Принцип работы системы восходящего грамматического разбора
- •Вид правила "восх_объект"
- •Анализ процесса грамматического разбора
- •Леворекурсивные правила
- •Работа леворекурсивного правила
- •Использование процедур грамматического разбора
- •5. 4. Конвертер программ с dec-10 пролога на микро-пролог Синтаксис микро-Пролога
- •Компоненты микро-Пролога
- •Реализация программы "d_to_m"
- •Использование процедуры "d_to_m"
- •Улучшение интерфейса с пользователем
- •Ограничения процедуры "d_to_m"
- •5.5. Язык запросов
- •Спецификация схемы базы данных
- •Стратегия реализации
- •Грамматика языка запросов
- •Программа "зобъект"
- •Алгоритм работы программы "зобъект
- •Процедура "построить_псписки"
- •Выходные данные программы "построить-псписки"
- •Процедура "построить-зсписки"
- •Выходная информация программы "построить_зсписки"
- •Процедура "список_во_фразу"
- •Выходные данные процедуры "список_во_фразу"
- •Процедура "печатать_тсписок"
- •Объединение составных частей в единую программу
- •Интерпретатор
- •Библиографические заметки
- •Упражнения
Глава 5
Обработка текста
Введение
Лексический анализ и грамматический разбор
Пролог обладает большими возможностями по сопоставлению объектов с эталоном (pattern matching), поэтому данный язык программирования очень хорошо подходит для обработки текстов На Прологе можно с успехом реализовать генераторы отчетов, текстовые редакторы и трансляторы с языков. В данной главе довольно подробно рассматриваются программы, предназначенные для обработки текстов. На примере этих программ демонстрируется непосредственное практическое применение языка Пролог.
Действия, выполняемые программой обработки текстов, можно разбить на две фазы. В течение первой фазы, называемой лексическим анализом, входной текст преобразуется из внешней формы в некоторое внутреннее представление Во время второй фазы выполняется анализ или тот или иной вид обработки внутреннего представления текста Система грамматического разбора - это процедура, которая распознает синтаксические структуры высокого уровня (объекты) во внутреннем представлении текста.
Содержание данной главы
В первых разделах главы представлена реализованная на Прологе процедура лексического анализа и приводятся примеры двух различных типов процедур грамматического разбора - процедура нисходящего разбора и процедура восходящего разбора. В этих примерах используется грамматика, описывающая несложное подмножество английского языка Обсуждение вопросов обработки полного естественного языка выходит за рамки данной книги. Однако приводимые здесь примеры простых систем грамматического разбора в определенной степени иллюстрируют проблемы, возникающие при создании любых систем обработки естественного языка.
В конце главы рассматриваются два примера применения систем грамматического разбора. В первом из них описывается конвертирование Пролог-программ с версии языка для ЭВМ DEC-10 на "ядро" микро-Пролога. Эти две версии Пролога отличаются используемым в них синтаксисом Во втором примере обсуждается язык запросов к базе данных. Запросы пишутся на языке, похожем на английский язык, и преобразуются в Пролог-запросы.
Стратегии грамматического разбора и стратегии решения задач
Одна из причин, по которой системы грамматического разбора вызывают столь большой интерес, заключается в существовании близкой аналогии между стратегиями грамматического разбора и стратегиями решения задач в целом В интерпретаторе языка Пролог по умолчанию принята стратегия решения задач с обратным ходом решения. Решение начинается с гипотезы (т.е. с запроса), которая затем разбивается на субгипотезы (т. е. подцели правила), далее каждая субгипотеза делится на еще более мелкие составные части и т д. Исходная гипотеза будет подтверждена, когда интерпретатор дойдет до субгипотез, которые уже нельзя разделить на составные части (т. е до фактов) Альтернативой служит стратегия решения задач с прямым ходом решения. Такая стратегия применяется в языке OPS-5. Решение начинается с фактов, а затем отыскиваются заключения, вытекающие из них. Далее на основании этих заключений делаются заключения более высокого уровня и т д. Это происходит до тех пор, пока не будет достигнуто искомое заключение.
Система нисходящего грамматического разбора базируется (как и Пролог) на стратегии с обратным ходом решения, а система восходящего разбора - на стратегии с прямым ходом решения (как и язык OPS-5) Вообще говоря, нисходящий грамматический разбор более эффективен, чем восходящий, но существуют некоторые грамматические конструкции, разбор которых можно реализовать только восходящим методом. Поскольку сам Пролог основывается на стратегии с обратным ходом решения, реализация на Прологе систем нисходящего грамматического разбора может быть осуществлена достаточно прямолинейным способом. Реализация восходящего грамматического разбора немного сложнее, так как для применения стратегии с прямым ходом решения требуется процедурная трактовка языка Пролог. Существует также ряд других задач, для которых более предпочтительно использование стратегии с прямым ходом решения.