Авторский проект OpenXS Initiative   "Bсе мы свободны делать, то что мы делать хотим
Все остальное - иллюзии, все остальное - дым."

М. Науменко

Rambler's Top100
  Начало
  Статьи
  Проекты:
    Анна
    Oracle
    Man Pages
    Informix
    VirBot
  Ссылки
 
  О сайте
  Об авторах
 
  Рекомендую:
    Умка
    *anfrax
    PixelSusi
    Джунгли
    Spectator.ru
   Тут можно взять GIMP
 
 
  Счетчики:
  
   Rambler's Top100
  
 
Манифест         
   Страницы проекта "VirBot"

VirBot - VIRtual roBOT

Виртуальный робот, реагирующий на всевозможные внешние раздражители эмоционально, информационно и физически.

Внешние раздражители:

  • голос
  • перемещение в пространстве
  • обращение в чате
  • запрос через Web
  • и так далее

В конечном итоге, все внешние раздражители сводятся к текстовой строке определенного формата. Эта строка разбирается. В результате разбора определяется, какого рода это раздражитель, какова его "эмоциональная окраска" и какому из имеющихся модулей надо этот раздражитель передать. Раздражитель (строка) передается выбранному модулю и от него получается результат (строка) плюс возможные действия во внешнем мире. Собственно, этот разбор, а также универсальный интерфейс для модулей, и есть функции VirBot-а. За основу при разработке интерфейса модулей можно взять реализацию InfoBot на Perl. Главное - там есть готовый механизм подключения новых модулей, которые получают сказанное или иначе введенное пользователем в виде текста и выполняют какое-нибудь действие (выдают текст, например, но можно и любое другое - лампочками, скажем, помигать через соответствующий специальный файл устройства...). Есть и работа с поисковиками.

VirBot реализуется первоначально на Perl, затем - на PHP и на языке C (для встраивания в среду рабочего стола в виде отдельного апплета).

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

Метаязык строится на основе XML. Предполагается расширить язык AIML знаменитой программы Alice, примерно по следующим направлениям. Создаем набор правил обработки информации (они и составляют личность) вида:

  • шаблон, например, X is Y, как в InfoBot, где X и Y - слова из фразы пользователя (на которые можно ссылаться в ответе отдельно, а не просто _ *, как в ALICE)
  • действие (ответ), включающее один или несколько из следующих компонентов:
    • фразу-ответ, в том числе, ссылающуюся на фрагменты исходной фразы или случайная, из списка, как в AIML
    • эмоцию (наше состояние) - мы ее как-то будем потом выражать, это наш атрибут.
    • оценку собеседника (мудак, злобный педик, душка, потенциальный клиент). Эту оценку можно затем использовать в разговоре. Это тоже наш атрибут.
    • собственно действие (какая-нибудь перловая функция с параметрами, в том числе, взятыми из введенной фразы). Этих перловых функций мы потом напишем (позаимствуем) кучу, например, для поиска в Google или мигания лампочками.
  • отдельно - запоминание утверждения собеседника. У нас будет общая база шаблонов (фактоидов в терминах infobot), которая строится ботмастером или пополняется знаниями других ботов, и личная база, построенная автоматически из сказанного собеседником. Искать можно начинать с той или другой - это будет свойство создаваемой личности - учитывает она сказанное собеседником или имеет его ввиду.

Фраза или команда предварительно классифицируется по принципу "вопрос", "ответ", "сигнал извне" и т.д. Получается несколько "пространств" шаблонов.

Имеем правила вида:

шаблон -> ответ [эмоция] [оценка] [действие]

сводящиеся к

шаблон -> действие

если дать достаточно богатый набор действий.

Можно правила разбить на категории:

  • информация о собеседнике
  • утверждения собеседника
  • факты
  • действия
  • реакция на раздражители
  • информация из Internet
  • ...

и просматривать правила из разных категорий в определенной последовательности. Вот этот набор правил и стратегия их применения и есть наша виртуальная личность. Для описания свойств этой личности надо придумать язык на базе XML. Шаблоны задаются на основе regexp, но с возможностью пометки фрагментов... Короче, типичная продукционная система. Потом мы к ней еще простые правила вывода привесим, как в Прологе или..., стратегии поиска по шаблонам, и будет не только fake, но и real AI.

Базу таких правил мы сможем строить сами, экспортировать из AIML-файлов, из catty, а в будущем - и выдавать в виде AIML-файлов для обмена с другими ботами... Вобщем, пишется еще куча конвертеров в наш и из нашего формата, когда для этого появится время и желание, и когда (если) мы задоминируем в мировом масштабе...

На втором этапе (и это самое главное!) мы делаем модуль ALICE/AIML на Perl - безобразие, но кажется, что такого нет! Кстати, не удается мне найти в явном виде и Program C (AIML-парсер на С, его можно было бы взять за основу). Тем самым, мы в дальнейшем интегрируем все возможности ALICE...

И тем же путем, в виде модулей, добавляем прочие возможности типа бота catty, выбирающего информацию из Internet, всяких там Марковских рядов и т.д. Получаем интегрирующую платформу для разных бот-технологий на базе Perl.

Пока вот здесь можно посмотреть пример реализации VirBot на Perl с минимальным определением эмоциональной окраски, подключением Chatbot-Eliza, и реакцией во внешнем мире в виде строки текста и картинки, соответствующей эмоциональному состоянию VirBot-а.

Ближайшие задачи:

  • Подключить к имеющейся реализации test2.cgi модули, принимающие данные от внешних, физических сенсоров и управляющие внешними, физическим объектами через параллельный порт (работа для Поморова)
  • Создать универсальный модуль VirBot на языке Perl с продуманной технологией подключения внешних Perl- модулей (VirBor::Eliza, VirBot::ALICE, VirBot::Google и так далее), взяв, например, за основу реализацию InfoBot.
  • Продумать XML-схему для представления виртуальной личности
  • Продумать технологию работы Web-модуля VirBot с другими модулями так, чтобы эти модули могли запоминать информацию, полученную в ходе сеанса, и использовать ее в другом сеансе (как обеспечить работу модуля между обращениями по CGI; запуск "серверных" процессов, их контроль и взаимодействие с ними)

Долгосрочные задачи:

  • Написать (найти) программы анализа и синтеза AIML и XML-схем в целом на языках Perl, PHP и С
  • Продумать, какие еще боты и модули надо включить. Для всех этих модулей сделать реализации или обертки в виде VirBot::модуль на языке Perl
  • Реализовать на языке Perl работу VirBot по XML-схеме виртуальной личности
  • Создать набор виртуальных личностей с различными характерами и для различных целей
  • Встроить виртуальные личности на свои сайты


  
 
  Hosting: LuckyNet Copyright (c) 2002 by Zero 0116 & V. K.