Предикаты метаязыка

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

Классическим примером предиката метаязыка служит предикат "демо" (сокращение от "продемонстрировать") ([6, 55, 73]). В одной из версий предиката "демо" приобретают явную форму и стратегия, и источник знаний. У этого предиката имеется три аргумента: запрос, который необходимо выполнить, название стратегии решения задач и название мира (т. е. множества фраз). Заключение для предиката "демо" выглядит так:

демо (Запрос, Стратегия, Мир): -

Если вызов "демо" принесет положительный результат, то это будет означать, что:

Запрос (аргумент 1) доказуем

при помощи стратегии решения задач (аргумент 2)

в соответствии с множеством фраз, образующих мир (аргумент 3).

В разд. 7. 5 будет описан интерпретатор, реализованный на языке Пролог, в котором применяется стратегия решения задач, отличающаяся от собственной стратегии стандартного интерпретатора языка Пролог. Этот новый интерпретатор можно рассматривать как предикат метаязыка, так как метаязыковый смысл ответа на запрос, полученного при помощи описываемого интерпретатора, будет несколько отличаться от метаязыкового смысла ответа на тот же самый запрос, полученного обычным интерпретатором языка Пролог. Тот факт, что можно написать интерпретатор языка Пролог на самом Прологе, демонстрирует расширяемость этого языка программирования.

0. 12. Сферы применения языка пролог

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

Реляционные базы данных

Поскольку модель реляционной базы данных представляет собой хорошо разработанный логический формализм, представление ее на Прологе реализуется достаточно прямолинейно. Пролог оказался особенно полезным при создании интерфейсов реляционных баз данных с пользователем. На Прологе были реализованы все типы языков запросов, включая QBE, SQL, реляционную алгебру [61] и язык, похожий на Visicalc [59]. Описание различных интерфейсов баз данных будет представлено в гл. 3, 5 и 6.

Программная инженерия

Исследователи, специализирующиеся на программной инженерии, показали, что логическую спецификацию системы можно непосредственно преобразовать в логическую программу ([31, 58]).

Естественный язык

Кольмерор, создавший язык Пролог, первоначально предназначал его для обработки естественного языка. Он разработал на Прологе систему грамматического разбора естественного языка нисходящим методом. Использованный им формализм впоследствии получил название грамматики определенных предложений (Definite Clause Grammar, сокращенно — DCG) [24]. Дал, Уоррен, Перейра и другие ученые доработали DCG-формализм и продемонстрировали его успешное применение на примере систем, которые обрабатывают запросы, сформулированные на естественном языке ([28, 84, 85]). Система СНАТ-80, созданная Перейрой, служит примером системы обработки естественного языка, основанной на использовании DCG-формализма [110].

В ряде работ по вычислительной лингвистике основным методом обмена информацией считается унификация (унификация — это механизм, посредством которого получают значения переменные в языке Пролог). Так называемые формализмы грамматик унификации включают GPSG [34], HPSG [87], LFG ([49, 113]), PATR-II [99] и FUG [51], а также и DCG.

В настоящее время на Прологе реализуются несколько серьезных исследовательских проектов по естественному языку, в их числе проект Epistle фирмы IBM [69] и различные проекты института ICOT ([65, 107. 108]).

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

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