Перейти к основному содержимому

Сравнение алгоритмов

Общая информация

Принцип работыТребуется подключение к Caila
Transformer ruЛогистическая регрессия + векторы, оптимизированные для русского языкаДа. Сервис: text-classifier-logreg-caila-roberta
Transformer multiЛогистическая регрессия + мультиязычные векторы для 109 языковДа. Сервис: text-classifier-logreg-labse
Deep LearningСверточная нейронная сеть + предобученные векторы BPEmbНет
Classic MLЛогистическая регрессия + лингвистическая предобработкаНет
STSОценка степени похожести фразНет

Качество и производительность

Средняя точностьСкорость обучения моделиМожно посмотреть, почему сработал интент
Transformer ru80–90%Несколько минут, если датасет имеет больше 10 тыс. фразНет
Transformer multi80–90%Несколько минут, если датасет имеет больше 10 тыс. фразНет
Deep Learning75–85%ДолгоНет
Classic ML70–80%Быстро на датасетах до 5 тыс. фразНет
STS65–75%Очень быстроДоступно сопоставление запроса с наиболее близкой тренировочной фразой

Количество фраз и пороги

Рекомендуемый порог срабатыванияРекомендуемое количество фраз в интентеОбщее количество фразНужно одинаковое количество фраз в интентах
Transformer ru0,3–0,5

10+

Чем больше выборка, тем точнее будет классификатор
Ограничено только количеством памяти в CailaНет
Transformer multi0,3–0,5

10+

Чем больше выборка, тем точнее будет классификатор
Ограничено только количеством памяти в CailaНет
Deep Learning0,4–0,7

50+

Чем больше выборка, тем точнее будет классификатор. Посмотрите возможное решение для маленьких датасетов
Нет ограниченийНет
Classic ML0,1–0,2

20+

Чем больше выборка, тем точнее будет классификатор
Нет ограниченийМожет вести себя нестабильно, если количество примеров в интенте значительно отклоняется от среднего. Посмотрите возможное решение
STS0,2–0,6

5–7+

Алгоритм будет работать, даже если в интенте всего одна фраза
Не более 1000Нет
Рекомендации для длины фразы
  • Рекомендованная длина тренировочной фразы: 1–10 слов. Длинные фразы плохо подходят для определения интента, поскольку из них сложнее извлечь смысл.

  • При высокой нагрузке на бота сократите длину фраз в интентах и их количество или выберите алгоритм классификатора, который выдерживает такую нагрузку, например Classic ML.

Влияние количества фраз на время обучения

Команда Just AI провела внутреннее исследование, чтобы сравнить, насколько быстро разные классификаторы обучаются на датасетах разного размера.

В исследовании использовали датасеты с разным количеством интентов и тренировочных фраз. Данные были на разных языках.

  • Время обучения и количество фраз в датасете:

    Время обучения и размер датасета
  • Время обучения и среднее количество фраз в одном интенте:

    Время обучения и среднее количество фраз в интенте

Влияние длины запроса и количества фраз на скорость классификации

Скорость зависит от длины запроса клиентаСкорость зависит от количества фраз в интентах
Transformer ruНетНет
Transformer multiНетНет
Deep LearningНетНет
Classic MLНетНет
STSДаДа

Языки

ЯзыкиМультиязычностьЛеммы и стеммы
Transformer ruОптимизирован для русского языка. Поддерживает также примерно 50 языков, но хуже, чем Transformer multiДа, но для мультиязычности рекомендуем Transformer multiНе учитывает леммы и стеммы, но компенсирует это векторами
Transformer multiПоддерживает 109 языковДаНе учитывает леммы и стеммы, но компенсирует это векторами
Deep LearningВсе языки JAICPДоступна настройка "lang" = "multi"Использует подслова из BPEmb
Classic MLРусский, английский, китайский, португальскийНетСтеммы:
  • Snowball stemmer для русского, английского и португальского
  • Нет для китайского.
Леммы:
  • Mystem для русского, spaCy для португальского.
  • Нет для китайского и английского.
STSВсе языки JAICPНетУчитывает леммы

Анализ текста

СемантикаМожно указать сущности внутри тренировочных фразОпределение важных словРабота с отрицательными примерами
Transformer ruПредобученные векторы caila-robertaНетНеизвестно. Посмотрите возможное решениеХорошо справляется
Transformer multiПредобученные векторы LaBSEНетНеизвестно. Посмотрите возможное решениеОчень плохо работает с отрицательными примерами. Посмотрите возможное решение
Deep LearningПредобученные векторы BPEmbНетТеоретически может определять. Посмотрите возможное решениеПлохо справляется. Посмотрите возможное решение
Classic MLНе поддерживается. Посмотрите возможное решениеНетTF-IDF для определения важности слов на основе фраз в интентах. Нужно следить за балансом второстепенных слов в датасете. Посмотрите возможное решениеХорошо справляется
STS

Встроенный словарь синонимов только для русского языка.

Используйте расширенные настройки NLU, чтобы адаптировать алгоритм под ваш проект. Например, настройте параметр synonymMatch, чтобы отрегулировать вес совпадений по синонимам
ДаПредобученный TF-IDF для определения важности слов. Веса могут быть неактуальными для темы вашего проектаХорошо справляется

Формат текста

Учитывает регистрУчитывает знаки препинанияРазличает е и ё
Transformer ruМожно настроить с помощью toLowercaseМожно настроить c помощью doRemovePunctuationsВ тренировочных фразах, но не в запросах
Transformer multiМожно настроить с помощью toLowercaseМожно настроить c помощью doRemovePunctuationsВ тренировочных фразах, но не в запросах
Deep LearningНетДаВ тренировочных фразах, но не в запросах
Classic MLМожно настроить с помощью lowerНетВ тренировочных фразах, но не в запросах
STSНетДаДа

Поведение классификатора в сложных случаях

Multi-label классификацияВ интентах есть одинаковые фразыПохожие интенты
Transformer ruНетНе рекомендуется. Высокий вес будет только у одного интента или вес будет распределен между интентамиНе рекомендуется. Посмотрите возможное решение
Transformer multiНетНе рекомендуется. Высокий вес будет только у одного интента или вес будет распределен между интентамиНе рекомендуется. Посмотрите возможное решение
Deep LearningНетНе рекомендуется. Высокий вес будет только у одного интента или вес будет распределен между интентамиИнтенты будут с одинаковым весом, но вес таких интентов будет меньше. Посмотрите возможное решение
Classic MLНетНе рекомендуется. Оба интента получат низкий вес на этих фразахИнтенты будут с одинаковым весом, но вес таких интентов будет меньше. Посмотрите возможное решение
STSДаДопустимо, оба интента будут с одинаковым весомДопустимо, оба интента будут с одинаковым весом