Назначение и структура экспертной системы
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Prolog – средство
разработки экспертных
систем
Назначение и структура экспертной
системы
Назначение ЭС
Экспертная система (ЭС) — это
программа, которая действует подобно
эксперту в некоторой проблемной области.
Она должна быть способной объяснять
свои решения и сообщать, на основании
каких рассуждений получены
соответствующие выводы. От экспертной
системы часто ожидают, что она сможет
функционировать в условиях
недостоверной и неполной информации.
Структура ЭС
Модуль
приобретения
знаний
База
знаний
Определение,
подтверждение,
модификация,
дополнение
знаний
эксперт
Рабочая
область
(динамическая база
данных)
Механизм
логического
вывода
Модуль
советов
и
объяснений
Пользовательский интерфейс
Ввод данных
Заключения,
Советы
Объяснения
Пользователь
(неспециалист)
База знаний
База знаний.
База знаний предназначена для хранения
экспертных знаний о предметной области,
используемых при решении задач экспертной
системой. База знаний содержит факты (или
утверждения) и правила.
Факты представляют собой краткосрочную
информацию в том отношении, что они могут
изменяться, например, в ходе консультации.
Правила представляют более долговременную
информацию о том, как порождать новые факты
или гипотезы из того, что сейчас известно.
Машина вывода.
Машина вывода - механизм, который необходим для
построения логических вычислений (механизм
рассуждений, оперирующий знаниями и данными с целью
получения новых данных из знаний и других данных,
имеющихся в рабочей памяти). Для этого обычно
используется программно реализованный механизм
дедуктивного логического вывода (какая- либо его
разновидность) или механизм поиска решения в сети
фреймов или семантической сети.
Существует 2 режима:
- прямая цепочка рассуждений (использование фактов);
- обратная цепочка рассуждений (подтверждение или
опровержение фактов).
Модуль приобретение знаний.
Модуль приобретения знаний - это
компонент, который автоматизирует
процесс наполнения ЭС знаниями,
осуществляемый пользователемэкспертом. Он необходим для получения
знаний от эксперта, поддержки базы
знаний и дополнения ее при
необходимости.
Интерфейс пользователя
Интерфейс пользователя - диалоговый компонент, который
ориентирован на организацию дружественного общения с
пользователем как в ходе решения задач, так и в процессе
приобретения знаний и объяснения результатов работы.
Он должен соответствовать профессиональным интересам.
Конструирование базы знаний ЭС
Конструирование базы знаний экспертной системы,
можно начать с таблицы, состоящей из строк, в
каждой из которых размещается наименование
некоторого объекта и значения его атрибутов или
признаков, характеризующих этот объект (см. табл.
5).
Число строк m соответствует количеству объектов, а
число столбцов n – количеству возможных
признаков. Каждый i-й объект базы знаний
характеризуется ki≤n признаками. Множество
признаков некоторого объекта однозначно
определяется объект в базе знаний. Не должно
существовать двух объектов с разными именами, но
с одинаковым набором значений признаков.
Таблица объектов
Наименование
Объекта
Имя 1
Имя 2
……
Имя m
Признак 1 Признак 2
……
Признак n
Значение
Значение
……
Значение
……
……
……
……
Значение
Значение
……
Значение
Значение
Значение
……
Значение
Пример базы знаний
Например, представим базу знаний
экспертной системы с помощью таблицы,
состоящей из двух колонок. Одна колонка
содержит названия стран, а другая названия соответствующих столиц. Эта
таблица составляет маленькую базу
знаний.
Пример таблицы
Страна
США
Англия
Испания
Столица
Вашингтон (Округ Колумбия)
Лондон
Мадрид
Примеры правил
capital_is('Washington DC') :country(is,'USA'),!.
capital_is('London') :country(is,'England'),!.
capital_is('Madrid') :country(is,'Spain'),!.
Эти правила могут служить основой
экспертной системы на
правилах.
Пример ЭС, базирующейся на
правилах
В этой экспертной системе,базирующейся на
правилах, база знаний должна содержать
информацию о восьми объектах, которые
можно раздедить на две группы
длинношерстных и короткошерстных
собак, как показано на древовидной
структуре.
Структура БЗ ЭС определения
пород собак
Порода собаки
Короткошерстная
собака
Английский
бульдог
Гончая
Большая
датская
Американский
терьер
Длинношерстная
собака
Коккер спаниель
Ирландский
сеттер
Колли
СенБернар
Рабочая область ЭС
Для того, чтобы разработать экспертную
систему на языке SWI Prolog, базирующуюся
на правилах, необходимо использовать
стандартные предикаты assert и retract для
записи и удаления фактов в рабочую
Область ЭС или базу данных.
База данных будет хранить ответы
пользователя на вопросы системы
пользовательского интерфейса (СПИ). Эти
данные являются утвердительными или
отрицательными ответами.
Структура программы ЭС
run
write
expertize
clear_facts
dog_is
it_is
xpositive
positive
not(xnegative)
ask
remember
assert
База знаний ЭС, базирующейся на
правилах
В данной программе база знаний должна
содержать восемь продукционных правил:
по одному для каждой породы. Каждое
правило должно идентифицировать
породу по признаку принадлежности к
группе длинношерстных или
короткошерстных собак.
Текст правил
dog_is('Английский_Бульдог')
:-positive('это','короткошерстная собака '),
positive('ее','высота в холке не более 57 см'),
positive('у нее','низко посаженный хвост'),
positive('у нее','дружелюбный характер'),!.
dog_is('Гончая')
:-positive('это','короткошерстная собака '),
positive('ее','высота в холке не более 57 см'),
positive('у нее','длинные уши'),
positive('у нее','дружелюбный характер'),!.
Текст правил
dog_is('Немецкий Дог')
:-positive('это','короткошерстная собака '),
positive('у нее','низко посаженный хвост'),
positive('у нее','дружелюбный характер'),
positive('ее','вес более 45 кг'),!.
dog_is('Американский Фоксхаунд')
:-positive('это','короткошерстная собака '),
positive('ее','высота в холке не более 77 см'),
positive('у нее','длинные уши'),
positive('у нее','дружелюбный характер'),!.
Текст правил
dog_is('Кокер Спаниель')
:-positive('это','длинношерстная собака '),
positive('ее','высота в холке не более 57 см'),
positive('у нее','низко посаженный хвост'),
positive('у нее','длинные уши'),
positive('у нее','дружелюбный характер'),!.
dog_is('Ирландский Сеттер')
:-positive('это','длинношерстная собака '),
positive('ее','высота в холке не более 77 см'),
positive('у нее','длинные уши'),!.
Текст правил
dog_is('Колли')
:- positive('это','длинношерстная собака '),
positive('ее','высота в холке не более 77 см'),
positive('у нее','низко посаженный хвост'),
positive('у нее','дружелюбный характер'),!.
dog_is('Сенбернар')
:- positive('это','длинношерстная собака '),
positive('у нее','низко посаженный хвост'),
positive('у нее','дружелюбный характер'),
positive('ее','вес более 45 кг'),!.
Механизм вывода
Механизм вывода должен иметь правила
для управления данными вводимыми
пользователем, для сопоставления их с
продукционными правилами и сохранения
"трассы" (или запоминания)
отрицательных и утвердительных ответов.
Механизм вывода
Правила positive и negative используются
для сопоставления данных пользователя с
данными в продукционных правилах.
Правило remember (запоминание)
производит добавление предложений с
ответами yes (да) и no (нет), для
использования при сопоставлении с
образцом.
Механизм вывода
vopros(X, Y):-write('вопрос – '),write(X),write(' '),
write(Y),write('? (да/нет)'),read(R),remember(X,Y,R).
positive(X,Y):-xpositive(X,Y),!.
positive(X,Y):-not(negative(X,Y)),!,vopros(X,Y).
negative(X,Y):-xnegative(X,Y),!.
remember(X,Y,'да'):-assertz(xpositive(X,Y)).
remember(X,Y,'нет'):-assertz(xnegative(X,Y)),fail.
Механизм вывода
clear_facts :retract(xpositive(_,_)), fail.
clear_facts :retract(xnegative(_,_)), fail.
Система пользовательского
интерфейса
run :- assertz(xpositive(' ',' ')), assertz(xnegative(' ',' ')),
nl,write(' * * * * * * * * * * * * * * * * * * * * * '),
nl,write('
ДОБРО ПОЖАЛОВАТЬ!
'),
nl,write(' Проводится идентификация породы '),
nl,write(' Отвечайте, пожалуйста, yes или no '),
nl,write(' а вопросы о собаке, породу которой '),
nl,write(' Вы хотите определить '),
nl,write(' * * * * * * * * * * * * * * * * * * * * * * '), expertiza.
expertiza :- dog_is(X), !, nl, write('Вероятно Ваша собака – '),
write(X), write('.'),
nl,clear_facts.
expertiza :- nl, write('Извините, я не смогу помочь Вам!'),
clear_facts.
vopros(X, Y):-write('вопрос – '),write(X),write(' '),
write(Y),write('? (да/нет)'),read(R),remember(X,Y,
Сеанс работы экспертной системы.
Пример1.
*********************
ДОБРО ПОЖАЛОВАТЬ!
Проводится идентификация породы
Отвечайте, пожалуйста, yes или no
а вопросы о собаке, породу которой
Вы хотите определить
**********************
вопрос – это короткошерстная собака ? (да/нет) да.
вопрос – ее высота в холке не более 57 см? (да/нет) нет.
вопрос – у нее низко посаженный хвост? (да/нет) да.
вопрос – у нее дружелюбный характер? (да/нет) да.
вопрос – ее вес более 45 кг? (да/нет) да.
Вероятно Ваша собака – Немецкий Дог.
Сеанс работы экспертной системы.
Пример2.
*********************
ДОБРО ПОЖАЛОВАТЬ!
Проводится идентификация породы
Отвечайте, пожалуйста, yes или no
а вопросы о собаке, породу которой
Вы хотите определить
**********************
вопрос – это короткошерстная собака ? (да/нет) нет.
вопрос – это длинношерстная собака ? (да/нет) да.
вопрос – ее высота в холке не более 57 см? (да/нет) да.
вопрос – у нее низко посаженный хвост? (да/нет) да.
вопрос – у нее длинные уши? (да/нет) да.
вопрос – у нее дружелюбный характер? (да/нет) да.
Вероятно Ваша собака – Кокер Спаниель.