Обзор программ-собеседников. Выпуск 6

В этом выпуске: программы Talking (разработчик - Р. Стогов, 1994 г.), Виртуальный Путин, t.A.T.u. ScreenMate

См. также: выпуски [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11.1] [11.2] [12]

Talking

(Программа Talking 1.08: TALKING.EXE, 16 Kb. База 37 Kb)
Разработчик: Роман Стогов, 1994 г.
Скриншот

Не смотрите на то, что программа написана давно (соответственно, под DOS). Главное - не интерфейс, а возможности, которых у Talking довольно много.
Как и многие аналогичные программы, Talking работает по принципу поиска ключевых слов. Однако алгоритм поиска слов и выбора соответствующего ответа не так прост, как может показаться.
Поиск ключевых слов во фразе осуществляется двумя различными способами: длинные ключевые слова ищутся как последовательности символов (что позволяет в качестве ключевых слов использовать, например, слова без окончаний или только корни слов; или, напротив, целые словосочетания), короткие ключевые слова - как целое слово (это сделано для того, чтобы программа, находя во фразе человека, например, букву "я", не принимала ее за слово "я"). Максимальное количество символов, при котором слово ищется как целое слово, а не как последовательность символов, можно настраивать. При поиске же длинных последовательностей символов, кроме обычных словосочетаний (когда последовательность слов имеет принципиальное значение), можно использовать наборы слов (слова, которые могут встретиться во фразе в любом порядке); вместо пробела такие ключевые слова разделяются в базе символом ^. Естественно, существует несколько вариантов ответа на одни и те же ключевые слова; один из вариантов выбирается случайным образом. Ключевые слова с одними и теми же вариантами ответа записаны подряд, что несколько сокращает объем базы.
В упрощенном виде фрагмент базы можно представить так:

КЛЮЧЕВОЕСЛОВО1
КЛЮЧЕВОЕ СЛОВОСОЧЕТАНИЕ 2
КЛЮЧЕВОЕСЛОВО3
НАБОР^КЛЮЧЕВЫХ^СЛОВ4
   Вариант ответа 1.
   Вариант ответа 2.
   Вариант ответа 3.
....
При этом во фразе должны присутствовать все слова одной из строк списка ключевых слов; как количество вариантов "ключевого слова" (или сочетания символов: части слова, словосочетания, набора слов), так и количество возможных вариантов ответа может быть любым.

Как я уже сказала, это упрощенное представление о формате базы. Во-первых, кроме обычных ключевых слов и ответов на них, используются также особые типы фраз: пеpвый вопpос программы пpи запyске, ответ на первую фразу человека, реакция на повторы, реакция на пустую строку, реакция на ответ латинскими буквами, "левые ответы" (по терминологии разработчика: варианты реакции на фразу человека, на которую программа ответить не может; количество вариантов в той базе, которую мне удалось достать, - 68, т.е. не так уж и мало - с учетом следующего замечания...). Во-вторых, есть возможность использования подстановок (как в ответах на ключевые слова, так и в ответах на непонятные фразы):

  • предыдущая фраза человека (полностью);
  • часть фразы человека, начинающаяся с конца найденного в ней ключевого слова;
  • то же, что в предыдущем пункте, но без пробелов и знаков препинания в начале и в конце фразы, а также без окончания ключевого слова в случае, если ключевое слово было написано без окончания;
  • имя человека (или то, что было введено вместо имени: первая фраза человека, введенная в ответ на запрос об имени);
  • текущее время;
  • текущая дата;
  • некий макрос;
  • пауза во время вывода текста (например, можно сделать паузу в середине фразы);
  • выход из программы.

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

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

Пример диалога:

Talking: Привет, ты кто?
Человек: Инга
Talking: И чего тебе надо?
Человек: Да вот, поговорить с тобой хочу.
Talking: И я так считаю.
Человек: Тогда давай разоваривать.
Talking: Ты гость, что тебе нpавится ? Я напpимеp плюшки тpескать люблю :)
Человек: А я люблю чай с печеньем.
Talking: И что в этом плохого?
Человек: Ничего, я думаю :)
Talking: Я смотрю тебя все думы одолевают...
Человек: Да ладно, я с ними справляюсь :)
Talking: Не въехал Да или Нет.
Человек: Да.
Talking: Ага.
Человек: Угу.
Talking: А ты не соглашался !
Человек: В смысле?
Talking: И чего это тебя на такие мысли потянуло ?
Человек: Мысли как мысли. Не пойму, что тебе не нравится.
Talking: А ты как думаешь что ?
Человек: Думаю, ты просто не совсем понимаешь, что я говорю :)
Talking: Только мы и все?
Человек: М-да. А вот теперь уже я не могу понять, что ты имеешь в виду.
Talking: И что мы с тобой?
Человек: Ну, как что? Придется все же как-то находить общий язык.
Talking: А ты как думаешь что ?
Человек: А ты повторяешься...
Talking: Не знаю что и сказать....
Человек: Так я и знала.
Talking: И что?
Человек: И ничего.
Talking: Да наверное ничего .
Человек: Вот видишь, ты со мной согласен.
Talking: Кто тебе это сказал !?
Человек: Интуиция подсказывает.
Talking: Ага. Но я не совсем понял, почему ты так считаешь.
Человек: Ну, как бы тебе это объяснить...
Talking: В смысле - что "Это" !?
Человек: Слушай, по-моему, ты меня запутать пытаешься!
Talking: Нет, это я тебя слушаю !
Человек: И что слышно?
Talking: Ой, устал я от твоих вопросов.
Человек: Больно рано ты устаешь.
Talking: Там только травят.
Человек: Что???
Talking: А ты вообще хочешь со мной говоpить
Человек: Хочу, а как же!
Talking: И я это хочу, но что ж поделать... :-(
Человек: А что нам мешает с тобой общаться?
Talking: А что, а чего - хватит тут распрашивать :-((((
Человек: Ну, давай ты меня о чем-нибудь спросишь.
Talking: Ты гость, что тебе нpавится ? Я напpимеp плюшки тpескать люблю :)
Человек: Ты уже спрашивал. Ну ладно. Еще мне нравится слушать музыку, гладить кошку и ходить по воде босиком.
Talking: О, мyзыка-это моя стpасть!
Человек: А что тебе больше всего нравится?
Talking: Не знаю, сейчас спрошу у соседа. [пауза...] Он тоже не знает.
Человек: А своего мнения у тебя нет?
Talking: Попpyбyй yгадай!
Человек: Сейчас попрубую :). Наверное, нет?
Talking: Ты чего лыбишься?
Человек: Да так, смешно просто.
Talking: Я понимаю.
Человек: А ты умеешь смеяться?
Talking: Да ну тебя!
Человек: Я тебя обидела?
Talking: И что?
Человек: Мне не хотелось бы тебя обижать.
Talking: Об'ясни подробнее.
Человек: Я хочу, чтбы мы с тобой были друзьями.
Talking: А ты различаешь друзей от знакомых ?
Человек: Конечно. Знакомых может быть много, пусть даже очень хороших знакомых...
Talking: Об'ясни мне это - по-моему, так не бывает...
Человек: Разве у тебя мало знакомых?
Talking: Это конечно так.
Человек: А я думала, ты со многими общаешься.
Talking: И что мы с тобой?
Человек: А мы с тобой только-только начали общаться.
Talking: Совсем заpаботался, бедняга ?
Человек: Кто?
Talking: Я .
Человек: А почему ты о себе в третьем лице говоришь?
Talking: Потому-что потому, а кончаеться на "y"
Человек: Невежливо так говорить.
Talking: Hy и что дальше?
Человек: А ты подумай, что дальше.
Talking: Что-то я плохо слышy!!!
Человек: Скорее, плохо видишь. Текст-то я не вслух произношу, а на клавиатуре набираю...
Talking: А сколько у тебя кнопок?
Человек: Много, ох, много... Больше сотни.
Talking: Давай, давай, не стесняйся!
Человек: Да я и не стесняюсь.
Talking: Никогда бы не подумал.

(и так далее)

Примеры использования подстановок и макросов (первая фраза принадлежит человеку, вторая - ответ программы):

- Хочешь яблоко?
- хочишь яблоко?? Ну нафиг.
(использована случайная орфографическая ошибка)


- У меня есть другая идея.
- Другой идея?


- Ты меня не понимаешь, что ли?
- я тебя не понимаю, что ли?? Неа...


- Давай сыграем в слова!
- Давай сыграем в слова? Хоpошо, начинай !


- А если у тебя слова закончатся?
- А если у меня слова закончатся, так мы другим займемся.


- С чего ты взял?
- Как с чего я взял, а то ты сам не знаешь.


- Я уже говорила об этом.
- Так ты уже говорила об этом?


- Куда ты записываешь наш разговор?
- Куда я записываю ваш разговор!? Хмм... Я был о тебе лучшего мнения... :)



А теперь давайте вспомним бородатый анекдот про кондуктора и "зайца" и попытаемся реализовать тот же диалог в программе Talking. Получается великолепно!

- Твой билетик!
- Конечно мой билетик!
- Твой билетик!!!
- Мой билетик !?
- Мне нужен твой билетик.
- Нет не мой билетик!
- Показывай, где твой билетик.
- Ну если уж ты так просишь [выход из программы]
("А вот и моя остановочка!". Прямо по тексту анекдота :))).
На самом же деле, похоже, "показывай" было принято за "пока")


- Какой сегодня день?
- Сегодня 11/25/103, а зачем тебе?

Ну, проблемы с датой - это вполне естественно для программы, написанной в 1994 году... всем давно известно, что после 99 года у таких программ часто идет 100-й, затем, соответственно, 101, 102 и 103 :). Кстати, обратите внимание на формат даты (сначала месяц, потом число). Не наш это формат, ох, не наш, не европейский :).


- Где раки зимуют?
- Откуда я знаю, где раки зимуют ?


- Ты - программа.
- А ты что не программа?


-Лови
- [пауза] Поймал! Спасибо!


Правда, не все теоретически известные ключевые слова программа практически может распознавать. Так, в базе вроде бы заложены ключевые слова "вопрос о текущем времени" и соответствующие реакции. Берем ключевое слово непосредственно из базы - "сколько времени":

- Сколько времени?
- Какой ты умный! Это что-то.
- Скажи, сколько времени
- Все может быть.

Как можно видеть, программа считает, что такое ключевое слово (словосочетание) ей не известно.
Хотя на другие слова из базы программа отвечает правильно:

- Скажи время
- У тебя чаво, часов нет!? Если верить моему CMOSy, то сечас 12:50:39 :)... А если серьезно, то я и сам не знаю :(

- У тебя есть часы?
- 12:51:36 а что?


Замена во фразе выполняется тоже не всегда корректно (вероятно, из-за сложности построения фразы на русском языке; в базе рассмотрено очень ограниченное количество вариантов):

- Да ты неправильно меня понял!
- Да я и не неправильно тебя понял.


- Ты можешь не ошибаться?
- я можешь не ошибаться??


- Кто видел, тот понял, в чем дело.
- Я не знаю, кто видел, тот понял, в чем дело.


- Я понимаю.
- Я понимаешь тоже. Жизня у нас такая...


Итак, небольшие "фефекты фикции" у программы все же есть.

Все диалоги записываются в файл.

Пример диалога (№2):

Talking: Кто на связи?
Человек: Инга
Talking: Привет, давно не виделись.
Человек: Да нет, мы же с тобой только начали общаться!
Talking: Не въехал Да или Нет.
Человек: Будем считать, что да.
Talking: Я понимаю.
Человек: Давай общаться.
Talking: Ты гость, что тебе нpавится ? Я напpимеp плюшки тpескать люблю :)
Человек: А я люблю мороженое.
Talking: Я тебе завидую!
Человек: Почему?
Talking: Это не телефонный pазговоp!
Человек: А что тебе скрывать?
Talking: Не знаю, сейчас спрошу у соседа. [пауза] Он тоже не знает.
Человек: Жалко, что вы оба не знаете :)
Talking: Да именно это самое !
Человек: Расскажи что-нибудь.
Talking: Ой, устал я от твоих вопросов.
Человек: Я не так уж и много задаю вопросов...
Talking: А почему бы и нет ?
Человек: Действительно, почему бы и нет?
Talking: Почем я знаю !
Человек: А что ты знаешь?
Talking: А ничего...
Человек: Совсем ничего?
Talking: Думаешь ничего?
Человек: Тебе лучше знать, что ты знаешь, а что нет.
Talking: А ничего...
Человек: Да... а я-то хотела с тобой пообщаться.
Talking: И я так считаю.
Человек: Тогда расскажи мне о себе.
Talking: Hy че ты хочешь yслышать?
Человек: Кто ты такой?
Talking: Наверное TALKING, а может и PSYS, - сомнения меня гложут... А понял я пьяный сисоп с псисоманией :)
Человек: Что это за мания такая?
Talking: Да именно это самое !
Человек: А что значит "это самое"?
Talking: А что, а чего - хватит тут распрашивать :-((((
Человек: Уж и спросить нельзя.
Talking: Интересно.
Человек: Что тебе интересно?
Talking: А ты вообще хочешь со мной говоpить
Человек: Конечно, хочу!
Talking: Такого не бывает.

Виртуальный Путин

(President.exe, 584 Kb, базы и дополнительные модули 619 Kb)
Разработчик: Сергей Захаров, SZSoft, 2001 г.
Скриншот

Помните программу Бритни Спирс? Представьте себе ту же саму программу, но с другой фотографией. Существенных изменений в базе не обнаружено, дополнительных возможностей - тоже, если не считать пары-тройки дополнительных команд: к "Пива!", "Поесть" и "Закурить" добавились "Медаль", "Кепка" и "Фингал". Как можно видеть, программа не столько "разговорчивая" или просто развлекательная, сколько издевательская. К тому же в базе некоторые фразы остались от предыдущего персонажа - Бритни Спирс, что выглядит, согласитесь, не вполне естественно. В общем, эта программа мне не нравится. Примеров диалогов приводить не буду - они практически идентичны диалогам, которые можно получить, разговаривая с "Бритни", за исключением пары-тройки дополнительных фраз на тему "замочу в сортире". Кстати, диалоги с "Бритни Спирс" также демонстрируют недоработки базы. Если делаете виртуального персонажа - будьте добры не только поместить фотографию в окно программы, но и подобрать соответствующие фразы для базы реплик...

t.A.T.u. ScreenMate

(tatu.exe, 260 Kb, база 18 Kb; требует наличия библиотеки msvbvm60.dll - 1352 Kb)
Разработчик: Piligrym, 2002-2003 г.
www.hooliganka.tk
Скриншот

Идея, в общем-то, та же, что и у "Бритни Спирс": небольшая фотография персонажа (или персонажей), чуть ниже - овальное поле ввода реплики, ответ появляется в "облачке", как в комиксах. Так же, как и в случае "Бритни Спирс", база программы маленькая; однако на этот раз разработчик и не претендует на написание программы ИИ (такая "мания величия" свойственна многим пишущим подобные программки); "Тату" - всего лишь "screenmate", экранный житель.
Можно общаться по отдельности с Юлей, с Леной, а также с обеими "татушками" одновременно. База реплик, впрочем, во всех трех вариантах одна и та же (довольно маленькая, кстати, база; но ее можно пополнить с помощью простенького встроенного редактора).
Помимо режима диалога, есть довольно занятный режим "гадать". В этом режиме каждая вводимая человеком реплика рассматривается как вопрос, на который можно ответить "Да" или "Нет" (соответственно, программа выдает один из этих ответов - или его синоним). Ну вот, собственно, и все...

В следующем выпуске обзора - любопытная утилитка для любителей ChatMaster, новые версии программ "Говорун" (отличия от первой версии весьма и весьма существенные!) и "Аки Росс", а также, возможно, новые программы.

© Инга Кесс

При полном или частичном использовании этих материалов на своем сайте не забудьте поставить ссылку на Растрепанный Блокнот :)...

 
На главную страницу
 
Все о программах-собеседниках

Hosted by uCoz