Перейти к содержанию

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

Понятие Сущности (Entities)#

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

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

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

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

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

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

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

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

- name: "rasa_addons.components.entities_filter.EntitiesFilter"
   entities:
      buy_shirt: ["color", "size"]
      chitchat.greet: []

Пример:

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

Обучаемые сущности#

Обычно необходимо обучить помощника, как и где находить сущности в высказываниях. Это можно сделать, пометив сущности в пользовательских высказываниях предоставленных в качестве примеров.

Для повышения точности помощника добавьте несколько примеров высказываний с этими сущностями, обеспечивая разнообразие для обобщения.

Цели:

  • Привести примеры с достаточным разнообразием для обобщения.
  • Использовать различные слова для намерений.
  • Научить помощника извлекать сущности в разных предложениях.

Замечание: Сущность не привязана к намерению и может использоваться в разных намерениях.

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

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

Шаг 1: Перейдите в интерфейс Wisebot и выберите нужного бота в меню слева (например, Bot1).

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

Шаг 2

Шаг 3: Введите тренировочную фразу, например, “Я хочу купить синюю рубашку”.

Шаг 4: Нажмите ENTER, чтобы добавить или отредактировать пример.

Шаг 4

Шаг 5: Если намерение распознано неправильно, нажмите на «никакого намерения» и выберите «Фильтровать или создать».

Шаг 5

Шаг 6: Введите новое намерение «Купить» и нажмите «Создать новое намерение».

Шаг 6

Шаг 7: Фраза перешла в намерение "Купить".

Шаг 7

Шаг 8: Выделите слово "синий" в тренировочной фразе, введите название сущности color (на английском) и нажмите ENTER.

Шаг 8

Шаг 9: Сущность успешно создана.

Шаг 9

Пример списка сущностей:

Список сущностей

Для выделения сущности необходимо выделить слово и добавить сущность:

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

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

Расширенный синтаксис:

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

Свойства:

  • value: Отождествляет одинаковые значения сущности.

Пример:

[две пиццы](NUMBER:2)
  • role: Уточняет роль сущности в тексте.

Пример:

[Днепр](CITY:from) → [Париж](CITY:to)
  • group: Указывает номер группы цепочки сущностей. Пример:
    [example](ENTITY_NAME:group=1)
    

Синонимы сущностей

Используйте синонимы для сокращений и аббревиатур.

Синонимы сущностей