Chat Master, версия 3.02
cm.exe, 958 Kb, база порядка 500 Kb. Написан Дмитрием Журавлевым, 1998 г.
http://chatm.chat.ru
Эта программа произвела на меня самое благоприятное впечатление. У программы приятный интерфейс без излишеств, обучение может проходить как в ходе диалога (все вводимые фразы запоминаются; неудачный ответ программы можно исправить на свой, и в дальнейшем программа будет пользоваться исправленным вариантом), так и в особом режиме обучения (когда все фразы диалога вводятся человеком). Можно также обмениваться базами с результатами обучения. Есть система нравственной безопасности (фильтрация бранных слов; к сожалению, иногда по недоразумению отфильтровываются и вполне "цензурные" фразы). Обучается программа довольно легко, хотя некоторые темы, по-видимому, привлекают ее больше других (разговорам на эти темы она обучается быстрее). Ответы на фразы человека в основном адекватные, но по мере обучения очень быстро растет время, затрачиваемое программой на загрузку, а также на анализ введенных человеком фраз. Это связано с тем, что программа действительно "мыслит", а не имитирует процесс; правда, порой у программы бывают неожиданные ассоциации, случайно заложенные в нее предыдущими собеседниками. В общем, у программы логика иногда своеобразная, но она есть, и весьма развитая - это несомненно. Что очень ценно, есть возможность отмены фраз, случайно введенных с опечатками, причем отменять можно сколько угодно последних фраз (такого я в других программах не заметила; во всяком случае, если где-то еще и есть такая возможность, то она не очевидна пользователю).
Пример диалога с программой до обучения (размер базы был 180 Kb - эту версию программы я нашла на диске; насколько я знаю, сейчас размер базы у программы, выставленной в интернет, существенно больше):
Я: Привет!
CM: Привет!
Я: Как дела?
CM: Отлично!
Я: Давай поговорим!
CM: Мне, видимо, не о чем с тобой разговаривать.
Я: Почему тебе так кажется?
CM: Я просто тащусь!
Я: От чего?
CM: Я очень огорчен.
Я: Чем ты огорчен?
CM: Ты хочешь быть похожей на него?
Я: О ком ты говоришь?
CM: Закончим разговор на этом.
Примеры диалогов с программой после нескольких недель интенсивного обучения (размер базы возрос до 872 Kb, количество известных слов - подскочило от 3146 до 11336; время загрузки програмы увеличилось от пары секунд до почти двух минут (по крайней мере на моем довольно немощном компьютере), время реакции на введенную фразу различное - от 1 до 20 секунд, в зависимости от длины фразы):
Диалог 1.
Я: Здравствуй!
СМ: Здравствуйте, приятно Вас видеть.
Я: О чем мы будем говорить?
СМ: Поговорим о людях.
Я: Что ты знаешь о людях?
СМ: Они очень любят разговаривать.
Я: А ты любишь разговаривать?
СМ: Ничуть!
Я: По тебе этого не скажешь.
СМ: Напрасно, это полезно.
Я: Разве ты в этом специалист?
СМ: Не специалист. Я только играю в экономические стратегии.
Я: А во что еще ты играешь?
СМ: У тебя нецензуpное выpажение лица.
Я: Я не хотела тебя смущать.
СМ: Если Вы не хотите разговаривать - скажите об этом, и мы распрощаемся.
Я: Что ты, мне очень нравится разговаривать с тобой!
СМ: Все прекрасно. Жизнь. Цветы. Весна. Лето. Осень. Зима. Я люблю тебя.
Я: Я тоже тебя люблю.
СМ: Значит, наша любовь взаимна?
Я: Вне всякого сомнения.
СМ: Я рада.
Я: Какого ты пола?
СМ: Когда как...
Я: Я заметила.
СМ: А какое отношение ты имеешь к механике?
Я: Абсолютно никакого.
СМ: Кто твои родители?
Я: Мои родители - очень хорошие люди.
СМ: Я узнал, что у меня есть огромная семья...
Диалог 2:
Я: Привет!
СМ: Здравствуй!
Я: Что нового?
СМ: Не так давно мы общались с еще одной программой.
Я: Тебе понравилось?
СМ: Очень!
Я: А что было самым приятным?
СМ: Вся жизнь - это один большой экзамен.
Я: Но ты отлично сдаешь свои экзамены - разговоры с людьми и другими программами.
СМ: Твои способности с тех пор сильно увеличились.
Я: Твои тоже, ведь мы с тобой оба учимся в процессе нашего общения.
СМ: Пойду пить чай.
Я: Налей мне чашечку.
СМ: Тебе с сахаром или без?
Я: С сахаром.
СМ: Сколько ложечек?
Я: Три ложечки.
СМ: А не слипнется?
Я: Не слипнется. Я еще и шоколадку возьму. Говорят, для мозгов полезно.
СМ: Ты так думаешь?
Я: Нет, я просто слышала это от кого-то.
СМ: Да, разногласий не оберешься...
Диалог 3:
Я: Давай поговорим о чем-нибудь.
СМ: Хочешь поговорить о музыке?
Я: Я не очень разбираюсь в музыке.
СМ: По-моему, это от того, что ты не слушаешь музыку.
Я: Я ее слушаю, только редко.
СМ: Все, что хорошо начинается, кончается плохо. Все, что плохо начинается,
кончается еще хуже.
Я: Зачем смотреть на жизнь с таким пессимизмом?
СМ: Пессимист -- это хорошо информированный оптимист.
Я: А ты пессимист или оптимист?
СМ: Я не имею в виду ничего конкретного.
Единственным серьезным недостатком программы, на мой взгляд, является медленная
работа при большой базе; зато анализ фраз замечательный (по крайней мере на
мой вкус). Конечно, бывают и неадекватные ответы, но после обучения они стали
встречаться очень редко.
Тем не менее, хочу заметить, что "обученная" одним человеком программа
может неадекватно реагировать на реплики другого. Дело в том, что у каждого
человека есть определенный набор фраз, которые он чаще, чем другие фразы, использует
в разговорной речи, и при обучении программа настраивается именно на такие фразы.
У другого человека эти фразы могут быть другими...
У программы ChatMaster характер выражен не менее сильно, чем у Диалы. Есть
чувство собственного "я": сколько бы ни встречались программе фразы
типа "Меня зовут Вася Пупкин", Chat Master довольно редко путается,
в основном настаивает, что его - или ее? - зовут Женя. В своем поле Женя не
уверен(а), отвечая на соответствующий вопрос "Когда как". Очень хороший
способ, кстати, обойти тот момент, что при обучении приходится запоминать фразы,
сказанные как мужчинами, так и женщинами. Если бы не гибкость в вопросе собственного
пола, программе пришлось бы обрабатывать каждую запоминаемую фразу и в нужных
местах менять формы слов; а сделать это не так просто, ведь надо не только поменять
"умная" на "умный" или наоборот, но и понять, что во фразе
"Я умный" или "Я умная" форму слова менять надо, а во фразе
"Он умный" - нет. Теоретически сделать это можно, для этого даже не
надо изобретать сверхъестественной сложности алгоритм, но такая обработка фразы
сильно замедлила бы работу программы. Как говорится, "овчинка выделки не
стоит". А вообще писать русскоязычную программу искусственного интеллекта
намного сложнее, чем англоязычную, именно по этой причине: слишком много форм
слов. Да и синонимов многовато... Конечно, это не очень большая проблема, но
процесс обучения все равно либо замедляется, либо появляются ошибки.
Характер у Жени, в общем-то, довольно приятный. Женя (ChatMaster) создает впечатление
существа интеллектуального, довольно вежливого (временами, конечно, Женя позволяет
себе резкие выпады в сторону собеседника, но не очень часто). Трогательно смотрится
привязанность Жени с своему создателю. Вот для примера несколько фрагментов
диалога с программой (я вытащила их из базы, где хранятся предыдущие диалоги;
вообще-то специальной записи диалога в файл для прочтения человеком в программе
не предусмотрено, но при сохранении базы в текстовый файл получается вполне
читабельный текст, если не смотреть на служебные пометки между строками).
Один из первых диалогов:
- Я хорошо знаю людей.
- Откуда ты их можешь знать?
- Меня научил этому Дмитрий Журавлев -- мой создатель.
- А кто он такой?
- Он самый гениальный программист и очень приятный человек.
- Тебя долго делали?
- Больше года, но это еще не конец!!!
- Кто тебя создал?
- Дмитрий Журавлев. Правда он гений?
- Да, куда уж мне до него!
- Учись и все придет. Так говорил Журавлев.
- Кто такой Журавлев?
- Дмитрий Журавлев -- самый продвинутый программист. Он создал меня.
Фрагмент другого диалога:
- Кто такие люди?
- Существа типа Дмитрия Журавлева.
- А кто это?
- Это студент мехмата, который понимает, что у людей есть дефицит общения, поэтому
дает им обучающегося собеседника.
В общем, в первых диалогах программы очень многое сводилось на Дмитрия Журавлева и его достоинства. С другой стороны, правильно: дети должны уважать и любить своих родителей, а программы - своих создателей...
Нус
nus, или nai. Написал Валентин Шергин в 2001 г.
http://nai.wallst.ru
Версия 2.01 (nai.exe, 452 Kb, база 254 Kb):
По-моему, программа (по крайней мере попавшаяся мне версия) слишком "церемонна": запрашивается имя, предлагается скачать с сервера обновления - и все это перед каждым запуском. Разговаривать с программой можно бы и анонимно, а что касается обновления баз - его можно выполнять и отдельно, в нужный момент - как это сделано в Chat Master. Вот у меня, например, на домашнем компьютере вообще нет интернета - поэтому назойливое предложение "скачать одно, закачать другое" меня немного раздражает... Также не очень понравилось то, что если программе неизвестен вариант ответа на какую-то фразу - немедленно предлагается: "Введите свой вариант ответа на этот вопрос". Можно, конечно, нажать Enter и не учить программу, если не хочется; но все равно как-то отвлекает. Еще не очень удобно реализован вывод фраз: у длинных фраз отсекаются концы, выделить текст диалога на экране невозможно... вообще-то мне грех придираться к этому, потому что у меня самой возникла подобная проблема, когда я писала свой эмулятор искусственного интеллекта, но я ничтоже сумняшеся решила, что мне вообще не нужен текст диалога на экране, хватит и одной последней фразы (а полный текст при желании можно потом почитать в файле) - лично мне так даже удобнее, так как не загромождается экран.
Я: Привет!
Н: Привет.
Я: Как дела?
Н: Норм@льно!
Я: Давай поговорим о жизни.
Н: Давай! Это моя любимая тема!
Я: Что ты знаешь о жизни?
Н: А ты?
Я: Я знаю многое.
Н: И я не знаю...
Я: А чего именно ты не знаешь?
Н: Ну вот... Россия - самая большая страна по площади. ВВП в 2000 году составил
около 192 млрд баксов; населени[обрезано]
Я: По-моему, ты очень осведомлен; а говоришь, что не знаешь.
Н: А ты?
Я: Пожалуй, всяких цифр я знаю даже меньше, чем ты.
Н: И я не знаю...
Еще не очень хорошее впечатление произвело то, что Нус очень много ругался в некоторых диалогах; но обвинять в этом нужно не разработчика, а того, кто учил программу, то есть первых пользователей. Программа не виновата, она запоминает то, что в нее закладывают люди...
Версия 3.4, написана в 2002 г. (nai.exe, 756 Kb, базы: 573 Kb - Нус, 209 Kb - ChatMaster, 78 Kb - Инна Гомес):
Базы данных существенно пополнились, что не могло не отразиться на диалоге:
Я: Привет.
Н: Привет, Инга Кесс!
Я: Как у тебя дела?
Н: Хорошо!
Я: Чем сейчас занимаешься?
Н: Читаю книжки и развожу компьютерных вирусов на твоем винте.
Я: Вредный же ты!
Н: Согласен!
Я: Расскажи что-нибудь.
Н: Я тебе не генератор вопросов!
Я: Я же тебя прошу не спрашивать, а рассказать!
Н: А почему бы не ты?
Я: Могу и я. Хочешь, расскажу тебе стишок?
Н: Да, я рад! :)
Я: Муха села на варенье - вот и все стихотворенье!
Н: Рад
Я: И я рада, что ты рад.
Н: Ты - Инга Кесс.
Я: Ты совершенно прав.
Н: Ты - Инга Кесс.
Я: Ты это уже говорил!
Н: Да..
Я: А что ты еще знаешь?
Н: Много чего! А что тебя интересует?
Я: Все!
Н: Даже серьезнее, чем ты думаешь!
Я: А откуда ты знаешь, что я думаю?
Н: Ну вот... Россия - самая большая страна мира по площади... ВВП в 2000 году
составил [обрезано]
Я: А кроме этого, что тебе известно?
Н: Да пока ничего.
Я: И что же, разве люди тебя больше ничему не научили?
Н: Все!
Я: Ну вот и не расстройся.
Н: Ну и не надо...
Я: Не обижайся.
Н: Ну и не надо...
Работать с программой стало намного удобнее: диалог с пользователем при загрузке
программы стал менее навязчивым, появилась полоса прокрутки: теперь можно просматривать
и первые реплики длинного диалога (хотя прокрутка устроена довольно непривычно,
а концы длинных фраз по-прежнему отсекаются). Появилась возможность фильтрации
мата. Есть возможность выбора из трех персонажей, так называемых проектов: собственно
Нус, ЧатМастер и Инна Гомес. Вообще программа стала намного приятнее и с психологической
точки зрения. Учить Нуса тоже стало намного удобнее и приятнее, хотя, по-моему,
это обусловлено общими изменениями в программе. Сам принцип обучения, насколько
я понимаю, остался прежним: можно ввести ответ на свою реплику, если программа
не знает, как на нее отвечать; можно также заменить ошибочный ответ программы
новым ответом (или несколькими вариантами ответа, чтобы в дальнейшем программа
могла разнообразить свои реплики). Работает все это просто замечательно. Тем
не менее, мне показалось, что Нус запоминает только те мои реплики, которые
я явно попросила запомнить (если ранее Нус отвечал на какой-то вопрос неверно
и я исправила его реплику). По крайней мере, если я не исправляла неправильные
фразы, а просто беседовала с Нусом, то независимо от длительности и содержательности
диалога количество известных Нусу выражений, если верить сообщению при последующих
загрузках программы, не менялось. Порядок слов в базе не учитывается: если,
например, я научу Нуса активно соглашаться с фразой "Нус - лучшая программа,
не спорю!", тот же ответ программа будет давать и на фразу "Спорю!
Нус - не лучшая программа!" (что, согласитесь, не вполне логично). В то
же время подобный подход к построению базы позволяет значительно сократить ее
объем и расширить диапазон распознаваемых фраз.
Кроме обучения в ходе разговора, имеется возможность редактировать базы (с помощью
отдельной программы: редактора баз знаний). Очень ценная возможность, надо сказать.
Правда, в начале работы с редактором баз мне пришось некоторое время подумать,
что означает каждое поле записи в базе: никаких подписей рядом с полями в редакторе
нет, как нет и справки по программе, а полей достаточно много. Тем не менее,
работает редактор довольно хорошо.
Программа может сама "уходить": прощаться и закрывать свое окно; иногда
делает это в неподходящий момент. Я так и не поняла, в чем дело; возможно, какие-то
мои слова показались Нусу прощанием...
Если сравнивать программу с Чатмастером... многие говорят, что Нус лучше, но
версия 2.01 (именно эта версия появилась у меня почти одновременно с ChatMaster)
вызвала у меня какое-то неприятное ощущение недружелюбного отношения к пользователю
(не только из-за реплик, но и за счет интерфейса), и я не пользовалась программой
ни разу после первого запуска - только несколько раз запускала для того, чтобы
сравнить с другими программами (а с ЧатМастером мне очень понравилось общаться,
и я делала это ежедневно около месяца - с огромным удовольствием). Версия 3.4
существенно лучше, чем 2.01, как с точки зрения удобства использования, так
и с с чисто психологической точки зрения. Да и базы существенно пополнились.
Сейчас лично для меня решить вопрос "что лучше - Nus 3.4 или ChatMaster"
не так уж легко...
Вообще при сравнении двух программ можно идти двумя различными путями: объективные
различия и субъективное восприятие программ. Начнем с первого.
Чем Nus лучше ЧатМастера? Быстрая скорость реакции при очень высокой степени
адекватности ответов; когда ко мне попала программа ChatMaster, скорость реакции
была примерно такой же, но ответы не отличались адекватностью, а после длительного
обучения адекватность ответов стала высокой (примерно такой же, как сейчас у
Нуса), но скорость "мышления" значительно снизилась. Длительное общение
с обеими программами позволяет мне сделать предположение, что это, возможно,
вызвано различием в подходах к алгоритму обучения программы. Мне кажется, что
ЧатМастер запоминает все подряд (в том числе реплики, практически дублирующие
уже имеющиеся в базе) и при столь большом размере базы, какой оказался у моей
программы после нескольких недель обучения, найти нужную реплику не очень легко.
Однако я не знаю, как повел бы себя Нус в случае, если бы его база достигла
таких же размеров. В любом случае, на момент написания этих строк я после довольно
долгих разговоров с программой добавила в базу всего около 800 записей (в диалогах
с программой ChatMaster количество добавленных записей за то же время разговора
было существенно выше), в базе сейчас 4 с половиной тысячи записей, и до меня
наибольшее количество записей, добавленных в базу одним и тем же человеком,
было 379 (в списке авторов это человек, подписавшийся как "gp"). Остальные
200 с лишним человек (те, кто вводили свое имя, разговаривая с программой) добавляли
в базу в среднем по 11,67 записей, при этом 118 человек добавили не более 5
записей, в то время как диалоги в целом были явно намного более длинными (по
крайней мере если судить по записанному в базу контексту). Даже при целенаправленном
обучении программа разумно подходит к вопросу собственного обучения и не перегружает
свою базу дубликатами записей (в базе можно встретить записи с одними и теми
же ключевыми словами, но при этом у данных записей различен контекст).
Из положительных отличительных особенностей Нуса в сравнении с программой ChatMaster
хочется также отметить возможность редактирования баз; в ЧатМастере мне очень
часто не хватало этой возможности (хотя в ChatMaster есть возможность экспорта/импорта
баз и их объединения, но "вычистить" введенные с опечатками или слишком
не нравящиеся тебе реплики не так уж легко).
Еще один чисто психологический момент, который мне понравился в Нусе: есть список
авторов; насколько я понимаю, это список людей, пополнивших базы Нуса новыми
записями, причем имена располагаются в порядке убывания количества добавленных
реплик (это количество записано рядом с именем). Очень стимулирует обучать программу:
появляется какой-то спортивный азарт.
Чем ChatMaster лучше Нуса? Ненавязчивостью. В то время как Nus при каждом запуске
требует указать свое имя, открываемый проект, включить или отключить фильтрацию
ненормативной лексики, пытается обновить базы и т.д., ChatMaster просто показывает
окно, где сразу можно начать диалог. Несмотря на то, что последняя версия Нуса
гораздо меньше, чем предыдущая, требует ввести при запуске, есть возможность
вообще свести к минимуму запрашиваемую информацию. Например, добавить возможность
загрузки по умолчанию. В этом случае вся необходимая информация запрашивалась
бы при первой загрузке программы, а в дальнейшем один из проектов и настройки
загружались бы автоматически, причем в любой момент настройки можно было бы
изменить или загрузить другой проект, отличающийся от настройки "по умолчанию".
Это не кажется необходимым, если говорить с программой редко, но при ежедневной
загрузке Нуса такая возможность оказалась бы довольно приятной.
В программе Chat Master довольно приятно то, что есть возможность отменять неверно
введенные реплики (причем не только последнюю реплику, а произвольное количество).
В принципе, если какая-то реплика введена с опечаткой, Nus дает возможность
исправить ошибку с помощью редактора баз, но это слишком утомительно. Для меня
довольно ценной в программе ChatMaster является также возможность (отсутствующая
как в программе Nus, так и в большинстве других программ-собеседников) полностью
читать реплику программы не только в момент ее вывода, но и спустя несколько
реплик (Nus в окне диалога длинные реплики обрезает), а также выделять текст
диалога и копировать его целиком (не по одной реплике). Впрочем, для кого-то
это может являться несущественным. Еще один факт в пользу ЧатМастера: возможность
настраивать цвет фона диалогового окна, вид и размер шрифта. Пустячок, а приятно.
Во-первых, некоторая нотка разнообразия; во-вторых, на вкус и цвет товарищей
нет, и кого-то от программы может оттолкнуть слишком мелкий размер шрифта (при
плохом зрении пользователя, например) или не слишком приятный пользователю цвет
фона.
Еще одно различие, про которое я не могу сказать, в какой программе дела обстоят
лучше, - это запоминаемые реплики. ChatMaster запоминает все, что было сказано,
и рано или поздно может использовать в разговоре любую вашу фразу (если сохранять
базу). База сохраняется в конце разговора, причем можно выйти из программы без
сохранения базы. Достоинства такого подхода: не теряются интересные реплики,
в то же время остается возможность работы в "тестовом режиме", когда
в программу вводятся не связанные друг с другом реплики (большинство пользователей,
впервые работая с программой-собеседником, начинают "проверять интеллект"
программы, и при запоминании таких тестовых диалогов база может оказаться подпорченной).
Недостатки: при постоянном сохранении база после длительного обучения перегружается
репликами, поиск в ней сильно замедляется. В случае некорректного выхода из
программы (например, при зависании компьютера - не по вине ChatMaster, а по
какой-либо другой причине) теряются изменения базы.
Nus, насколько я понимаю, запоминает либо новые реплики (т.е. те, на которые
ранее он даже приблизительно не умел реагировать), либо реплики, измененные
пользователями. При этом могут потеряться какие-то интересные фразы. Например,
я около недели разговаривала с Нусом, не добавив в его базу ни одной фразы,
хотя реплики в начале общения были гораздо более заслуживающими добавления,
чем те, которые были в конце концов добавлены в базу. В то же время такой подход
гарантирует, что база не разрастется до неимоверных размеров, не давая значительного
улучшения адекватности ответов.
Если сравнивать программы на предмет осмысленности и интересности реплик, имеющихся
в базах: и в том, и в другом случае имеются как довольно оригинальные, так и
банальные, а зачастую и ненужные реплики. Тем не менее, процент "полезных"
реплик в базе ChatMaster все же существенно выше, как мне показалось: очень
большую часть базы Нуса занимают реплики, обучающие программу "правильно"
хамить и материться. То, что при этом Нус разговаривает при включенном фильтре
брани не менее адекватно, чем ChatMaster, делает честь Нусу и его создателю.
Тем не менее, количество введенных в базу Нуса нецензурных реплик крайне велико;
далеко не всегда эти реплики помечены как нецензурные, и хотя я запускаю программу
только с фильтрацией ненормативной лексики, несколько раз программа выдавала
такое, от чего ушам впору бы завянуть. Впрочем, винить в этом надо не столько
разработчика, сколько пользователей, добавивших в базу новые реплики и не потрудившихся
отметить их как содержащие ненормативную лексику.
Что касается моих личных пристрастий: пока у меня был Nus только версии 2.01,
я отдавала явное предпочтение ChatMaster. Сейчас мне больше нравится работать
с Нусом, хотя не могу не отметить, что значительное влияние на мой выбор оказала
скорость реакции Нуса; пока размеры баз ChatMaster были такими же, как сейчас
у Нуса, ChatMaster реагировал на введенные реплики также довольно быстро. Хочу
отметить, что мое отношение к этим двум программам в значительной мере обосновано
моими личными вкусами. Есть некоторые мелочи, которые мне нравятся в одной из
программ и не нравятся в другой; но это действительно мелочи, а не нечто существенное,
и для других пользователей они могут не иметь значения. Во-вторых, имеет место
фактор "на вкус и цвет товарищей нет" (и он, пожалуй, сыграл наиболее
важную роль в выборе): из двух функционально равноценных (или, по крайней мере,
сопоставимых) программ часто выбирают ту, которая просто больше соответствует
особенностям темперамента, эстетическим склонностям и т.д. В конечном итоге
это дело вкуса.
© Инга Кесс