Технология KAVA
Технология KAVA разрабатывается на языке C# и использует для базового лингвистического анализа SDK Pullenti. Благодаря конвертеру Unisharping, исходный код автоматически преобразуется в исходные коды языков Java, Python и Javascript. Таким образом, разработка тем может вестись на одном из вышеперечисленных языков.
В рамках технологии KAVA чат-бот представляет собой модуль со списком поддержанных тем и хранимой историей диалога. Поступающий текст от пользователя последовательно прогоняется через этот список, пока какая-то тема не распознает текст как свой. Разумеется, при принятии решения используется история. Например, для текста "конечно" нужно учесть, какая тема была в предыдущей реплике. Пользователь может произносить реплики по разным темам. Если в одной реплике содержатся сразу несколько тем (какая завтра погода и сколько времени?), то будет ответ на ту тему, которая в списке чат-бота встретится раньше.
Технология не содержит никаких средств работы со звуком. На входе только текст, введённый он явно или полученный средствами speech-to-text. На выходе - также текст.
На текущем этапе развития нет другого способа разработать тему, кроме как её запрограммировать. Возможно, в будущем для несложных сценариев будет реализована высокоуровневая настройка декларативного типа, чтобы непрограммист мог бы задавать сценарии. Хотя для конкретных тем программист может предусмотреть внешнее конфигурирование, например, списки ключевых комбинаций.
Для связи темы с внешним миром используются так называемые коннекторы. Они реализуются в виде абстрактного класса с пустыми виртуальными функциями: class AbstractConnector { virtual Func1(...) { } ... }. В зависимости от специфики темы, у её коннектора свой набор функций, для отправки распознанных команд и для получения информации.
При внедрении чат-бота в конечную систему нужно все эти абстрактные классы переопределить на реальные: class RealConnector : AbstractConnector { override Func1(...) { ... } ... }, то есть реализовать как бы адаптеры. И при инициализации чат-бота нужно экземпляры этих адаптеров передать в экземпляры соответствующих тем (как бы воткнуть вилки в розетки), и чат-бот будет полноценно взаимодействовать в внешним миром.
Такой подход немного похож на парадигму MVC (Model-Control-View), в которой Model - это разрабатываемые темы по технологии KAVA, Control - адаптеры и View - внешние системы. Это позволяет разрабатывать как некоторое SDK интеллектуальную лингвистическую часть независимо от всей системы в целом.
А используются ли в технологии KAVA модные сейчас нейронные сети? В явном виде нет, анализ текста основан на правилах. Хотя можно через тему подключить внешний чат-бот, реализованный на основе машинного обучения. Но само обучение выходит за рамки нашей технологии.