en ru

О проектах AReason и AiKernel

AReason - сисема ИИ
AiKernel - ядро системы ИИ

Цель разработки - создание наработок для использования в проектах с элементами ИИ.

Архитектура

Здесь представлены заметки, которые касаются архитектуры проектов AReason и AiKernel.

Основное

Проект AReason предсталяет из себя систему отдельных "модулей". Каждый "модуль" системы AReason - это отдельная порограмма, библиотека или отдельная совокупность знаний (представленная в виде отдельной онтологии и т.п.). Кроме этого "модулем" так же является отдельная программа-агент, которая работает относительно независимо (как служба). Агент работает в фоновом режиме и не взаимодействует напрямую с пользователем. Модуль может быть динамической библиотекой и присоединяться как плагин.

Ядро (AiKernel)

Ядро - это набор основных модулей для работы отдельной программы или системы в целом. Основными модулями AReason, входящие в ядро, являются:

  1. Библиотека работы с операционной системой (чтение параметров, работа с файловой системой, работа с настройками, с GUI и прочее).
  2. Библиотека работы со знаниями. Знания в системе на низком уровне преставляются в виде отдельных записей (сущностей), на более высоком уровне в виде элементов онтологий, или фреймов, или ресурсов (изображения, аудио, видео и пр), или в любом другом виде. Структура данных, записанных в отдельноц сущности определяется типом сущности. При этом описание типа тоже является определенной сущностью с определенной структурой. Информация о типе сущности (или по другому, мета-информация) необходима системе и движку логического вывода для правильного интерпретирования и выполнения каждой конкретной сещности. Различные данные и знания могут храниться на локальной машине, в удаленном хранилище, а так же могут использоваться распределенные средства хранения данных и знаний.
  3. Движок логического вывода, позволяющий обрабатывать имеющиеся "знания" с извлечением занний и выполнением действий, определенных в этих "знаниях". То есть, движок должен обеспечивать как логический вывод, так и интерпретацию последовательности команд.
  4. Базовую онтологию, необходимую для возмодности начальной работы системы с информацией о внешних источниках "знаний" (в виде дополнительных OWL файлов и т.п.).

Модуль AiKernel

Модуль AiKernel - это обособленный набор процедур и функций. Модуль включает в себя так же необходимые данные для работы модуля. Взаимодействие модулей осуществляется прямым вызовом процедур и функций, а так же путем передачи сообщений и команд. Модуль может быть подключен к системе в момент запуска или после запуска, во время работы.

Сущности (исходные понятия)

Под сущностью будем понимать объекты, отношения, множества, ситуации, события, моменты времени и т.п. Другими словами, не существует ничего, что не являлось бы сущностью. (цитата из книги "Общение с ЭВМ на естественном языке", стр. 133)

Онтология

Основным видом представления знаний в системе предполагается онтологический вид. Есть множество работ на эту тему, поэтому нет смысла описывать более подробно. Отмечу лишь, что одним из самых простых и подходищих в качестве базовой является онтология SUMO. А так же хорошей онтологией являются наработки WordNet и Вики.

Онтология SUMO содержит наиболее общие и самые абстрактные концепты, имеет исчерпывающую иерархию фундаментальных понятий (около 1 тыс.), а также набор аксиом (примерно 4 тыс.), определяющих эти понятия. Назначение SUMO — содействовать улучшению интероперабельности данных, извлечения и поиска информации, автоматического вывода и обработки естественного языка.

WordNet — один из наиболее полно разработанных тезаурусов общего назначения... В целом WordNet можно представить как сеть, в узлах которой находятся синсеты — лексикализованные понятия. Основными типами связей между узлами являются гипонимия и меронимия.

Подробнее: aikernel.org/doc/131/index.ru.html

Дополнительно:
Обучающий курс "Онтологии и тезаурусы: модели, инструменты, приложения"
Авторы: Б.В. Добров, В.В. Иванов, Н.В. Лукашевич, В.Д. Соловьев
http://www.intuit.ru/department/expert/ontoth/

Агенты

Каждый агент является отдельным "модулем" системы и работает относительно независимо (как служба). Агент работает в фоновом режиме и не взаимодействует напрямую с пользователем за исключением персональных агентов, которые выполняют заданные пользователем задачи (цели). Как пример можно привести проект AIAssistant - один вариантов реализации персонального помощника. Подробнее про проект AIAssistant: http://aikernel.org/projects/aiassistant/about/index.ru.html

Перечень модулей

На данный момент подготавливаются следующие "модули" системы.

  1. CLIPS - движок логического вывода, который работает с фреймами, но есть дополнение, которое позволяет ему работать с онтологиями.
  2. OwlApi - функционал работы с онтологиями (аналог API СУБД).
  3. Protege - программа для просмотра и редактирования онтологий (в фреймовом виде и в виде OWL).
  4. AIAssistant - персональный помощник

Кроме этого отдельными "модулями" системы являются дополнительные программы-утилиты для наблюдения за системой и управления системой. Например:

  • AiAddressBook - записная книжка с храненим записей в единой БЗ в виде сущностей определенного формата. Данные записной книжки могут быть использованы системой при логическом выводе.
  • AiInfo - получение информации о системе
  • AiManager - программа для наблюдения и управления за системой с возможноютью подключения и отключения агентов, источников знаний и других модулей.
  • AiReminder - программа-напоминалка с хранением данных в единой БЗ.
  • AiPlanning - планировщик выполнения задачь для агентов.
  • AiOrganizer - органайзер, объединяющий в себе функционал записной книжки, напоминалки, и пр. с функциями, помогающими планировать события и т.п.
  • AiTasks - программа для редактирования глобальных целей и задачь для системы.
  • и многие другие.

К сожалению все эти модули (программмы и библиотеки) пока находятся только в зачаточном состоянии, реализовать их все не представляется возможным. Поэтому нужно стараться использовать уже готовые программы и добавлять в них элементы ИИ. В частности добавлять мета-информацию к данным которыми оперирую прикладные программы с хранением этих данных в едином хранилище. Таким образом можно будет проводить автоматическую обработку разрозненных данных с помощью агентов, извлекать полезные сведения и даже составлять некоторые рекомендации для конечного пользователя.

Хранилище

Хранилище знаний (данных и мета-данных) может быть как локальным, так и распределенным. Кстати, проект FramerD - интересная реализация для организации разпределенных хранилищ.












© AiKernel 2010-2015
24.06.2012 - 06.02.2015