JAICP

NLU: понимание естественного языка


NLU (Natural Language Understanding) — задача обработки естественного языка, связанная с пониманием смысла высказываний.

Это одна из ключевых функций, которой должны обладать чат-боты, чтобы правильно интерпретировать запросы и реагировать на них в соответствии с ожиданиями клиентов.

При помощи алгоритмов NLU боты решают две основные задачи: определение коммуникативного намерения (интента) говорящего и распознавание упоминаемых сущностей.

Платформа JAICP предоставляет ряд механизмов для подключения NLU к ботам:

Механизмы NLU

CAILA NLU

CAILA (Conversational AI Linguistic Assistant) — NLU-ядро для разработки на базе JAICP разговорных чат-ботов и ассистентов, понимающих естественный язык.

Паттерны

Паттерны — формальные правила, описывающие ключевые слова и выражения.

С помощью паттернов происходит отнесение реплики человека к одному из существующих в системе стейтов, чтобы затем выполнить соответствующие стейту реакции. Паттерны могут быть заданы при помощи базовых и расширенных элементов.

Паттерны также используются совместно с CAILA NLU. Используя паттерны, вы можете задать запись для справочника сущностей или тренировочную фразу для интента.

Классификатор на примерах

Классификатор на примерах — классификатор на базе предобученной функции определения семантической близости.

Классификатор позволяет задать набор классов, каждый из которых содержит одну или несколько эталонных фраз. Запросы от клиента боту проверяются на семантическое соответствие заданным фразам.

Использование классификатора на примерах устарело начиная с версии 1.10.0. Для новых проектов рекомендуется использовать CAILA.

Языки NLU

Поддерживаемые языки

При создании проекта обязательный параметр Язык NLU определяет язык, который бот сможет понимать. Для каждого из доступных языков в платформе подключены:

  • библиотека для токенизации и морфологического анализа;
  • встроенные алгоритмы распознавания интентов;
  • набор стандартных сущностей.

Для всех языков, кроме русского, английского и китайского, поддерживается только алгоритм классификатора STS.


Язык Примечания
Русский Также поддерживается исправление орфографии.
Английский
Греческий
Датский
Испанский
Итальянский
Казахский
Китайский Не поддерживаются:
• нечеткий поиск и нормализация сущностей CAILA;
• расширенные элементы паттернов ~ и $morph.
Литовский Не поддерживается распознавание времени и чисел прописью.
Немецкий
Нидерландский
Польский
Португальский
Румынский
Украинский Также поддерживается исправление орфографии.
Французский
Японский Не поддерживается распознавание времени и чисел прописью.

Другие языки

Если в вашем проекте требуется поддержка языка, который не предусмотрен в JAICP, в платформе реализована возможность подключить к проекту внешний NLU-сервис с поддержкой любого языка.

Вы можете самостоятельно разработать такой сервис или воспользоваться сторонним. Внешний NLU-сервис должен быть выполнен в соответствии со спецификацией Model API.

Подробнее о настройке внешнего NLU-сервиса

Сценарий

JAICP поддерживает совместное использование интентов CAILA NLU, паттернов и групп примеров в одном сценарии. Правила активации стейтов при помощи этих механизмов имеют разный приоритет.

Подробнее о приоритете правил активации

Кроме того, порядок активации стейтов при совместном использовании интентов, паттернов и групп примеров можно задать самостоятельно. Для этого можно использовать: