Содержание
- 2. Экспертная система "Животные" База правил включает обширный предикат animal: animal("пингвин") :- positive("плавает"),positive("имеет окраску"), negative("приручено человеком"),negative("умеет летать"),is("птица").
- 3. В свою очередь, negative и positive имеют вид: positive(X) :- ask(X,R),R=="Y". negative(X) :- ask(X,R),R=="N".
- 4. Предикат ask: ask(X,R) :- string_concat(X," ? ",T), write(T), read_line_to_string(user_input,R). Приклеиваем "?" к тексту вопроса, выводим вопрос
- 5. Предикат is: is("птица"):- positive("откладывает яйца"),!; positive("имеет оперение").
- 6. Первый вариант ЭС animal("пингвин"):- positive("плавает"),positive("имеет окраску"), negative("приручено человеком"),negative("умеет летать"), is("птица"). animal("гусь"):- positive("плавает"),positive("имеет окраску"), positive("приручено человеком"),positive("умеет летать"),
- 7. Вариант диалога:
- 8. Все хорошо? Не совсем... Рассмотрим диалог для X=Гусь: Три вопроса заданы повторно. Почему?
- 9. animal("пингвин"):- positive("плавает"),positive("имеет окраску"), negative("приручено человеком"),negative("умеет летать"), is("птица"). animal("гусь"):- positive("плавает"),positive("имеет окраску"), positive("приручено человеком"),positive("умеет летать"), is("птица"). Обработка начинается
- 10. Решение проблемы Динамическая база данных (знаний) - возможность во время выполнения программы добавлять и удалять правила
- 11. :- dynamic yes/1. :- dynamic no/1. animal("пингвин"):- positive("плавает"),positive("имеет окраску"), negative("приручено человеком"),negative("умеет летать"), is("птица"). animal("гусь"):- positive("плавает"),positive("имеет окраску"),
- 12. Новый вариант диалога:
- 13. Для удаления фактов из динамической базы служать предикаты retract и retractall
- 14. То же самое, но на Питоне!
- 15. d1= {"плавает":1, "имеет окраску":1, "приручено человеком":0, "умеет летать":0, "?птица":1} d2={"плавает":1, "имеет окраску":1, "приручено человеком":1, "умеет летать":1,
- 16. def animals(data_base): # Проходим базу знаний строка за строкой dda={ } for n,d in data_base.items(): #
- 18. Скачать презентацию