Rule(Trole:Tval,Frole_list),
Unify(Froles,Frole_list).
unify([],[]).
unify([H:Val|T],[H1:Val1|T1]):-
Member(Val,Val1),
Unify(T,T1).
Система в начале применяет правила для определения значения term. Затем использует правила для определения investment. Это достигается добавлением двух подцелей apply_rules в запускающем предикате fa:
Fa:-
fa_frame([Interest,Revenues,Expenses,Risk,Term,Investment]),
bind_all([Interest,Revenues,Expenses,Risk],1),
apply_rules(Term,[Interest,Revenues,Expenses]),
apply_rules(Investment,[Risk,Term]),
get_explain([Interest,Revenues,Expenses,Risk,Term,Investment]).
Объяснения результатов консультаций
Естественным желанием пользователя является получение объяснения по выведенному системой ответу. Часто упростить объяснение гораздо сложнее, чем просто описать систему. Например, в большинстве систем в процессе извлечения информации можно задать вопрос «Почему?» Система в этом случае представляет объяснение достижения цели, которую она пыталась вывести по текущему запросу. Когда ответ найден, пользователь может задать вопрос «Как?» Система просматривает рассуждения в обратном направлении, через цепочку целей, которые были выведены в порядке их появления в решении. Очевидно, построение более простого понятного объяснения не намного сложнее, чем описать систему. Иными совами, текст объяснения фрагментируется таким образом, что при соответствующем соединении фрагментов был получен осмысленный вывод системы.
|
|
Текст объяснения является некоторой процедурной связью в слоте. Если части текста объяснения построены аккуратно, в совокупности они должны соответствовать состоянию системы.
Explain(interest:down,'Поскольку вы ожидаете снижение ставки прибыли, то было бы естественным сделать долговременные инвестиции, чтобы сохранить высокую текущую прибыль').
Explain(interest:up,'Поскольку вы ожидаете повышение ставки прибыли, было бы естественным сделать короткие инвестиции, что позволит вам позднее реинвестировать высокие прибыли').
Explain(interest:unchanged,'Поскольку вы ожидаете неизменной ставку прибыли, окажутся неизменными и сроки выплаты ваших инвестиций').
Explain(revenues:'-','Так как годовой доход может быть меньше ожидаемого').
explain(revenues:'+','Так как годовой доход должен быть больше ожидаемого').
explain(revenues:'=','Отклонение годового дохода от бюджета маловероятно').