Очень непросто оказалось ввести в
чатбот некоторую проактивность, например (B - реплики бота, H - реплики человека):
B:> Добрый день
H:> Привет, как тебя зовут?
B:> кеша
B:> А как тебя зовут?
H:> Меня зовут Илья.
B:> Рад знакомству.
Сейчас проект плавно переходит во вторую стадию - реализация reasoning engine и интерпретация реплик.
Reasoning engine - эта модель, которая реализует вывод ответов на основе фактов и правил, например:
T: Любой человек смертен.
T: Сократ человек.
Q: Смертен ли Сократ?
A: Да
В этом случае задача системы - вывести ответ "Да", хотя в явном виде факт "Сократ смертен" в базе фактов отсутствует.
Интерпретация реплик - это учет текущего контекста беседы, делающий ее естественной и привычной, диалог становится менее механичным. Простейший пример:
- Привет
- Привет, как тебя зовут?
- Илья, а тебя?
- Кеша
Тут третья реплика "- Илья, а тебя?" на самом деле должна быть проинтерпретирована как "Меня зовут Илья. А тебя как зовут?". Раскрытие
анафоры, замена
эллипсисов и некоторые прочие лингвистические заморочки - разные грани интерпретации.