summaryrefslogtreecommitdiff
path: root/plugins/Boltun/docs/mind.txt
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Boltun/docs/mind.txt')
-rw-r--r--plugins/Boltun/docs/mind.txt142
1 files changed, 142 insertions, 0 deletions
diff --git a/plugins/Boltun/docs/mind.txt b/plugins/Boltun/docs/mind.txt
new file mode 100644
index 0000000000..01dcd6e5ba
--- /dev/null
+++ b/plugins/Boltun/docs/mind.txt
@@ -0,0 +1,142 @@
+В этом файле описан формат файла базы реплик и принцип работы Болтуна.
+
+==============================================================
+Формат файла.
+Файл базы реплик имеет кодировку UNICODE и состоит из пар строк.
+Такие пары строк являются допустимыми:
+
+1) Фразы обучения:
+
+"Фраза"
+"Ответ"
+
+2) Ответы по ключевым словам:
+
+ ("список ключевых слов")
+"Ответ"
+
+При этом список ключевых слов состоит из слов, ОБЯЗАТЕЛЬНО должен заканчиваться символом
+типа предложения ('?' - вопросительное, '.' - любое другое). Если список предваряется
+символом '~', то это является разрешением нечеткого совпадения.
+
+3) Ответы по специальным словам:
+
+ {"список специальных слов"}
+"Ответ"
+
+4) Часто используемые фразы:
+
+ ["Фраза"]
+"Ответ"
+
+5) Слова-признаки вопросительного предложения:
+
+ <QUESTION>
+"слово"
+
+6) Специальные слова:
+
+ <IGNORED>
+"Специальное слово"
+
+7) Общие ответы:
+
+ <ESCAPE>
+"Общий ответ"
+
+8) Начальные фразы (Для начала разговора):
+
+ <INITIAL>
+"Начальная фраза"
+
+9) Общие ответы (то же, что и 7):
+
+ <FAILURE>
+"Общий ответ"
+
+10) Алиасы
+
+@"привет"
+"превед прю прифф"
+
+11) Ответы на повторы
+
+<REPEAT>
+"Я уже сказал."
+
+==============================================================
+
+Припцип работы движка бота:
+
+Во время работы движку передается реплика клиента, а движок на основе реплики формирует ответ.
+Нахождение ответа имеет такие фазы:
+
+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