Вы, конечно, не говорите о 'scifi', но многое выходит за рамки стандартных вещей, с которыми обычно сталкиваются разработчики программного обеспечения.Последние восемь лет я строил и использовал механизмы правил, чтобы делать выводы по полуструктурированным данным в мире розничной торговли.
Вывод данных является хорошо установленной областью.Существует четыре основных класса проблем, связанных с этой областью:
- Получение знаний (извлечение правил из головы людей в код / правила)
- Представление знаний "KR" (какпредставлять ваши данные и правила)
- Эффективное сопоставление с образцом (сопоставление правила формирует большой набор правил с большим количеством фактов / данных)
- Вывод / Рассуждение (вывод дополнительных выводов из сопоставлений правил, т.е.правила, запускающие больше правил)
Для получения знаний смотрите: Ripple Down Rules и Деревья принятия решений, они имеют большое значение и их легко понять.Кроме того, обширное поле Машинное обучение предлагает множество подходов для извлечения моделей из данных.
Для представления знаний смотрите RDF и Owl и в меньшей степени Концептуальные графики .С точки зрения выразительности RDF и CG примерно эквивалентны.Основной концепцией обоих является независимое от сериализации графическое (тройное) представление данных.
Для сопоставления с образцом используется классический алгоритм Rete , автор Charles Forgy.
Для вывода существуют две типичные стратегии: Цепочка прямого движения и Цепочка обратного хода .Прямое связывание выполняется по набору правил следующим образом:
Настройка данных:
Rule 1: If A Then B
Rule 2: If B Then C
Facts: A
Выполнение:
Do {
Newfacts = Eval(RuleSet, Facts)
Facts = Facts + Newfacts
} while (NewFacts.Count > 0)
Подача данных A в этот маленький алгоритм,и вы будете «выявлять» (открывать) факт C на основе данных, благодаря rulebase.Обратите внимание, что существует множество ошибок с умозаключениями, особенно вокруг таких вещей, как немонотонные рассуждения (не просто добавление фактов, а изменение или удаление фактов, что может привести к противоречиям или ошибкам в выводе).
Упрощенным и наивным способом получения какого-либо рода выводов было бы использование базы данных и объединений для сопоставления фактов (утверждений).Это может быть достаточно для некоторых приложений.Когда дело доходит до рассуждений, легко погрузиться в мир сложностей и не совсем существующих технологий.Будь проще.