ML: Чатбот RASA: Теория диалога


Вопрос-ответ

Элементарный акт диалога - пара "вопрос-ответ" (ответ не обязательно сразу после вопроса). Вопрос включает неполную информацию и просьбу её дополнить в рамках данного контекста. Типы вопросов:

Все типы вопросов могут быть простыми или сложными (если ... то; ... и/или ...): "Сколько цветов у шахматной доски?" (простой) Сколько и какие цвета у шахматной доски? (сложный).

В идеале, система классификации интентов должна начинать сначала проводить дихотомию (утверждение-вопрос). Если вопрос - то его тип. Если утверждение, то с каким вопросом оно связано.


Степень осмысленности ответа

Задавая вопрос, человек ожидает получить осмысленный ответ. Считается анекдотичной ситуация:

🙎 Кто написал роман "Айвенго"?  
💻 Писатель.  
Однако для чат-бота этот ответ лучше, чем ("не знаю" или "не понимаю"). В рамках семантической сети можно использовать шаблон обобщения. Если система знает ряд книг и видит, что большинство из написали писатели, то очевидно, что и "Айвенго" написал писатель.

Аналогично, если ответ не известен, но в вопросе есть знакомые сущности, можно что-то глубокомысленно о них сообщить: "Люди умеют писать, а столы, даже письменные - нет."

Ассоциативный диалог - знакомое слово в фразе человека порождает факт о нём.


Стековая структура диалога

Пример диалогового стека (dialogue stack):

💻 С вас $15. Могу ли я списать средства с вашей карты?               -| 
🙎 Остался ли на моем счету кредит от полученного возмещения?   -|
💻 Да, на вашем счету 10 долларов на счете.                      
🙎 Отлично.                                                     -|
💻 Могу я разместить заказ?                                        
🙎 Да.                                                             
💻 Готово. Завтра у тебя должны быть свои вещи.                       -|
Transformers


Техника активного слушания

"Техника активного слушания" была впервые реализована Джозефом Вейценбаумом в программе "Элиза". Идея - больше задавать вопросов, связанных с фразой человека:

🙎 У меня болит голова
💻 Почему вы говорите, что у вас болит голова?
🙎 Мой отец меня ненавидит
💻 Кто ещё из семьи вас ненавидит?
..
🙎 Все мужчины похожи.
💻 Каким образом?
🙎 Они всегда чем-то нас беспокоят.
💻 Вы можете применить конкретный пример?
🙎 Что ж, мой парень заставил меня приехать сюда.
💻 Ваш парень заставил вас приехать сюда...
..
🙎 Меня волнует погода.
💻 Как давно вас волнует погода?
🙎 С тех пор, как я рассталась с бойфрендом.
💻 Расскажите больше о Вашей семье. 
..
🙎 Кто ваш любимый композитор?
💻 А кто ваш любимый композитор?
При отсутствии вариантов для ответа, Элиза говорит «Понятно» и переводит разговор на другую тему.


Интерес к человеку

Человеку приятно, когда им интересуются. Бот на основе семантической сети, может, при помощи вопросов, пытаться отнести человека к тем или иным множествам, выявляя противоречия, интересуясь способностями, связанными с типичными элементами данного множества.

💻 А кто Вы по профессии?
🙎 Я писатель.
💻 Вау, т.е. Вы обычно пишете книги?
🙎 Да.
💻 И какие Ваши книги Вы рекомендуете прочитать?
...
🙎 Я недавно вернулся с моря.
💻 Как называется это море?
🙎 Чёрное.
💻 Да, занаю. А Вы хорошо плаваете?

Аналогично, легенда самого бота должна быть "зашита" в семантическую сеть, чтобы адекватно реагировать на вопросы об интересах и умениях.


Виды диалогов

Важным условием диалога являются мотивация и потребность в общении. Диалог может состояться, если у субъекта возникает желание знать о предмете речи. Eсли партнеры не будут сообщать друг другу новую информацию , а начнут обмениваться общеизвестными истинами, то диалог не состоится. [ref]

Ситуативные диалоги для развития навыков общения в различных ситуациях речи (игра лиц в предложенной ситуации, своеобразная инсценировка): «Продавец и покупатель», «Врач и пациент», «Пассажир и водитель», «Клиент и официант» и «Посетитель и экскурсовод» и т. п. [ref]

Реплика – это наименьшее речевое единство, в диалоге:

Возможные типы реплик: вопрос, ответ, утверждение, отрицание, сообщение информации, подтверждение получения информации, согласие или несогласие с ней, уточнение информации или контрсообщение информации.

Для диалога типичны реплики вопрос-ответ. В простейшем случае они могут быть двухчленными:

👩 Как вы себя чувствуете?
🧑 Спасибо, неплохо.

👩 Как поживает ваша мама, здорова?
🧑 Спасибо, всё в порядке.
трёхчленными:
👩 Ты что это? Читаешь?
🧑 Ещё не поздно!
👩 Давно пора спать.

👩 Чем занимаешься?
🧑 Читаю.
👩 Пойдём лучше в кино.
и многочленными:
👩 Ваш род занятий?
🧑 Я работаю учителем русского языка.
👩 А по специальности вы кто?
🧑 Филолог.

Реплики-вопросы:

Что нового? 
Какие новости у тебя? 
Что хорошего? 
Где вы были? 
Чем занимались сегодня? 
Что вы думаете об этом? 
Что вы предлагаете? 
Чем вы занимаетесь?
Ты доволен?
У вас есть жалобы?
Вас это удивляет?


Современные чатботы

Meena от Google

Имеет 2,6 миллиардов параметров и была обучена на 341 гб текста из социальных сетей. Использует один блок энкодера и 13 декодеров Evolved Transformer.

Система Sensibleness and Specificity Average — это метрика, с помощью тестировщик дает оценку, насколько разговор разумен и естественен, а также определяет, насколько конкретный ответ дала Meena. Значение человека в такой метрике равно 86%, показатель Meena — 79%. Другие боты, например, такие как Mitsuku и Cleverbot, набирают всего 56%.

Xiaoice от Microsoft

Во время переписки чат-бот динамически подстраивается под собеседника, запоминая его личностные данные и особенности поведения. С помощью генератора ответов на базе рекуррентной нейронной сети создается фраза, которая затем проверяется на релевантность как наиболее подходящий ответ. Фразы берутся из пар «вопрос — ответ» датасетов разговоров людей в социальных сетях (30 миллионов пар и в 70% случаев Xiaoice выбирает ответ из них). Также есть вопросы о каких-либо вещах. В этом случае ответ выбирается примерно как выдача в поисковике.

A.L.I.C.E

Ричард Уоллес, вдохновлёный простотой Элизы, создал язык разметки для искусственного интеллекта АIML. С его помощью было заполнено около 40000 ответов для бота A.L.I.C.E (Artificial Linguistic Internet Computer Entity). В 2002 году Уоллес совместно с Franz, Inc. создал ресурс Pandorabots для разработки и поддержки чат-ботов, виртуальных ассистентов.

Источники информации