Что такое сущности¶
Что такое сущности¶
Содержание инструкции:
Определение¶
Сущность (от англ. "Entity") - ключевая информация, извлеченная из текста пользователя. Представляет собой конкретную информацию, необходимую для выполнения задачи.
В некоторых случаях для понимания намерения достаточно общего смысла высказывания, но часто требуется дополнительная информация. Именно здесь на помощь приходят сущности.
Рассмотрим пример:
- Я хочу купить синюю рубашку
- Я хочу купить красную рубашку
В обоих случаях намерение пользователя — покупка рубашки. Однако, различается дополнительная информация, такая как цвет. Это и есть сущность.
Note
Имейте в виду, что сущность не привязана к намерению. Вы можете использовать одну и ту же сущность с разными намерениями.
Чтобы помощник мог распознавать сущности в тексте, его необходимо обучить. Это можно сделать, выделив сущности в тренировочных фразах. В процессе обучения модели следует четко указать, какие слова или фразы в тексте являются сущностями.
За распознавание сущностей отвечает модель NLU (Natural Language Understanding). Эта модель позволяет помощнику понимать и анализировать естественный язык пользователей.
Чтобы модель NLU могла обобщать высказывания, не вошедшие в обучающие данные, необходимо добавить разнообразные примеры. Модель должна научиться выделять сущности в предложениях, которые она никогда раньше не встречала.
Для намерений важно добавить разнообразные формулировки тренировочных фраз, а не просто повторять одно и то же предложение с незначительными изменениями. Для сущностей же необходимо научить модель извлекать информацию из разных контекстов и предложений.
Формат записи сущностей в файлах проекта¶
Сущности записываются:
-
В файле
nlu.yml
в примерах тренировочных фраз.Сущности выделяются с помощью синтаксиса
[значение](тип_сущности)
.Пример записи:
-
В файле
domain.yml
в разделеentities
.Пример записи:
-
В файлах
stories.yml
иrules.yml
.Сущности могут использоваться в историях и правилах для управления диалогами. Например, если пользователь заказывает пиццу, бот может запросить дополнительную информацию, такую как тип пиццы или количество.
Пример записи:
Параметры сущностей¶
Доступны следующие базовые параметры сущностей:
- entity - имя сущности;
- value - фактическое значение сущности;
- role - роль сущности в тексте;
- group - группа, к которой принадлежит сущность.
1. value (значение)¶
Это фактическое значение сущности, извлеченное из текста. Например, в фразе "Забронируй столик на 19:00" значение сущности time
будет 19:00
.
Пример:
Здесь:
- Сущность:
time
. - Значение:
19:00
.
2. role (роль)¶
Роль сущности указывает на её функцию в тексте. Это полезно, когда одно и то же значение может иметь разные роли в зависимости от контекста. Например, в фразе "Переведи 100 рублей с карты на счет" сущность 100 рублей
может иметь роль amount_to_transfer
.
Пример:
nlu:
- intent: transfer_money
examples: |
- Переведи [100 рублей](amount:amount_to_transfer) с карты на счет
Здесь:
- Сущность:
amount
. - Значение:
100 рублей
. - Роль:
amount_to_transfer
.
3. group (группа)¶
Группа сущности используется для объединения нескольких сущностей в одну логическую группу. Это полезно, когда в тексте встречаются несколько сущностей, которые относятся к одному объекту или событию. Например, в фразе "Забронируй столик на 19:00 на завтра" сущности 19:00
и завтра
могут быть объединены в группу booking_details
.
Пример:
nlu:
- intent: book_table
examples: |
- Забронируй столик на [19:00](time:booking_details) на [завтра](date:booking_details)
Здесь:
- Сущности:
time
иdate
. - Значения:
19:00
изавтра
. - Группа:
booking_details
.