Название: Базы знаний интеллектуальных систем - Гаврилова Т.А. Жанр: Информатика Рейтинг: Просмотров: 1257 |
Таким образом, мы обсудили конструкции ЯПЗ PILOT/2, которые могут потребоваться при формировании левых частей продукционных правил. Все они предназначены для выделения в БЗ системы интересующих нас ситуаций. Такое выделение не самоцель, а средство для преобразования таких ситуаций для получения решений. Сами преобразования описываются в основном, в правых частях продукционных правил ЯПЗ-программы и сводятся к выполнению определенных действий над БЗ и/или значениями переменных. В ЯПЗ PILOT/2 все действия делятся на стандартные (системные) и нестандартные (пользовательские). Все они могут использоваться не только в правых частях продукционных правил, но и в аннотациях, что позволяет реализовывать в ЯПЗ PILOT/2 развитые модели объяснений [Clancey, 1983]. Синтаксис нестандартных действий определяется спецификацией прототипов процедур, рассмотренной выше, и синтаксисом обращений к процедурам, а семантика и реализация — целиком в руках пользователя ЯПЗ PILOT/2. Классификация стандартных действий проста. Это обработка переменных, обработка базы знаний, процедурное управление и ввод/вывод. Как указывалось выше, в ЯПЗ PILOT/2 имеются три вида переменных (VAR, GET, PUT). С учетом этого:
обработка-переменных ::= || оператор-присваивания || || PUSH-оператор || || РОР-оператор || || CLEAR-оператор || оператор-присваивания ::= || VAR-переменная || = значение || PUT-переменная ||
Примерами присваивания значений переменным могут служить конструкции вида:
$var1=<$a+$b; >$var2=[FrameName : SlotName] * $var1; $var3« =empty;
Заметим, что с помощью присваивания можно реализовать и «проталкивание» стека, например, так: »$var2 = empty; $var3<< = ; или даже так $var <<; Однако более общим будет действие вида push ( left, $var2, $var3 ); push ( right, $var2, $var3 ); так как здесь с помощью одного действия можно обработать несколько стеков, причем одно и то же имя может многократно повторяться в качестве параметра. В этом случае в соответствующем стеке появится несколько пустых позиций-уровней. Выталкивание значений из стеков производится аналогичным образом. Для очистки стеков следует использовать стандартное действие CLEAR. При этом не важно, с какой стороны (слева или справа) начнет очищаться стек. Присваивания и операторы обработки стеков, рассмотренные выше, конечно, важны, но не они составляют суть обработки данных в языках представления знаний. В дополнение к этому, а вернее, в первую очередь, здесь должны быть средства изменения базы знаний, текущее состояние которой и определяет, какие решения уже были приняты и что будет происходить дальше. Выше уже обсуждалась конструкция образца ЯПЗ PILOT/2, которая используется для выделения интересующих инженера по знаниям ситуаций. Почти та же конструкция применяется и для преобразования ситуаций. Действительно, для выполнения любого преобразования в конечном счете нужно найти некоторую ситуацию и либо удалить ее, либо скорректировать соответствующим образом. Для полноты нужны и средства формирования новых ситуаций. Все эти действия выполняются в ЯПЗ PILOT/2 с помощью конструкции обработка-базы-знаний, которую для краткости и преемственности с языком ПИЛОТ [Хорошевский и др., 1990] будем также называть манипулятором. Итак, манипулятор, или обработка базы знаний, — это удаление фреймов, создание фреймов, замена фреймов или коррекция фрейма. Операции удаления, создания и замены фреймов в текущей базе знаний манипулируют с фреймами как с целыми и неделимыми единицами. При этом благодаря использованию образцов можно за одно обращение к соответствующему манипулятору провести множественные изменения в базе знаний:
[?[*:*] \ ]; [ ?[ * : *{==«обработан»} ] \ ]; [ ?[ »$DeletedFrameNames=all_of * : * {—«обработан»} ] \ ];
Создание новых фреймов в ЯПЗ PILOT/2 для пользователя языка тоже простая операция. Здесь нужно дать определение нового фрейма или совокупности фреймов аналогично тому, как это делалось в рамках декларативной компоненты ЯПЗ PILOT/2: [ \ [ Framel : Slot11 = «Mother»; Slot12 = «Father»; Slot13 = «Children»; Slot14 = 21]; [ Frame2 : Slot21 = empty]; [ FrameS :] ]
Замена одних фреймов на другие — не что иное, как объединение уже рассмотренных конструкций удаления и вставки: [?[*:*] \ [ Frame : Slot = «End Of Job» ] ] Так в ЯПЗ PILOT/2 осуществляется коррекция баз знаний на уровне отдельных единиц-фреймов. Вместе с тем часто требуется скорректировать некоторый фрейм или группу фреймов более «тонким» способом. Например, это может быть изменение значений некоторых слотов определенных фреймов, удаление «ненужных» слотов и/или добавление новых слотов в уже существующие фреймы. Все эти манипуляции с базой знаний осуществляются в ЯПЗ PILOT/2 на уровне конструкции коррекция-фрейма.. Примеры использования манипуляторов в случае коррекции базы знаний на уровне отдельных фреймов и/или групп фреймов приводятся ниже: |
| Оглавление| |
- Акмеология
- Анатомия
- Аудит
- Банковское дело
- БЖД
- Бизнес
- Биология
- Бухгалтерский учет
- География
- Грамматика
- Делопроизводство
- Демография
- Естествознание
- Журналистика
- Иностранные языки
- Информатика
- История
- Коммуникация
- Конфликтология
- Криминалогия
- Культурология
- Лингвистика
- Литература
- Логика
- Маркетинг
- Медицина
- Менеджмент
- Метрология
- Педагогика
- Политология
- Право
- Промышленность
- Психология
- Реклама
- Религиоведение
- Социология
- Статистика
- Страхование
- Счетоводство
- Туризм
- Физика
- Филология
- Философия
- Финансы
- Химия
- Экология
- Экономика
- Эстетика
- Этика
Лучшие книги
Гражданский процесс: Вопросы и ответы
ЗАПАДНОЕВРОПЕЙСКОЕ ИСКУССТВО от ДЖОТТО до РЕМБРАНДТА
Коммуникации стратегического маркетинга
Консультации по английской грамматике: В помощь учителю иностранного языка.
Международные экономические отношения