From 78d71d2cad6f243c6ff31d41380b8c5b58407de5 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Thu, 17 May 2012 17:37:22 +0000 Subject: added some plugins git-svn-id: http://svn.miranda-ng.org/main/trunk@20 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Boltun/mind.txt | 142 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 plugins/Boltun/mind.txt (limited to 'plugins/Boltun/mind.txt') diff --git a/plugins/Boltun/mind.txt b/plugins/Boltun/mind.txt new file mode 100644 index 0000000000..01dcd6e5ba --- /dev/null +++ b/plugins/Boltun/mind.txt @@ -0,0 +1,142 @@ +В этом файле описан формат файла базы реплик и принцип работы Болтуна. + +============================================================== +Формат файла. +Файл базы реплик имеет кодировку UNICODE и состоит из пар строк. +Такие пары строк являются допустимыми: + +1) Фразы обучения: + +"Фраза" +"Ответ" + +2) Ответы по ключевым словам: + + ("список ключевых слов") +"Ответ" + +При этом список ключевых слов состоит из слов, ОБЯЗАТЕЛЬНО должен заканчиваться символом +типа предложения ('?' - вопросительное, '.' - любое другое). Если список предваряется +символом '~', то это является разрешением нечеткого совпадения. + +3) Ответы по специальным словам: + + {"список специальных слов"} +"Ответ" + +4) Часто используемые фразы: + + ["Фраза"] +"Ответ" + +5) Слова-признаки вопросительного предложения: + + +"слово" + +6) Специальные слова: + + +"Специальное слово" + +7) Общие ответы: + + +"Общий ответ" + +8) Начальные фразы (Для начала разговора): + + +"Начальная фраза" + +9) Общие ответы (то же, что и 7): + + +"Общий ответ" + +10) Алиасы + +@"привет" +"превед прю прифф" + +11) Ответы на повторы + + +"Я уже сказал." + +============================================================== + +Припцип работы движка бота: + +Во время работы движку передается реплика клиента, а движок на основе реплики формирует ответ. +Нахождение ответа имеет такие фазы: + +0) Если эта реплика совпадает с предыдущей (точное совпадение), сказанной не более 30 мин. назад +- выдается одна из реплик-ответов на повторы (11). После 2-3 повторов Болтун перестает реагировать +на повторы этой реплики и просто не отвечает. После 30 мин Болтун нормально реагирует на эту же +реплику, но на повтор сразу будет молчать. Так будет до первой реплики, отличной от уже +повторенной. + +1) Поиск реплики целиком среди часто используемых (4) реплик. При нахождении реплики ее ответ +возвращается как ответ бота. Если ответов для этом реплики несколько, то выбирается +один из них. + +Если реплика не найдена среди (4), то поиск ответов продолжается. +Далее все найденные ответы запоминаются с учетом их приоритета и в конце осуществляется +выбор. 0 - наивысший приоритет. + +2) Далее происходит поиск среди реплик обучения (1) аналогично пункту 1). Результаты имеют +приоритет 1. + +3) Производится разбиение реплики на предложения. Разделителями предложений являются симолы +'.' '!' '?', при этом игнорируется '!' в составе смайлика ':-!'. + +Следующие действия производятся для каждого предложения: + + 4) Поиск предложения целиком среди часто используемых (4) фраз. Результаты имеют + приоритет 0. + + 5) Поиск среди фраз обучения (1). Результаты имеют приоритет 1. + + 6) Далее происходит разделение предложения на слова. При этом в предложении выделяются + как слова все смайлики, а также скобки количеством больше двух ( "))" ). + Производится определение типа предложения: вопросительное или нет. Вопросительное + предложение или имеет в конце восклицательный знак, или содержит хотя бы одно слово, + которое относится к вопросительным (5). + Отдельно записываются слова, которые относятся к специальным (6). + + 7) Поиск совпадения среди ключевых слов (2). Все ключевые слова должны присутствовать в + предложении и тип предложения должен совпадать. Результаты имеют приоритет 1. + Предпочтительным является совпадение как можно большего количества ключевых слов. + + 8) Поиск совпадения среди специальных слов (3). Специальные - это слова из (6). + Подразумевается, что они не несут особой смысловой нагрузки и по ним возможны только + обобщенные ответы. В предложении должно присутствовать не менее одного специального + слова (как правило, присутствует только одно). Также, тип предложения должен совпадать. + Результаты имеют приоритет 2. + +Результаты, полученные от разных предложений, имеют одинаковый приоритет и только один из +них может стать ответом. + +Пункты 9 и 10 ипользуются, только если опция "Молчать, если нету хороших ответов" +(aka "Иногда лучше жевать") отключена. + +9) Выбор одного случайного ответа среди общих ответов (7). Результаты имеют приоритет 3. + +10) Выбор одного случайного ответа среди общих ответов (9). Обычно (9) - это несколько +реплик в духе "не понял". Результаты имеют приоритет 3. + +Таким образом, в случае непонятной фразы используется или 9 или 10 с равной вероятностью. + +После этого производится замена алиасов (10) в исходной реплике на соответствующие слова и +повторение пунктов 1-10 для такой реплики. + +Как ответ бота выбирается случайный ответ с наименьшим значением приоритета. При нескольких +ответах одинакового приоритета выбирается тот, который не использовался до этого +(учитываются предыдушие ответы Болтуна этому контакту за последние 30 минут). +Если никаких вариантов ответа нет (например, для пустой базы реплик), то ответа и не +следует. + +Если ответ должен начинаться с маленькой буквы, то первая найденная буква в ответе +заменяется на маленькую. Этого не происходит, если ответ начинается с пробела. +При этом пробел удаляется. \ No newline at end of file -- cgit v1.2.3