Как обучать интенты
Через интенты доступны два способа обучить бота понимать естественный язык:
-
Паттерны — формальные правила для сопоставления запросов специальным шаблонам. Н апример,
{[~ты/~вы] (~любить/нравится) * (спб/питер*/[санкт] *петербург*)}
— паттерн, совпадение по которому с высокой вероятностью означает, что бота спрашивают об отношении к Санкт-Петербургу. -
Тренировочные фразы — примеры запросов для обучения классификатора. Например, научить бота распознавать тот же интент можно на таких тренировочных фразах: тебе нравится в спб, ты любишь питер, как ты относишься к санкт-петербургу.
По сравнению с паттернами тренировочные фразы позволяют значительно уменьшить трудозатраты на обучение: не нужно вручную писать правила и пытаться учесть в них все возможные синонимы. Фразы можно добавить в классификатор из внешних файлов с логами, а также разметить фразы прямо из аналитики по диалогам уже после того, как бот был запущен.
С другой стороны, из-за меньшей прозрачности алгоритмов, не основанных на правилах, тренировочные фразы могут быть менее предсказуемы. Если вы используете их для обучения, следует учитывать особенности выбранного классификатора и придерживаться н екоторых правил при составлении обучающей выборки.
Чем различаются алгоритмы классификатора
Требования к обучающей выборке различаются в зависимости от того, какой алгоритм классифи катора выбран в настройках проекта.
STS
STS (Semantic Textual Similarity) — алгоритм, который сравнивает семантическую близость слов. Он учитывает инверсию, словарные формы слов, их синонимы и другую информацию.
Преимущества STS:
-
Хорошо проявляет себя на небольших выборках: даже если каждый интент содержит всего одну тренировочную фразу, алгоритм будет работать.
-
Позволяет использовать сущности в тренировочных фразах.
-
Не чувствителен к неравномерному распределению фраз по интентам.
-
Различает семантически близкие интенты лучше, чем Classic ML.
-
Обладает самыми гибкими и интерпретируемыми настройками. Используйте расширенные настройки NLU, чтобы адаптировать алгоритм под ваш проект. Например, настройте параметр
synonymMatch
, чтобы отрегулировать вес совпадений по синонимам.предупреждениеСлишком тонкие настройки NLU могут уменьшить качество классификации при добавлении новых тренировочных фраз. Кроме того, настройки, адаптированные под один проект, могут не подойти для другого.
Classic ML
Classic ML — стандартный алгоритм машинного обучения для распознавания интентов на основе логистической регрессии.
Преимущества Classic ML:
- Сохраняет хорошую скорость работы при высоких нагрузках на бота.
- Учитывает словарные формы (леммы) и основы слов (стемы).
Deep Learning
Deep Learning — алгоритм на основе сверточных нейронных сетей. Использует информацию о семантике слов при формировании гипотез и поэтому в отличие от Classic ML учитывает синонимы.
Преимущества Deep Learning:
- Хорошо проявляет себя на большом наборе данных.
- Различает похожие интенты лучше, чем Classic ML.
Transformer
Transformer — мультиязычный алгоритм. Он оценивает семантическое сходство запроса клиента со всеми тренировочными фразами из интента.
Преимущества Transformer:
- Хорошо проявляет себя на небольших выборках.
- Может распознавать не только языки, которые официально поддерживает JAICP.
- Выполняет классификацию на основе большой языковой модели и использует не просто слова, а информацию о смысловой связи между ними.
- Чувствителен к регистру символов и учитывает знаки препинания.