Текущее состояние проекта

http://www.youtube.com/watch?v=QtMWlKGa4sg - Видео

Текущее состояние обсуждается периодически на разных форумах: roboforum.ru, ai.obrazec.ru, gotai.net, ailab.ru. В частности здесь одно из последних обсуждение: http://ailab.ru/forum/deyatelnost/predlojeniya-proekti-razrabotki/razrabotka-sistemi-obsheniya-s-aiassistant/6.html

Я продолжаю разработку программы AIAssiatant на основе продукционных правил. Теперь она содержит плагин говорящего аватара наподобие MS Agent. Сейчас особенно актуальным для меня стало создание многообразных систем общения между пользователем и программой. Хотелось бы сделать их относительно независимыми от вида ЕЯ.

Назначаний системы общения несколько (неполный список):

  1. Администрирование программы и всего компьютера в целом.
  2. Общение на вольные темы.
  3. Диалоговая система поддержки выполнения прикладных работ программой AIAssistant.

Из традиционных способы общения мне известны (неполный список):

  1. Обмен текстовыми сообщениями.
  2. Взаимодействие с пом GUI (кнопки, чекрыжики, выпадающие меню и т.д.).
  3. Общая "классная доска".
  4. Акустическая речь.

Хотелось бы создать систему общения с взаимно однозначно понимаемыми сообщениями и основанную на общих понятийных принципах (схожие понятийные пространства), независимую от вышеуказанных назначений, способов общения и вида ЕЯ.

Из последнего - добавил онтологию SUMO, где описаны связи между понятиями включая самые абстрактные. Если ее грузить в RAM, то работает она быстро. Быстро выдает ответы онтологического поиска. Однако, когда я стал добавлять к ней еще онтологию WordNet и еще несколько онтологий, описанных в терминах SUMO, то понял, что 300- 400 мб для RAM - большая обуза. А ведь еще нужно будет пользовательские знания куда-то размещать. Теперь вместо того, чтобы заняться лингвистикой - подсистемой синтеза и анализа простого подмножества английского языка, я перевожу систему в дуальный режим, как это сделано и в PC и у человека - долговременная, но более медленная онтологическая память будет расположена поверх реляционной БД примерно так, как это сделано в проекте Jena. В RAM будет располагаться фокус активного внимания - то, что актуально в текущем контесте.

Для минимально полезной системы - умной энциклопедии нужны как минимум:

  1. Онтологическая готовая БЗ
  2. Механизм логического вывода на онтологии.
  3. Система хотя бы простейшего общения на подмножестве ЕЯ в т.ч. и устной речью.
  4. Элементы личности, ответственные за целенаправленное поведение.

Первое и второе я активно делаю, третье и четвертое - к этому еще не приступал. Сделал лишь устную речь. Однако сама система AIAssistant, кот. может работать в 4 режимах, скоро будет доступна и все желающие могут на языке ECLIPS писать свои плагины - программы, либо сообща работать над одним из главных плагинов - синтетическим интеллектуальным помощником человека.

На данный момент в одной базе данных на HDD я разместил две онтологии - SUMO и WordNet, которые объединены логически. Хочу добавить русскую WordNet, но пока нашел лишь одну не очень доделанную версию. В другой базе данных USER я создал пользовательскую онтологию, которая также будет логически связана с SUMO и WordNet. Это позволяет всм онтологиям работать в виде единой онтологии.

Я сделал временный вариант языка запросов к онтологиям Babylon. Вот некоторые реализованные запросы:

  1. (class-select <ontology> <owlclass>) запрос наличия в онтологии ontology класса owlclass.
  2. (class-superclass-all-select <ontology> <owlclass>) запрос наличия в онтологии ontology всех непосредственных суперклассов класса owlclass.
  3. (class-superclass-tree-select <ontology> <owlclass>) запрос наличия в онтологии ontology всех суперклассов класса owlclass до вершины онтологии.
  4. (class-subrclass-all-select <ontology> <owlclass>) запрос наличия в онтологии ontology всех непосредственных субклассов класса owlclass.
  5. (class-individ-all-select <ontology> <owlclass>) запрос наличия в онтологии ontology всех индивидов класса owlclass.
  6. (individ-select <ontology> <owlindivid>) запрос наличия в онтологии ontology индивида owlindivid.
  7. (individ-superclass-tree-select <ontology> <owlindivid>) запрос наличия в онтологии ontology всех суперклассов индивида owlindivid до вершины онтологии.
  8. ...

Результатом работы этих запросов является появление в RAM фактов - минимальных частичек знаний в моей системе - триплетов.

Теперь работаю над следующим: Более высокий уровень работы с такими знаниями - формировние более сложных запросов. Например, какие суперклассы являются общими у двух owl классов. С индивидами - аналогично.

Далее - сравнение двух или нескольких ветвей онтологи. Допустим, по итогам анализа полученного от собеседника сообщения на ЕЯ в памяти сформируется фрагмент онтологии. Но этот фрагмент неполон, т.к. содержит слова и части речи WordNet. Если из онтологии USER добавить контекст - при каких обстоятельствах происходит общение ИИ с собеседником, то это даст возможность достройки дерева онтологии в RAM, наполняя более глубоким смыслом анализируемую онтологию входного сообщения. Это и есть понимание того, что хотел донести до ИИ собеседник с пом. речевого сообщения. Вопрос лишь в том, насколько построенная ветвь онтологии отличается от той, которая неявно или явно создавалась в уме источника сообщения.

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

Я написал очередной библиотечный модуль на языке ECLIPS в свою систему AIAssistant. Этот модуль осуществляет синтаксический анализ (парсинг) входного сообщения на основе контекстно - независимых грамматик. Но т.к. для работы ИИ требуется обработка контекстно-зависимых грамматик, то я в настоящее время совершенствую этот модуль. Кроме того, я осуществляю соединение онтологий, имеющихся в программе с этим модулем. Это позволит все терминальные и нетерминальные символы а также правила их вывода брать из онтологий. Но что такое эти самые правила и символы? Это по сути есть онтологическое описание мира.

Появилась мысль о том, что этот анализ для входной одномерной последовательности слов на некотором ЕЯ можно распространить на двухмерный и трехмерный случаи. Тогда получим анализаторы письменной речи, звука, изображений и 3D пространства на едином принципе. Но для подтверждения такой идеи придется написать специальный плагин - тестовую лабораторию, что я уже и начал осуществлять.

В настоящее время я продолжаю разработку программы AIAssistant. Добавил нового аватара, которого можете наблюдать на изображении, 2D игровой движок, чтобы можно было создавать динамические демонстрации, например управление умным домом с наблюдением на экране в реальном времени процессов, протекающих в различных установках (работа кондиционеров, очистки воды, распределение температур по комнатам и т.д.). Напомню, что в центре всей системы движок, основанный на продукционных правилах.

Сейчас приступаю к соединению онтологической БЗ с данным типом системы общения. Попробую создать вопрос- ответную систему по этой БЗ. Затем наделю аватара некоторыми чертами личности и добавлю относительно несложное самообучение и распознавание пользователя по изображению с веб камеры. И позже займусь возможностью вести диалоги на ЕЯ с не очень глубоким пониманием смысла (в пределах заложенной в программу онтологии).

Я практически постоянно или улучшаю код AIAssistant или пишу новые плагины для него. Сейчас пишу плагин музыкального синтезатора на основе вмонтированного недавно в AIAssisstant SF2 многоголосого синтезатора. Цель моей разработки в этом направлении - исследовать музыкальный язык как один из языков общения между мыслящими субъектами. В музыке как и в других языках есть синтаксис, семантика. Поэтому его так же как и обычный ЕЯ нужно распознавать - что именно хотел сказать композитор и исполнитель какой-то музыкой. Ну и синтез новых мелодий на основе онтологических знаний - это вторая часть общения.


© AIKernel 2007-2011
29.07.2007 - 15.05.2011