Сравнение алгоритмов
Общая информация
Принцип работы | Требуется подключение к Caila | |
---|---|---|
Transformer ru | Логистическая регрессия + векторы, оптимизированные для русского языка | Да. Сервис: text-classifier-logreg-caila-roberta |
Transformer multi | Логистическая регрессия + мультиязычные векторы для 109 языков | Да. Сервис: text-classifier-logreg-labse |
Deep Learning | Сверточная нейронная сеть + предобученные векторы BPEmb | Нет |
Classic ML | Логистическая регрессия + лингвистическая предобработка | Нет |
STS | Оценка степени похожести фраз | Нет |
Качество и производительность
Средняя точность | Скорость обучения модели | Можно посмотреть, почему сработал интент | |
---|---|---|---|
Transformer ru | 80–90% | Несколько минут, если датасет имеет больше 10 тыс. фраз | Нет |
Transformer multi | 80–90% | Несколько минут, если датасет имеет больше 10 тыс. фраз | Нет |
Deep Learning | 75–85% | Долго | Нет |
Classic ML | 70–80% | Быстро на датасетах до 5 тыс. фраз | Нет |
STS | 65–75% | Очень быстро | Доступно сопоставление запроса с наиболее близкой тренировочной фразой |
Количество фраз и пороги
Рекомендуемый порог срабатывания | Рекомендуемое количество фраз в интенте | Общее количество фраз | Нужно одинаковое количество фраз в интентах | |
---|---|---|---|---|
Transformer ru | 0,3–0,5 | 10+ Чем больше выборка, тем точнее будет классификатор | Ограничено только количеством памяти в Caila | Нет |
Transformer multi | 0,3–0,5 | 10+ Чем больше выборка, тем точнее будет классификатор | Ограничено только количеством памяти в Caila | Нет |
Deep Learning | 0,4–0,7 | 50+ Чем больше выборка, тем точнее будет классификатор. Посмотрите возможное решение для маленьких датасетов | Нет ограничений | Нет |
Classic ML | 0,1–0,2 | 20+ Чем больше выборка, тем точнее будет классификатор | Нет ограничений | Может вести себя нестабильно, если количество примеров в интенте значительно отклоняется от среднего. Посмотрите возможное решение |
STS | 0,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 | Русский, английский, китайский, португальский | Нет | Стеммы:
|
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 | Да | Допустимо, оба интента будут с одинаковым весом | Допустимо, оба интента будут с одинаковым весом |