Универсальная база

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

  • Ключевые слова последней реплики пользователя, с использованием логических операций. Например:
    слово1 И (слово2 ИЛИ слово3 ИЛИ слово4) И (слово5 ИЛИ слово6) И НЕ слово7
    Вместо собственно ключевых слов могут использоваться их синонимы. Например:
    СИНОНИМ(да)
    СИНОНИМ(нет)
    СИНОНИМ(до свидания)
    и т.д.
    Такая запись полезна для сокращения объема базы. При этом список синонимов хранится отдельно.
    Почему нельзя просто автоматически заменять все слова, для которых есть синонимы, на какой-то один из синонимов? Дело в том, что есть устойчивые словосочетания, для которых такая замена невозможна.
    В дальнейшем под ключевыми словами будут подразумеваться или собственно слова, части слов, словосочетания и даже целые предложения (слово1, слово2...), или обозначения их синонимов (СИНОНИМ(слово1), СИНОНИМ(слово2) и т.д.)
  • Ключевые слова предпоследней реплики человека (перед только что сказанной), с использованием логических операций.
  • Ключевые слова последней реплики программы (перед той, которая сейчас будет выведена), с использованием логических операций.
  • Ключевые слова контекста, с использованием логических операций (неважно, в чьей именно фразе встретились эти слова; глубина просмотра предыдущих реплик может быть фиксированной - например, 5 последних фраз, или же все предыдущие реплики диалога; можно также завести дополнительный параметр "глубина просмотра" и указывать его значение в записи базы, при этом по умолчанию - если глубина не указана - может просматриваться весь диалог)
  • Наиболее актуальная тема разговора, или несколько тем - с использованием логических операций. В разговоре в той или иной степени могут затрагиваться различные темы. Программа может отслеживать уровень заинтересованности той или иной темой (например, по ключевым словам) и в дальнейшем реагировать в зависимости от того, какая тема больше всего затрагивалась в последнее время (желательно, чтобы с течением времени интерес к неподдерживаемой теме автоматически падал).
    Почему отдельно записывается тема, а отдельно - ключевые слова контекста? Дело в том, что некоторые темы встречаются достаточно часто, и ключевых слов для этих тем много. В этом случае поле "тема" вместо конкретных ключевых слов позволит существенно сократить объем базы. В то же время есть темы, встречающиеся редко, и ключевых слов для них не очень много; их можно занести непосредственно в базу (если не отслеживать интерес к редко встречающимся темам, обработка фразы существенно ускорится).
  • "Эмоции" программы. В простейшем случае - просто настроение (хорошее, плохое, нормальное); в более сложном варианте - что-то типа строки параметров, в которой могут присутствовать идентификаторы основных обнаруженных эмоций: радость, печаль, удивление, злоба, обида, равнодушие и т.д. Возможно, эмоции тоже записываются в виде логического выражения:
    эмоция1 И (эмоция2 ИЛИ эмоция3)
    и т.п.
    Если идентификаторы не обнаружены, считается, что запись подходит для любого настроения.
  • Эмоции, обнаруженные программой у человека. Формат записи тот же.
  • Если программа, помимо вывода реплик, способна выполнять какие-то еще действия (открывать программы, выводить изображения и т.д.), в базе может учитываться факт выполнения тех или иных действий в недавнем прошлом.
  • Варианты ответов (в случае, если программой обнаружено соответствие записи параметрам введенной реплики, выдается случайным образом один из ответов).
  • Значения, на которые нужно изменить (уменьшить или увеличить) тот или иной параметр эмоционального состояния человека или программы. Если изменение значения того или иного параметра непосредственно в базе не прописано, оно не меняется. Это команда, выполняющаяся вне зависимости от того, выбрана ли запись данная базы в качестве ответной; важно лишь то, что запись в той или иной степени соответствует введенной фразе человека.
  • Значения, на которые нужно изменить степень заинтересованности той или иной темой.
  • Действия, которые нужно выполнить в случае, если запись была выбрана в качестве ответной (запустить то или иное приложение, закрыть окно программы и т.д.).
  • Дополнительно: для записей, добавленных в процессе обучения, - автор записи, дата добавления.
  • ...

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

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

Синтаксис, приведенный в примерах, условный; естественно, в какой-то конкретной базе он может быть иным.

© Инга Кесс. Октябрь 2003.

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

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

Hosted by uCoz