Prolog – средство разработки экспертных систем. Назначение и структура экспертной системы

Содержание

Слайд 2

Назначение ЭС Экспертная система (ЭС) — это программа, которая действует подобно

Назначение ЭС

Экспертная система (ЭС) — это программа, которая действует подобно эксперту

в некоторой проблемной области. Она должна быть способной объяснять свои решения и сообщать, на основании каких рассуждений получены соответствующие выводы. От экспертной системы часто ожидают, что она сможет функционировать в условиях недостоверной и неполной информации.
Слайд 3

Структура ЭС

Структура ЭС


Слайд 4

База знаний База знаний. База знаний предназначена для хранения экспертных знаний

База знаний

База знаний. 
База знаний предназначена для хранения экспертных знаний о предметной

области, используемых при решении задач экспертной системой. База знаний содержит факты (или утверждения) и правила. 
Факты представляют собой краткосрочную информацию в том отношении, что они могут изменяться, например, в ходе консультации. 
Правила представляют более долговременную информацию о том, как порождать новые факты или гипотезы из того, что сейчас известно. 
Слайд 5

Машина вывода. Машина вывода - механизм, который необходим для построения логических

Машина вывода. 

Машина вывода - механизм, который необходим для построения логических вычислений

(механизм рассуждений, оперирующий знаниями и данными с целью получения новых данных из знаний и других данных, имеющихся в рабочей памяти). Для этого обычно используется программно реализованный механизм дедуктивного логического вывода (какая- либо его разновидность) или механизм поиска решения в сети фреймов или семантической сети. 
Существует 2 режима: 
- прямая цепочка рассуждений (использование фактов);
- обратная цепочка рассуждений (подтверждение или опровержение фактов).
Слайд 6

Модуль приобретение знаний. Модуль приобретения знаний - это компонент, который автоматизирует

Модуль приобретение знаний. 

Модуль приобретения знаний - это компонент, который автоматизирует процесс

наполнения ЭС знаниями, осуществляемый пользователем-экспертом. Он необходим для получения знаний от эксперта, поддержки базы знаний и дополнения ее при необходимости.
Слайд 7

Интерфейс пользователя Интерфейс пользователя - диалоговый компонент, который ориентирован на организацию

Интерфейс пользователя

Интерфейс пользователя - диалоговый компонент, который ориентирован на организацию дружественного

общения с пользователем как в ходе решения задач, так и в процессе приобретения знаний и объяснения результатов работы.
Он должен соответствовать профессиональным интересам.
Слайд 8

Конструирование базы знаний ЭС Конструирование базы знаний экспертной системы, можно начать

Конструирование базы знаний ЭС

Конструирование базы знаний экспертной системы, можно начать с

таблицы, состоящей из строк, в каждой из которых размещается наименование некоторого объекта и значения его атрибутов или признаков, характеризующих этот объект (см. табл. 5).
Число строк m соответствует количеству объектов, а число столбцов n – количеству возможных признаков. Каждый i-й объект базы знаний характеризуется ki≤n признаками. Множество признаков некоторого объекта однозначно определяется объект в базе знаний. Не должно существовать двух объектов с разными именами, но с одинаковым набором значений признаков.
Слайд 9

Таблица объектов

Таблица объектов

Слайд 10

Пример базы знаний Например, представим базу знаний экспертной системы с помощью

Пример базы знаний

Например, представим базу знаний экспертной системы с помощью таблицы,

состоящей из двух колонок. Одна колонка содержит названия стран, а другая - названия соответствующих столиц. Эта таблица составляет маленькую базу знаний.
Слайд 11

Пример таблицы

Пример таблицы

Слайд 12

Примеры правил capital_is('Washington DC') :- country(is,'USA'),!. capital_is('London') :- country(is,'England'),!. capital_is('Madrid') :-

Примеры правил

capital_is('Washington DC') :-
country(is,'USA'),!.
capital_is('London') :-
country(is,'England'),!.
capital_is('Madrid') :-

country(is,'Spain'),!.
Эти правила могут служить основой экспертной системы на правилах.
Слайд 13

Пример ЭС, базирующейся на правилах В этой экспертной системе,базирующейся на правилах,

Пример ЭС, базирующейся на правилах

В этой экспертной системе,базирующейся на правилах,

база знаний должна содержать информацию о восьми объектах, которые можно раздедить на две группы длинношерстных и короткошерстных собак, как показано на древовидной структуре.
Слайд 14

Структура БЗ ЭС определения пород собак

Структура БЗ ЭС определения пород собак


Слайд 15

Рабочая область ЭС Для того, чтобы разработать экспертную систему на языке

Рабочая область ЭС

Для того, чтобы разработать экспертную
систему на языке SWI Prolog,

базирующуюся
на правилах, необходимо использовать
стандартные предикаты assert и retract для
записи и удаления фактов в рабочую
Область ЭС или базу данных.
База данных будет хранить ответы
пользователя на вопросы системы
пользовательского интерфейса (СПИ). Эти
данные являются утвердительными или
отрицательными ответами.
Слайд 16

Структура программы ЭС

Структура программы ЭС


Слайд 17

База знаний ЭС, базирующейся на правилах В данной программе база знаний

База знаний ЭС, базирующейся на правилах

В данной программе база знаний

должна содержать восемь продукционных правил: по одному для каждой породы. Каждое правило должно идентифицировать породу по признаку принадлежности к группе длинношерстных или короткошерстных собак.
Слайд 18

Текст правил dog_is('Английский_Бульдог') :-positive('это','короткошерстная собака '), positive('ее','высота в холке не более

Текст правил

dog_is('Английский_Бульдог') :-positive('это','короткошерстная собака '),
positive('ее','высота в холке не более

57 см'),
positive('у нее','низко посаженный хвост'),
positive('у нее','дружелюбный характер'),!.
dog_is('Гончая')
:-positive('это','короткошерстная собака '),
positive('ее','высота в холке не более 57 см'),
positive('у нее','длинные уши'),
positive('у нее','дружелюбный характер'),!.
Слайд 19

Текст правил dog_is('Немецкий Дог') :-positive('это','короткошерстная собака '), positive('у нее','низко посаженный хвост'),

Текст правил

dog_is('Немецкий Дог') :-positive('это','короткошерстная собака '),
positive('у нее','низко посаженный хвост'),

positive('у нее','дружелюбный характер'),
positive('ее','вес более 45 кг'),!.
dog_is('Американский Фоксхаунд') :-positive('это','короткошерстная собака '),
positive('ее','высота в холке не более 77 см'),
positive('у нее','длинные уши'),
positive('у нее','дружелюбный характер'),!.
Слайд 20

Текст правил dog_is('Кокер Спаниель') :-positive('это','длинношерстная собака '), positive('ее','высота в холке не

Текст правил

dog_is('Кокер Спаниель') :-positive('это','длинношерстная собака '),
positive('ее','высота в холке не

более 57 см'),
positive('у нее','низко посаженный хвост'),
positive('у нее','длинные уши'),
positive('у нее','дружелюбный характер'),!.
dog_is('Ирландский Сеттер') :-positive('это','длинношерстная собака '),
positive('ее','высота в холке не более 77 см'),
positive('у нее','длинные уши'),!.
Слайд 21

Текст правил dog_is('Колли') :- positive('это','длинношерстная собака '), positive('ее','высота в холке не

Текст правил

dog_is('Колли')
:- positive('это','длинношерстная собака '),
positive('ее','высота в холке

не более 77 см'),
positive('у нее','низко посаженный хвост'),
positive('у нее','дружелюбный характер'),!.
dog_is('Сенбернар')
:- positive('это','длинношерстная собака '),
positive('у нее','низко посаженный хвост'),
positive('у нее','дружелюбный характер'),
positive('ее','вес более 45 кг'),!.
Слайд 22

Механизм вывода Механизм вывода должен иметь правила для управления данными вводимыми

Механизм вывода

Механизм вывода должен иметь правила для управления данными вводимыми пользователем,

для сопоставления их с продукционными правилами и сохранения "трассы" (или запоминания) отрицательных и утвердительных ответов.
Слайд 23

Механизм вывода Правила positive и negative используются для сопоставления данных пользователя

Механизм вывода

Правила positive и negative используются для сопоставления данных пользователя с

данными в продукционных правилах. Правило remember (запоминание) производит добавление предложений с ответами yes (да) и no (нет), для использования при сопоставлении с образцом.
Слайд 24

Механизм вывода 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.

Механизм вывода

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.

Слайд 25

Механизм вывода clear_facts :- retract(xpositive(_,_)), fail. clear_facts :- retract(xnegative(_,_)), fail.

Механизм вывода

clear_facts :-
retract(xpositive(_,_)), fail.
clear_facts :-
retract(xnegative(_,_)), fail.

Слайд 26

Система пользовательского интерфейса run :- assertz(xpositive(' ',' ')), assertz(xnegative(' ',' ')),

Система пользовательского интерфейса

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,
Слайд 27

Сеанс работы экспертной системы. Пример1. * * * * * *

Сеанс работы экспертной системы. Пример1.

* * * * * *

* * * * * * * * * * * * * * *
ДОБРО ПОЖАЛОВАТЬ!
Проводится идентификация породы
Отвечайте, пожалуйста, yes или no
а вопросы о собаке, породу которой
Вы хотите определить
* * * * * * * * * * * * * * * * * * * * * *
вопрос – это короткошерстная собака ? (да/нет) да.
вопрос – ее высота в холке не более 57 см? (да/нет) нет.
вопрос – у нее низко посаженный хвост? (да/нет) да.
вопрос – у нее дружелюбный характер? (да/нет) да.
вопрос – ее вес более 45 кг? (да/нет) да.
Вероятно Ваша собака – Немецкий Дог.