Выделение сущностей

Сущности (Entities)

Основными моделями понимания естественного языка являются модели извлечения слотов (сущностей) и распознавание намерений пользователя. Для этого создаются обучающие выборки с примерами, размеченными классами намерения и выделенными сущностями. Для обучения модели также необходимо создавать конфигурационный файл с выбором и параметрами модели.

Если намерение несет в себе общий смысл высказывания пользователя, иногда вам нужна дополнительная информация. Рассмотрим следующие высказывания:

  • Я хочу купить синюю рубашку
  • Я хочу купить красную короткую

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

Цвет — это дополнительная информация для извлечения, и это идеальный кандидат для сущности.

Сущности — это элементы, которые вы хотите извлечь из высказывания пользователя. Например, даты, места, время, описания, имена, предметы или цифры.

Фильтрация нежелательных сущностей

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

В приведенном ниже примере:

  • Если намерение распознается, полезная нагрузка будет только удерживать сущности и избавляться от любых других. buy_shirt color size

Если намерение распознано, любая извлеченная сущность будет проигнорирована и удалена из полезной нагрузки. chitchat.greet ​​​

Обработка сущностей через интерфейс Wisebot

Чтобы добавить сущность:

  1. Перейдите на сайт wisebot.digtlab.ru и в меню слева убедитесь, что делаете настройки для нужного бота. Должно отображаться его имя (выбираем Bot1).

Картинка

  1. В разделе NLU перейдите в поле – «Пользователь говорит…».

Картинка

  1. Введите тренировочную фразу, например, девочка.

Картинка

  1. Нажмите на кнопку ENTER, чтобы добавить или отредактировать пример. Слово девочка добавилась в намерения.

Картинка

  1. Присвоенное намерение не подходит, для изменения нажимаем на «nlu_fallback.». Появится поле «Фильтровать или создать».

Картинка

  1. Пишем новое намерение «гендер». Нажимаем «Создать новое намерение».

Картинка

  1. Слово девочка перешло в намерение «гендер». Нажимаем “сохранить” (save).

Картинка

  1. Выделяем слово девочка в тренировочной фразе и добавляем сущность. Вводим gender, далее нажимаем Enter.

Картинка

  1. Видим успешное изменение сущности.

Картинка

Можем наблюдать успешное добавление в общий список сущностей.

Картинка

Для выделения сущности из предложения необходимо выделить требуемое слово и добавить сущность (entity), как показано выше.

Картинка

Параметры сущностей

При описании сущности можно использовать расширенный синтаксис в фигурных (а не круглых) скобках:

Картинка

где доступны следующие свойства:

Картинка

Свойство value удобно использовать для отождествления одинаковых значений сущности, написанный различным образом. Если требуется только свойство value, можно по-прежнему использовать круглые скобки в формате [текст](ENTITY_NAME:value) (пробелов внутри круглых скобок быть не должно). Например:

Картинка

В результате, в фразе "Хочу две пиццы" будет выделена сущность NUMBER с value=2, которую дальше можно использовать по значению, забыв про словоформу "две". Желательно подобные фразы с разметкой добавить также в соответствующее намерение:

Картинка

RASA будет учиться извлекать сущность NUMBER на обоих намерениях. При наличии опечаток или неучтённых словоформ, извлечённая (правильно) сущность может и не иметь свойства value.

Свойство "role" позволяет уточнять роль, которую сущность играет в тексте. Например, пусть есть намерение со следующим примером (должно быть в одну строчку):

Картинка

Тогда в аналогичной фразе NLU RASA вернёт две сущности с именем CITY. Первую value=Днепра с пометкой role=from, а вторую value=Париж - с пометкой role=to.

Свойство group позволяет указывать номер группы цепочки сущностей (также должно быть в одну строчку):

Картинка

При использовании ролей и групп, их необходимо описывать при объявлении сущности:

Картинка