- •Глава 6 представление знаний
- •6.1. Представление знаний при помощи пролога
- •Исчисление предикатов
- •Вычислительные формализмы
- •Пролог как вычислительный формализм
- •Формальный смысл
- •Внешний смысл
- •Обманчивая природа внешнего смысла
- •Представление знаний при помощи языка Си
- •Расширение языка Пролог
- •Другие вычислительные формализмы
- •6.2. Семантические сети Узлы и дуги
- •Семантическая сеть как Пролог-программа
- •6.3. Фреймы Представление знаний о ситуациях
- •Наследование значений слотов
- •Оценка формализма фреймов
- •Реализация фрейм - программы на Прологе
- •Запрет наследования
- •6.4. Объектно-ориентированное программирование Объекты и сообщения
- •Наследование
- •Объектно-ориентированное программирование в терминах абстрактных типов данных
- •Объектно-ориентированное программирование в терминах формализма фреймов
- •6.5. Механизм наследования в прологе Наследование в других формализмах
- •Наследование в Прологе
- •Состояния знаний
- •Обзор механизма наследования
- •Создание дерева состояний
- •Процедура "послать"
- •Опровержение фразы
- •Концепции механизма наследования
- •Пример с собранием
- •Пример с птицами
- •Реализация процедуры "послать"
- •Алгоритм работы процедуры "послать"
- •6.6. Программа, выполняющая запросы к базе данных
- •Состояния как виртуальные базы данных
- •Использование процедуры "з"
- •Опрос базы данных (добавление нового состояния)
- •Процедура "отобразитьсостояния"
- •Полезные свойства программы, выполняющей запросы к базе данных
- •Реализация программы, выполняющей запросы
- •Процедура "отобразить"
- •Процедура "з"
- •Процедура "характер"
- •6.7. Описание изменений базы данных
- •Мир кубиков
- •Картина состояния
- •Внесение изменений в базу данных при помощи процедуры "поместить"
- •Реализация процедуры "поместить"
- •Оценка механизма наследования
- •Процедура "послать" как предикат метаязыка
- •Библиографические заметки
- •Упражнения
Семантическая сеть как Пролог-программа
Если рассматривать семантическую сеть как описание отношений, которые поддерживаются между сущностями, то ее можно непосредственно реализовать при помощи языка Пролог. Нижеследующая программа выражает структуру сети с «птицами», представленную на рис. 6.2:
является (канарейка, птица).
является (твити, канарейка).
живет_с(сильвестр, твити).
летает (тица).
летает(Х):- является (X, У) .летает (У).
цвет (канарейка, желтый).
цвет(Х, Y) :- является (X, Z), цвет (Z, Y).
Вторая фраза "цвет" позволяет сделать вывод о том, что « твиги» желтого цвета, так как «твити» - это канарейка, а любая сущность, которая является канарейкой, имеет желтый цвет. Вывод можно выполнить в любом месте, где два узла диаграммы связаны дугой "является". Дуга "является" представляет либо отношение включения в класс (например, класс канареек включат я в класс птиц), либо отношение принадлежности к классу («твити»— это член класса канареек).
6.3. Фреймы Представление знаний о ситуациях
Мински создал концепцию фреймов как один из способов представления знаний о ситуациях [72]. Каждый фрейм содержит слоты (в буквальном переводе - щели), которые идентифицируют тип ситуации или задают параметры конкретной ситуации. К примеру, фрейм, описывающий ситуацию на вечеринке, может иметь слот тип, значение которого будет определять тип вечеринки. В этом фрейме могут также присутствовать слоты время и место, значениями которых будут параметры конкретной вечеринки. Формализм фреймов можно рассматривать как обобщение формализма семантических сетей. Иерархия — это одна из важнейших концепций формализма фреймов, поэтому данный формализм также пригоден для представления таксономии знаний.
Выражение, записанное на языке фреймов, таком как FRL [36], декларирует существование фрейма. В нижеследующем примере упоминаются три фрейма - МЕРОПРИЯТИЕ, СОБРАНИЕ и СОБРАНИЕ _38. Фрейм МЕРОПРИЯТИЕ - наиболее общий, фрейм СОБРАНИЕ - более конкретный, описывающий вид МЕРОПРИЯТИЯ, а фрейм СОБРАНИЕ-38 - наиболее уточненный фрейм, описывающий конкретное СОБРАНИЕ. Фрейм СОБРАНИЕ называется субфреймом фрейма МЕРОПРИЯТИЕ, а фрейм СОБРАНИЕ-38 будет субфреймом фрейма СОБРАНИЕ.
(СОБРАНИЕ имя фрейма
(РАЗНОВИДНОСТЬ ($VАLUE (МЕРОПРИЯТИИ))) имена и значения слотов (ВРЕМЯ ($DEFAULT (CPЕДA 14.00))) (умалчиваемые
(МЕСТО ($DEFAULT (ЗАЛ ЗАСЕДАНИЙ))) значения насле- дуются субфреймами)
(СОБРАНИЕ 38 имя ФРЕЙМА
(РАЗНОВИДНОСТЬ ($VALUE (СОБРАНИЕ))) имени и значения слота
(ПРИСУТСТВУЮТ ($VALUE- (РОНАЛЬД)
(СИНДИ)
(ФРЕД)))
)
Наследование значений слотов
Другой важнейшей концепцией формализма фреймов является наследование. Можно дать указание о том, что если значение слота в одном из фреймов не задается, то фрейм должен унаследовать умалчиваемое значение этого слота из фрейма более высокого уровня. Наследование фреймами значений слотов будет осуществляться в том случае, если в фрейме будет присутствовать слот РАЗНОВИДНОСТЬ, в котором содержится имя другого фрейма. Например, слоты ВРЕМЯ и МЕСТО фрейма СОБРАНИЕ будут унаследованы фреймом СОБРАНИЕ-38. Слот РАЗНОВИДНОСТЬ языка фреймов аналогичен руге "является" семантической сети в том смысле, что он представляет отношение включения в класс или отношение принадлежности к классу.