Имя материала: Базы знаний интеллектуальных систем

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

 

[?[*:*] \ ]; [ ?[ * : *{==«обработан»} ] \ ];

[ ?[ »$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 на уровне конструкции коррекция-фрейма.. Примеры использования манипуляторов в случае коррекции базы знаний на уровне отдельных фреймов и/или групп фреймов приводятся ниже:

 

[ *: \ S1 int] - К первому фрейму в базе знаний добавить слот с именем 81.

 [all_of *: $del\ ] - Во всех фреймах, имеющих слот с именем, хранящимся в $del, удалить этот слот.

[all_of * : S1=+1] - Во всех фреймах, имеющих слот S1, изменить значение последнего, увеличив его на 1.

 

При обсуждении общей структуры управления PILOT-программой были введены мощные, но «дорогие» средства управления выводом. Вместе с тем инженер по знаниям иногда может быть уверен, что надо выполнить определенную продукцию или секцию; он может знать, что определенные продукции пока не нужны, но зато необходимо включить в рассмотрение другие продукции. Наконец, иногда требуется осуществить принудительное завершение работы PILOT-npoграммы. Все такие действия в ЯПЗ PILOT/2 объединены в группу действий процедурного управления на уровне управление-активностью-правил, управление-активностыо-секций, вызов-секции или выход.

Фильтр «активности/неактивности» продукций — первый из используемых «арбитром». Поэтому, явно активируя или деактивируя некоторые из продукций, можно существенно сократить его работу и увеличить производительность всей продукционной системы. В случае секций фильтр активности, конечно, не столь эффективен, но у инженера по знаниям появляется возможность более точной структуризации правил продукционной системы и за счет этого увеличения эффективности ее функционирования.

Одними из уже упоминавшихся действий являются переключения флагов активности продукций (rule_tm/rule_off), с помощью которых можно устанавливать их как в текущей, так и любой другой секции. Возможно манипулирование флагами сразу всех продукций одной секции (section_on/section_off).

Особым действием является вызов (invoke) секции. В результате его выполнения текущая активная секция «проталкивается» в управляющий стек, а ее место на следующем шаге занимает вызываемая секция. Так как за вызовом секции могут следовать другие действия (в частности, другие вызовы), после полной отработки этого вызова «арбитр» на некотором шаге, минуя формирование КМ и выбор из него продукции, возвращается к применению данной продукции, причем в той ее части, которая непосредственно следует за вызовом.

Выполнение действия exit прерывает работу «арбитра» и таким образом завершает работу продукционной системы. В качестве «побочного» эффекта это действие позволяет передать во внешнюю среду информацию о том, как завершилась PILOT-программа. По «умолчанию» выход происходит с нулевым кодом возврата.

Мы рассмотрели обработку переменных и баз знаний, а также действия, связанные с управлением выполнением PILOT-программ. Вместе с тем понятно, что сколько-нибудь сложные задачи требуют удобного ввода/вывода. Вот почему в ЯПЗ PILOT/2 включена совокупность стандартных действий, поддерживающих ввод/вывод информации. При этом основное внимание уделяется действиям по работе с базами знаний. Что же касается средств работы с файлами, то в ЯПЗ PILOT/2 используется лишь последовательный доступ и простые форматные преобразования, а также специализированный обмен с экраном на уровне сообщений и вопрос-ответных цепочек [Khoroshevsky, 1994]. Все более развитые средства этого типа, которые могут потребоваться пользователю, должны подключаться на уровне нестандартных действий.

Выше мы обсудили основные аспекты представления знаний на базе ЯПЗ PILOT/2. Примеры его использования будут рассматриваться в следующих параграфах данной главы.

 

7.2. Психодиагностика — пример предметной

 области для построения экспертных систем

 

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

Для конкретности мы взяли в качестве предметной области проектирования и реализации экспертных систем область психодиагностики. И на этом примере попытаемся вместе с читателем пройти по пути разработки и реализации соответствующей экспертной системы — одной из спектра реализованных на основе методов и средств, рассматриваемых в данной книге.

 

7.2.1. Особенности предметной области

Страница: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 |