NLU (с англ. Natural-language understanding, понимания естественного языка) — это инструмент, который мы обучаем и используем для анализа фраз от людей, их реакций на те или иные события, их поведения, целей и намерений. Он используется в чат-ботах, в голосовых ботах и в голосовых интерфейсах.
Вся работа с NLU ведется в разделе личного кабинета Агенты NLU.
При использовании NLU-агента, робот определяет, насколько ответ клиента в диалоге соответствует фразам, ассоциированным с определенным намерением. Если ответ клиента соответствует определенному намерению (и)или сущности, робот переходит к одному блоку сценария. В противном случае робот переходит к другому блоку сценария.
Процесс понимания языка включает следующие этапы:
Предварительная обработка слов с учетом контекста и состава слова:
Определение намерения. Это соотнесение полученного текста с уже имеющимся в каком-либо из заданных намерений. Например, намерение «согласие», которое клиенты могут выразить в диалоге, используя различные фразы. Например, «да», «конечно», «обязательно» и другие.
Извлечение системных сущностей. Извлекаются стандартные параметры из текста, такие как дата, время, место, адрес, ФИО, денежные суммы, расстояния, продолжительность, номера телефонов, количество, температура, объем, URL и другие.
Извлечение пользовательских сущностей. Извлекаются параметры текста, которые специфичны для конкретного сценария использования. Например, вес и размеры посылки, названия товаров или услуг, виды транспорта, виды деятельности и другие параметры. Пользовательские сущности определяются и описываются пользователем в каждом обучающем примере.
Результатом работы NLU является классифицированное намерение и набор сущностей, которые удалось извлечь. Далее эти значения отправляются в «ядро» бота, где уже на их основании и с помощью конкретного сценария выбирается ответная реакция бота.
NLU всегда, вне зависимости от присланного текста и каких-либо параметров, пытается соотнести его с каждым намерением, которое он знает. В ответе выводятся список из всех намерений и вероятность принадлежности присланного текста к каждому намерению (чем выше вероятность – тем лучше).
Если вероятность по какому-либо намерению не превышает заданный порог доверия, фраза считается нераспознанной. Например, если порог доверия — 75 %, а вероятность — 74 %, фраза не распознается.
NLU анализирует каждую фразу отдельно и не учитывает предыдущий контекст диалога. Это означает, что даже если предыдущая реплика пользователя намекала на одно намерение, новая фраза может быть классифицирована иначе.
Основную часть функционала NLU составляют искусственные нейронные сети, поэтому NLU работает по тем же принципам, что и используемые в нем нейронные сети.
Для понимания работы нейронных сетей можно применить аналогию с обучением ребенка. Изначально нейронная сеть, как и ребенок, не знает, что от нее хотят. И мы с помощью обучающих примеров должны научить нейронную сеть делать то, что нам нужно, как маленького ребенка мы учим понимать алфавит, простые распространенные фразы, читать, строить предложения, говорить и т.д.
Таким образом, от качества и количества обучающих примеров полностью зависит то, как хорошо NLU будет понимать и уметь делать то, что от нее хотят.
NLU использует вероятностные модели для определения наиболее подходящего намерения. Каждой фразе присваивается вероятность соответствия каждому из известных намерений. Если вероятность какого-либо намерения превышает установленный порог, фраза классифицируется в его пользу.
Если вероятность распределена равномерно между несколькими намерениями, возможны ошибки в классификации. В таких случаях система может либо выбрать наиболее вероятное намерение, либо запросить у пользователя дополнительную информацию.
Для получения качественной модели NLU необходимо:
При обучении агента часть фраз берется для обучения, а часть — для проверки. В зависимости от модели одна и та же фраза может быть интерпретирована по-разному: