Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Продуктовый офис B2O Ростелекома предлагает продукты операторам связи, которые помогают решать задачи бизнеса. Один из таких продуктов - чат-бот. Ключевая задача в развитии диалоговых систем связана с улучшением понимания намерений пользователей — увеличением точности распознавания интентов — intent recognition.
Эту задачу решают десятки движков для машинного обучения, но качество их работы меняется в зависимости от языка и размера датасета, на котором обучен алгоритм. Выбор далеко не очевиден, поэтому мы решили внести немного ясности в этот вопрос и провести исследование — сравнить семь русскоязычных SaaS-систем.
Примерно до 2010 года под каждый новый язык писали отдельный парсер со своими эвристиками. Получалось долго, трудозатратно и не очень эффективно. Но по мере развития нейросетей начали появляться векторные представления слов, разрабатываемые под каждый язык, например, word2vec и glove. Затем были созданы мультиязычные решения: теперь для добавления языка достаточно собрать большой корпус текстов.
Да, процесс обучения усложнился, но им занимаются крупные компании и университеты с мировым именем. Так, Google разрабатывает Universal Sentence Encoder — общедоступный эмбеддер, который из коробки поддерживает 16 языков, еще одно подобное решение — LASER работает более чем с 200 языками.
В то же время, есть и простые в использовании коммерческие решения. На рынке представлен целый ряд SaaS-систем для машинного обучения с поддержкой русского. В основном это облачные платформы для создания того или иного вида разговорного ИИ, предназначенные для решения прикладных задач, например, автоматизации работы контактных центров, но есть и self-hosted-решения.
Выбираем SaaS-решения и датасеты для сравнения
При сравнении мы решили ограничиться готовыми SaaS-решениями, которые можно просто взять и использовать на практике. Некоторые из них даже не требуют навыков программирования для настройки и использования:
● Autofaq.ai — омниканальная платформа для роботизации поддержки клиентов и сотрудников с помощью вопросно-ответных и диалоговых систем. На старте использует предобученную нейронную сеть, собирает данные в процессе работы и переключается на модели, использующие обучение с учителем.
● Cognigy — еще одна система для создания контактных центров на базе фирменного движка Cognigy NLU и микросервисной архитектуры. Технологии компании используются в Alexa, Slack, Skype, Google Home и некоторых других сервисах.
● Google Dialogflow — это платформа обработки естественного языка, используемая для разработки и интеграции диалогового пользовательского интерфейса в мобильные приложения, веб-приложения, устройства, боты, интерактивные системы голосового ответа и связанные системы.
● Watson Assistant — виртуальный помощник на базе технологий IBM. Помимо прочего, позволяет создавать индивидуализированных ботов-ассистентов.
● Just AI — платформа для разработки разговорных решений от одноименной российской IT-компании. Используется для создания виртуальных операторов, голосовых ассистентов, виртуальных секретарей, ботов-рекрутеров.
● Google Vertex AI — облачный сервис для создания моделей машинного обучения, который работает не только с текстами, но и с видео, изображениями.
● RASA — опенсорс-фреймворк для создания разговорного ИИ, который работает в том числе в self-hosted варианте. Построен на библиотеке TensorFlow, отвечающей за процесс и результат обучения нейросетей, и spaCy, помогающей реализовать обработку естественного языка.
В качестве метрики для оценки качества работы SaaS-систем мы выбрали точность (accuracy) — долю верно определенных интентов для примеров из тестовой выборки.
Готовимся к исследованию
Особенность процесса обучения нейросети в том, что чем больше данных, тем проще обучить классификатор. Чтобы оценить точность распознавания интентов на большой выборке мы взяли набор Chatbot-ru (5517 обучающих и 1380 тестовых примера, 79 интентов).
На этом графике хорошо видно, как растет точность классификатора с ростом размера обучающей выборки
Однако на практике даже большой датасет может оказаться слишком шумным, чтобы реализовать это преимущество. Кроме того, нередко данных не хватает. Поэтому обучение на небольшой выборке (в машинном обучении его называют few-shot learning) представляет отдельный интерес. Чтобы дополнительно проверить способности SaaS-систем к few-shot learning, мы использовали переведенную подвыборку англоязычного датасета HWU-64.
Сперва мы собирались перевести весь датасет HWU-64, но там 25716 предложений, и затраты на перевод не окупили бы усилий. Так что мы пошли на компромисс — перевели на русский 20 интентов по 10 примеров на интент (всего 200 предложений) и назвали получившийся набор HWU-20-Ru. Перед стартом эксперимента мы разбили массив данных на обучающую и тестовые выборки — в соотношении 80/20 для Chatbot-ru и 50/50 для HWU-20. Эти данные, и весь код, необходимый для воспроизведения наших экспериментов выложены на Github.
Поскольку у каждого облачного сервиса собственный формат загрузки исходных данных, пришлось переконвертировать обучающие выборки подходящую форму — csv или excel со специальной структурой и, специально для RASA, в хитро форматированный yaml.
Результаты сравнения
Топ SaaS-систем для большого датасета
В первое сравнение попали не все вышеперечисленные SaaS-системы. Дело в том, что на демонстрационные версии Just AI и Cognigy наложены жесткие ограничения: у бесплатной версии Cognigy лимит примерно в 2 000 примеров, у Just AI доступно 100 бесплатных запросов. Так что испытать их с Chatbot-ru не удалось. Впрочем, результаты все равно получились интересными.
Система | Точность, % | Время ответа, сек. | Время обучения, сек. |
Autofaq Pro Experimental | 86 | 0.494 +- 0.010 | 4581 |
Autofaq Base | 81 | 0.049 +- 0.055 | 172 |
Google Vertex AI (ex. AutoML) | 81 | 0.081 +- 0.041 | 15540 |
IBM Watson | 81 | 0.166 +- 0.060 | 20 |
RASA | 66 | 0.011 +- 0.0007 | 1980 |
Google Dialogflow | 63 | 0.267 +- 0.035 | 20 |
Результаты сравнения SaaS-систем на примере датасета Chatbot-ru
Эксперименты показали, что наибольшую точность распознавания интентов — 86% на большой выборке — обеспечивает Autofaq Pro Experimental. Правда, в его случае придется дополнительно потратиться на GPU, либо мириться с относительно медленными ответами и невысокой скоростью обучения.
Второе место с точностью в 81% делят между собой Google Vertex AI, Autofaq Base и IBM Watson, но и здесь можно выделить фаворитов. Так, IBM Watson обучается быстрее конкурентов и укладывается в 20 секунд. У Autofaq Base эта цифра немного выше — почти 3 минуты, но при этом лучше скорость ответа — 0.049 сек. против 0.166 сек. у Watson. В то же время Google Vertex, пускай и имеет высокую точность, обучается почти 4 (!) часа. Похоже, что большее время обучения вовсе не гарантирует максимального качества определения интентов.
Замыкают список RASA и Google Dialogflow с точностью в 66 и 63%, при этом RASA обучается чуть дольше полчаса, тогда как Google Dialogflow за 20 секунд.
Топ SaaS-систем для небольшого датасета
Результаты few-shot learning однозначные — в случае небольшого датасета лучше использовать решения Autofaq Base или Cognigy. Однако, стоит учитывать, что сервис Cognigy — иностранный, использовать его придется с оглядкой на возможные санкционные ограничения.
Система | Точность, % | Время ответа, сек. | Время обучения, сек. |
Autofaq Base | 85 | 0.022 +- 0.004 | 14 |
Autofaq Pro Experimental | 84 | 0.485 +- 0.002 | 80 |
Cognigy | 83 | 0.293 +- 0.042 | 19 |
RASA | 79 | 0.011 +- 0.005 | 29 |
IBM Watson | 78 | 0.172 +- 0.085 | 10 |
Just AI - Deep Learning | 73 | 0.217 +- 0.027 | 10 |
Google Dialogflow | 72 | 0.272 +- 0.056 | 15 |
Just AI - STS | 70 | 0.214 +- 0.019 | 10 |
Результаты сравнения SaaS-систем на примере датасета HWU-20-Ru. Google Vertex AI в таблицу не попал. Он требует для обучения минимум 10 примеров на класс
Интересно, что на большом датасете AutoFAQ и IBM Watson демонстрируют схожую точность, а на маленьком AutoFAQ дает заметно лучшие результаты. Можно предположить, что это связано с более высоким качеством исходного эмбеддера, ведь это преимущество раскрывается именно в работе с небольшими датасетами.
Autofaq Pro Experimental также показывает высокую точность, но время обучения получается сравнительно долгим — 1 минута 20 секунд. Пожалуй, на небольшой выборке он попросту избыточен. На втором месте группа из RASA и IBM Watson 79 и 78% соответственно. На третьем — Just AI Deeplearning, Google Dialogflow и Just AI STS.
Сверяем часы с другими исследованиями
Конечно, это не первое подобное исследование, так что наши выводы можно сверить, например, с результатами из статьи Benchmarking Language-agnostic Intent Classification for Virtual Assistant Platforms. В ней исследователи из компании IBM сравнивали свой Watson и другие модели: mBERT, XLM-R, Universal Sentence Encoder (USE-M), LABSE, Distil-mBERT и RASA.
В этом исследовании участвовало два русскоязычных датасета: уже знакомый нам Chatbot-ru и PSTU, в котором насчитывается 1082 обучающих примера, 271 тестовых и 9 интентов. Причем данные разделили на три набора так, чтобы в первом было по 5 обучающих примеров, во втором по 30, а в третьем вся выборка.
Таким образом, исследование IBM заметно отличается по методологии, но его результаты, с оговорками, сопоставимы с нашими наблюдениями. Так, RASA с Chatbot-ru продемонстрировала точность в 66,7% в то время как мы получили 66%. IBM Watson 81,5% против 81% в нашем сравнении.
Кроме того, в прошлом году на Хабре уже было опубликовано сравнение систем распознавания интентов на английском языке. Там в числе лидеров также оказалось решение от AutoFAQ.ai.
Система | Точность (HWU64-10), % | Точность (HWU64-30), % | Время ответа на 1 запрос (сек.) |
AutoFAQ.ai | 80.2 | 85.1 | 0.270+-0.035 |
Cognigy | 77.6 | 84.2 | 0.590+-0.241 |
Dialogflow | 64 | 75.6 | 0.273+-0.033 |
LUIS | 67.3 | 78.2 | 0.314+-0.053 |
Watson | 77.6 | 85.5 | 0.180+-0.036 |
Результаты экспериментов на двух наборах англоязычных данных HWU64. В первом наборе по 10 обучающих примеров на каждый из 64 интентов, во втором по 30
Возможно, такая универсальность Autofaq объясняется тем, что этот движок изначально разрабатывался под русский язык.
В заключение отметим, что распознавание интентов — это прежде всего задача классификации текстов и, как видите, современные алгоритмы неплохо справляются с ней, когда речь идет о высокоресурсных языках, таких как русский и английский.
В российском сегменте представлены достаточно хорошие SaaS-системы, однако, найти среди них максимально точное и эффективное решение для распознавания интентов не так уж просто. Надеемся на то, что полученные нами результаты пригодятся data science сообществу и помогут усовершенствовать русскоязычные сервисы.