Вступление
Многие разработчики задумывались над тем, чтобы создать программу, которая будет вести переписку, как живой человек. Пока что никому это сделать не удалось. Самые продвинутые боты в службах поддержки банков даже близко не похоже на человека. А ведь разработкой таких чат-ботов занимаются целые отделы разработки.
В этом посте записаны мысли, как создать эвристический алгоритм, который будет отвечать на вопросы пользователей.
Понять человека
Самый простой и быстрый способ — создать массив пар вопрос-ответ. Например:
- Привет — Привет
- Как дела? — Нормально
- Что делаешь? — Работаю
- Пивет
- Как дила?
- Чо девлаишь?
Контекст
Ответ на вопрос "Ты где?" зависит от местоположения человека, от его занятия и т.д. Например:
- Я дома
- Я гуляю
- Я на даче
- Сплю я, в кровати
Соответственно, ответ на вопрос зависит от места в интернете (чата, сайта, группы), где вопрос задан. Ответ на вопрос зависит от того, кто, где и когда его задает.
Обычный запрос
Обычно пользователи пишут что-то такое:
«Доброе утро! У меня есть дочка, ей 8 месяцев. Поэтому я хотела бы создать чат или сообщество украинских мам в Норвегии для того, чтобы была возможность делиться полезной информацией. Например, о прикорме, ведь здесь отличается некоторая еда; о покупке одежды и игрушек, где есть скидки или выгодно купить, о лечении и лекарствах. Короче о всех насущных вопросах, которые интересуют мам. Будет интересен такой чат или сообщество вам?»
Или такое:
«У меня два вопроса: первый- можно ли как-то на сайте или в приложении изменить язык на английский? Второй- как в теленор проверить кол-во оставшихся Gb и минут?»
В одном сообщении могут быть два разных вопроса, которые совсем не относятся друг к другу. Часто даже человек не способен понять, что написал другой человек.
Постановка задачи
Программа располагает данными типа вопрос-ответ. Необходимо по входящему сообщению от пользователя определить, есть ли ответ и какой он.