Программы-собеседники: разработчику на заметку
Знакомство и продолжительные разговоры с парой десятков программ-собеседников,
а также изучение отзывов других людей о подобных программах позволили мне сделать
некоторые выводы относительно положительных и отрицательных особенностей таких
программ (не класса программ в целом, а каждой из программ в отдельности), желательных
возможностей и раздражающих факторов. Эти данные можно использовать при разработке
новой подобной программы или при совершенствовании уже существующей.
Минимальные возможности, обеспечивающие работу программы в простейшем случае
- Ввод фразы пользователем.
- Подбор программой ответной фразы и вывод на экран.
- Просмотр пользователем своей последней фразы и последней фразы программы,
а желательно - и диалога в целом.
Такие возможности обеспечиваются, например, программой "Эллочка", которая
имитирует диалог с Эллочкой из "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
Инга Кесс