Упражнения

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

2. Почему бывает желательно строить рассуждения в разных контекстах и почему некоторые контексты оказываются "отравленными"?

3. Насколько сказываются на конечном варианте проектируемой экспертной системы характеристики начального прототипа?

4. Критически проанализируйте характеристики той инструментальной среды разработки экспертных систем, с которой вы лучше всего знакомы. Анализ должен включать следующие моменты:

I) детальное рассмотрение функциональных возможностей среды, наиболее привлекательных с вашей точки зрения; каким образом эти возможности облегчают проектирование?

II) детальное рассмотрение тех характеристик среды, которые вы считаете неудачными; почему, на ваш взгляд, эти характеристики затрудняют работу?

III) перечень дополнительных возможностей, которые, по-вашему, имеет смысл реализовать в этой среде разработки.

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

5. Попробуйте сформулировать рекомендации, касающиеся инженерии знаний, основываясь на собственном опыте, например на опыте выполнения упражнений из предыдущих глав этой книги. (Только не нужно приводить вариации Законов Мерфи.)

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

7. В этом примере демонстрируется, как в языке CLIPS организована интеграция правил и объектов. Основной механизм взаимодействия правил и объектов состоит в том, что действия, специфицированные в правилах, посылают сообщения экземпляру класса.

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

(defrule describe-guitar

(option ?guitar) =>

(send (symbol-to-instance-name ?guitar) show) )

В этом правиле show — метод класса guitar, который выводит на экран содержимое слота экземпляра класса в нужном формате. Определение класса guitar может иметь следующий вид:

(defclass guitar (is-a USER) (slot make)

(slot model) (slot wood) (slot pickups))

Метод show этого класса можно представить следующим образом:

(definessage-handler guitar show ()

(printout t

"The " ?self:make " " ?self:model "

is a " ?self:wood " guitar with " ?selfspickups " pickups.")

;; ?self:make " " ?self:model " это "

;; ?self:wood " гитара с "

;; ?self:pickups " звукоснимателем.")

)

Для экземпляра этого класса

(GibSG of guitar

(make Gibson)

(model SG)

(wood mahogany)

(pickups humbucking) )

метод выведет сообщение

"The Gibson SG is a mahogany guitar

with humbucking pickups."

Включите подобную функцию в одну из программ-советчиков, которые предлагалось разработать в упражнениях предыдущих глав, в частности в упр. 7 главы 14 и в упр. 4 главы 16.

8. Разработайте два правила, которые будут удалять все действия и факты, связанные с "отравленным" контекстом, в примере, представленном в разделе 17.3.5. Почему таких правил должно быть два?