Чат бот Киса. Открытый проект секретной лаборатории bot.su и hottabych.net
Добавление ответов Кисы в загружаемые таблицы
Все варианты ответов Кисы разделены на несколько таблиц и соответствуют названиям использующих их классов. Каждая таблица представляет собот простой xml файл с определённой для каждого класса структурой. Все эти файлы размещены в директории "/library/su/bot/kisa/xml/" Вы можете править эти таблицы в любом текстовом редакторе, сохраняя результат в utf кодировке. Все фразы пользователя должны быть приведены к нижнему регистру и нормализованы по пробелам. Все фразы чат бота должны в точности соответствовать выводимой форме. Во избежание повторов настоятельно рекомендуется для каждого варианта сообщений пользователя задавать не менее трёх вариантов ответов. При изменении таблиц настоятельно рекомендуется размещать варианты (ключевых фраз и ответов) по алфавиту. Следует заметить, что стандарт xml достаточно строг, поэтому после исправления таблицы настоятельно рекомендуем открыть её с помощью интернет браузера для проверки валидности (правильности формата). В случае ошибки класс будет работать не правильно. Валидность следует проверять Firefox, если он у Вас не установлен, воспользуйтесь ссылкой ниже:
Стуктура таблиц интуитивно понятна после ознакомления с ними, однако, для понимания принципов выбора ответов из таблиц каждым классом необходимо предварительно хотя бы поверхностно ознакомиться с описанием функционирования Чат бота Киса, а также с текстом настоящей страницы.
Для установки версий таблиц, используемых в реализации Чат бота Киса, необходимо поправить устанавливающие строки в верхней части файла demo.js определив нужное Вам их расположение (переменные xmlEmptyQuestionLoadTabLocation, xmlLoadTabLocation, xmlSearchLoadTabLocation, xmlSearchResLoadTabLocation, xmlSituationLoadTabLocation, xmlVariantLoadTabLocation).
Ниже описываются форматы всех доступных в настоящее время таблиц:
Термином запись, для целей настоящего описания, определяется информация, заключенная в теги <m></m>. Запись являеться единицой разбора (парсинга) для классов при создании их собственных локальных таблиц ответов. Запись может или должна (в зависимости от класса, который её разбирает) содержать варианты ключевых фраз и обязана содержать хотя бы один вариант ответа. Каждая запись является независимой от предыдущей.
Для каждой записи необходимо вводить тег языка <l></l>. На сегодняшний день доступны два языка - ru и en. Например, если фраза относится к русскому языку, необходимо вставить - <l>ru</l>. Отсутствие этого тега может привести к непредсказуемым последствиям.
 
Простейшей таблицей является таблица класса универсального ответчика (su.bot.kisa.javascript.chatbots.EmptyQuestionLoadTab) - su.bot.kisa.xml.EmptyQuestionLoadTab, определющая универсальные ответы на вопросы (сообщение пользователя, содержащее знак вопроса). Формат записи таков:
<m><t>текст ответа</t></m>
 
Аналогичной по структуре таблицей является таблица класса универсального разговорщика (su.bot.kisa.javascript.chatbots.LoadTab) - su.bot.kisa.xml.LoadTab, определяющая универсальные фразы, которые будут выводиться в случае, если остальные классы не смогли подобрать нужного ответа. Формат записи для этой таблицы такой:
<m><t>текст ответа</t></m>
 
Таблица класса вариантной таблицы (su.bot.javascript.chatbot.chatbots.VariantLoadTab) - su.bot.kisa.xml.VariantLoadTab устанавливает соответствие между фразами пользователя и варианами ответов (точное совпадение). Формат записи этой таблицы таков:
<m>
<ms>ключевая фраза</ms>[<ms>ключевая фраза</ms>]
<t>вариант ответа</t>[<t>вариант ответа</t>]
</m>
В каждой записи этой таблицы могут быть определены одна или несколько ключевых фраз (которые будут точно совпадать с введённой пользователем фразой, приведенной к нижнему регистру и нормализованной по пробелам) и не меньше одного варианта ответа, которые будут выведены пользователю при совпадении с одной из этих ключевых фраз. Пример.
 
Структурным аналогом описанной выше является таблица класса ситуационной таблицы (su.bot.kisa.javascript.chatbots.SituationLoadTab) - su.bot.kisa.xml.SituationLoadTab, только вместо ответов пользователей в ней анализируются ситуации. В настоящее время доступны следующие ситуации: пользователь ввёл пустое сообщение (empty), пользователь ввёл слишком длинное сообщение (long), пользователь повторно ввёл одно и тоже сообщение (repeat), пользователь ввёл слишком короткое сообщение (short). Формат записи для этой таблицы такой:
<m>
<ms>название события</ms>
<t>вариант ответа</t>[<t>вариант ответа</t>]
</m>
 
Таблица класса обратного поиска из таблицы в сообщении пользователя (su.bot.kisa.javascript.chatbots.SearchLoadTab) - su.bot.kisa.xml.SearchLoadTab, включает ключевые слова, которые ищутся во введённой пользователем фразе, подбирая ответы. Формат записи в ней такой:
<m>
<ms>ключевая фраза</ms>[<ms>ключевая фраза</ms>]
<ex>исключение</ex>[<ex>исключение</ex>]
<r>вероятность</r>
<t>вариант ответа</t>[<t>вариант ответа</t>]
</m>
В каждой записи этой таблицы могут быть определены одна или несколько ключевых фраз (которые будут искаться во введённой пользователем фразе, приведенной к нижнему регистру и нормализованной по пробелам), одна или несколько исключающих фраз, которые пользовательская фраза не должна содержать, вероятность, с которой этот ответ должен применяться, и не меньше одного варианта ответа, которые будут выведены пользователю.
 
Таблица класса обратного поиска из таблицы в ответе робота (su.bot.kisa.javascript.chatbots.SearchResLoadTab) - su.bot.kisa.xml.SearchResLoadTab, аналогична предыдущей (но в усеченном виде) включает ключевые слова, которые ищутся в последнем ответе чат бота, подбирая ответы случайным образом. Формат записи в ней такой:
<m>
<ms>ключевая фраза</ms>[<ms>ключевая фраза</ms>]
<t>вариант ответа</t>[<t>вариант ответа</t>]
</m>
В каждой записи этой таблицы могут быть определены одна или несколько ключевых фраз (которые будут искаться в последнем, показанном пользователю ответе чат бота, приведенной к нижнему регистру и нормализованной по пробелам), и не меньше одного варианта ответа, которые будут выведены пользователю.
 
Пример
Задача: Вы хотите, чтобы Киса отвечала на фразу "Как ты устроена?" словами "Как я устроена - долго объяснять... Иди на Bot.Su, там все написано."
Решение: Реакцию на такой вариант вопроса лучше разместить в вариантную таблицу - su.bot.kisa.xml.VariantLoadTab как точное совпадение введённой фразы пользователя ключевой. Кроме этого, пользователи иногда забывают поставить знак вопроса, это тоже необходимо предусмотреть.
Ответ: Открываем вариантную таблицу - su.bot.kisa.xml.VariantLoadTab. Добавляем:
<m>
<ms>как ты устроена</ms>
<ms>как ты устроена?</ms>
<t>Как я устроена - долго объяснять... Иди на Bot.Su, там все написано.</t>
</m>
 
Вы можете экспериментировать и изменять словарь Кисы у себя на локальном или удалённом компьютере. Не нужно присылать нам Ваши варианты словаря Кисы.
Если мы допустили ошибки, или Вы считаете, что настоящее описание можно (нужно) улучшить, присылайте свои предложения по адресу
 
Дизайн: какой-то человек ™
Координация: bot.su