Программы-собеседники: разработчику на заметку
Достоинства и недостатки

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

Минимальные возможности, обеспечивающие работу программы в простейшем случае

  • Ввод фразы пользователем.
  • Подбор программой ответной фразы и вывод на экран.
  • Просмотр пользователем своей последней фразы и последней фразы программы, а желательно - и диалога в целом.

Такие возможности обеспечиваются, например, программой "Эллочка", которая имитирует диалог с Эллочкой из "12 стульев" (в словарном запасе которой было всего 30 фраз). Мне показалось, что в этом случае программа вообще никак не анализирует фразу человека, а просто выводит случайным образом одну из имеющихся шаблонных фраз (хотя возможно, что я и ошибаюсь). Обучение в данном случае отстуствует.

Что, помимо этого, присутствует во многих программах-собеседниках, а также то, чему хорошо бы присутствовать ("плюсы")

Ввод фраз и их просмотр:

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

Анализ фразы:

  • Проверка совпадения введенной фразы с эталонами.
  • Проверка наличия во фразе ключевых слов и словосочетаний.
  • Сравнение фразы с фразами-эталонами из базы (в базе ищется фраза, максимально похожая на введенную).
  • Определение тематики фразы.
  • Выявление синонимов.
  • Отделение слов-паразитов, вводных слов и т.п.
  • Фильтрация нецензурной лексики (возможно - опционально)
  • Разбивка фразы на отдельные предложения (если их несколько) и анализ каждого предложения в отдельности.
  • Учет порядка слов при сравнении фразы с эталоном: можно или нельзя разрешить перестановку слов в другом порядке.
  • Сравнение введенной фразы с эталонными "по маске".
  • Выявление эмоций во фразе человека.
  • Учет слов, меняющих смысл фразы на противоположный
  • и т.д.

Выбор ответа:

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

Обучение:

  • Естественное обучение в процессе беседы (запоминание программой реплик, возможно - построение графа, в частном случае дерева фраз).
  • Режим обучающего диалога.
  • Принудительная замена неправильно выданной реплики программы на новую фразу.
  • Редактирование баз программы - как прямо в процессе диалога, так и отдельно от беседы.
  • Обучение диалогу "из файла": аналогично обучающему диалогу, но реплики заранее записаны в файл.
  • Обучение из произвольного файла: программа анализирует текст и на его основе формирует базы; алгоритм анализа должен быть при этом достаточно совершенным, чтобы отделить действительно необходимую информацию от "мусора" и не перегрузить базу случайными предложениями.
  • Подключение баз других пользователей (с жесткого диска или с помощью выхода в интернет).
  • Подключение программы к чатам, ICQ и т.д. с целью обучения.
  • Соединение нескольких различных программ (не только двух копий одной программы, но и действительно различных программ!) и их диалог с целью взаимообучения.
  • и т.д.

Характер программы:

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

Самостоятельность программы:

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

Отношения с собеседником:

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

Другие возможности:

  • Запуск других программ по просьбе пользователя или в определенное заранее время.
  • Напоминание о важных событиях по наступлении определенной, указанной человеком, даты или определенного времени.
  • Правильный ответ на вопрос: "Который час?" (и другие подобные практические вопросы).
  • Поздравление с праздниками.
  • Самостоятельное закрытие окна программы после прощания человека и/или в других случаях, предусмотренных разработчиком; дополняется прощанием программы.
  • и т.п.

Что раздражает в некоторых программах-собеседниках

  • Маленький объем баз
  • Чрезмерно большие базы, забитые "мусором"
  • Отсутствие ответа на довольно широко распространенные реплики (например, программа может ответить "Не понимаю" на вопрос "Как тебя зовут?") Неадекватные ответы на реплики (например, на вопрос: "Как тебя зовут?" программа отвечает: "Да, я всегда пью по утрам кофе с булочкой" или "Я там не был, а что, туда стоит съездить?")
  • Неумение отличать вопросительные предложения от повествовательных и восклицательных
  • Отсутствие возможности обучения
  • Принудительное обучение "громоздко" (например, для введения одной-единственной фразы и реакции на нее обязательно нужно выполнить множество действий; такое бывает, например, когда нужно указать много значений разных параметров, при этом ВСЕ параметры обязательные)
  • Обучение не увеличивает, а уменьшает адекватность ответов программы на реплики человека
  • Программа слишком долго думает над ответом
  • Программа не дает возможность человеку подумать над ответом: малейшая задержка с вводом ответной фразы приводит к выдаче программой новой реплики
  • Нет возможности настройки программы: увеличение/уменьшение степени самостоятельности программы, разрешение/запрет обучения в процессе диалога и т.д.
  • Неумеренное использование нецензурной лексики в базах программы
  • Отсутствие фильтрации мата со стороны человека
  • Чрезмерно усердная фильтрация мата (например, Chat Master не давал мне произносить фразы типа: "Любой страх можно преодолеть" или "Ребенок тоже сначала не умеет говорить" - вероятно, из-за присутствия в них комбинаций символов "трах" и "ебе", в результате чего мои фразы казались ЧатМастеру нецензурными)
  • Невозможность просмотра фраз диалога целиком (длинные фразы обрезаются справа - отсутствие переноса на новую строку; в худшем случае отсутствует даже возможность просмотреть конец фразы с помощью полосы прокрутки или перемещения курсора)
  • Невозможность просмотреть весь текст диалога (на экране помещается только часть фраз при отсутствии полос прокрутки)
  • Слишком яркие цвета (утомляют глаз)
  • Слишком крупные и/или некачественные картинки (по-моему, лучше вообще отсутствие графики в программе, чем ее откровенно плохое качество - например, пискели, увеличенные до размера "сантиметр на сантиметр", такое обычно делают со смайликами)
  • Нечитаемый текст: слишком мелкий или слишком крупный шрифт, использование контрастных цветов (красный текст на зеленом фоне) или, наоборот, слишком близких (темно-серый текст на сером фоне)
  • Нерациональное использование пространства окна программы: пустые места, ничем не занятые
  • Невозможность выделения и копирования фраз из окна программы, а также вставки фраз в текстовое поле из буфера обмена
  • Невозможность использования при работе с программой стандартных комбинаций клавиш: например, Ctrl+C для копирования и Ctrl+V для вставки (причина: данные комбинации клавиш переопределены для выполнения каких-то функций программы)
  • и некоторые другие вещи...

Не надейтесь, что в моей программе присутствовали все плюсы и отсутствовали все минусы. У моей программы присутствуют многие из упомянутых недостатков и осутствуют многие из достоинств. Я описывала здесь некую "идеальную" программу, а к идеалу надо стремиться...

Обобщались результаты работы со следующими программами-собеседниками:

  • Chat Master 3.02 (для нескольких вариантов базы, настолько разных, что можно считать это разными версиями программы)
  • Nai (Nus) 2.01
  • Nai (Nus) 3.4
  • Diala
  • Electronic Brain 1200 SE
  • Miss Talking
  • Fallout Chat
  • Болтун 2.0
  • S'Talker 1.21 (Offline Chat)
  • Sex Chat. Разговор с незнакомкой
  • Sex Talk 1.1
  • Бритни Спирс
  • Lansa
  • Говорун
  • Эллочка
  • РоботЧат
  • Аки Росс
  • Talker
  • A-Life2
  • A-Life3
  • Talkerus (моя программа) и его предшественник под DOS

© Инга Кесс

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

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

Hosted by uCoz