Распознавание сущностей | Слот Synonym
Назначение и общая информация
Слот Synonym позволяет совершать поиск по таблице с данными — Словарю — и сохранять найденную информацию в контекстную переменную.
При выражении намерения естественным языком Собеседник может использовать в Реплике различные Сущности. К примеру, в реплике “Как добраться в Питер на поезде” присутствует Сущность “город” (Питер) и “транспорт” (поезд). Сущности могут быть выражены разными словами-синонимами. К примеру, “Питер” можно назвать “Санкт-Петербургом”, или “северной столицей”, а “поезд” — “электричкой” или “жд”. В некоторых сценариях требуется выделять значения Сущностей и записывать их в Контекстные переменные чата для последующего использования в Сценарии. Для выделения Сущностей используется Слот Synonym в сочетании с функционалом Словарей.
Примеры:
Необходимо определить полное официальное название города для передачи его во внешнюю систему. Для этого производится поиск в Реплике названия города и далее в Сценарии используется название соответствующей ему Сущности.
Необходимо разделить Сценарий после определения Интента в зависимости от содержащейся в Реплике Сущности. Интент: “Как найти <Сущность>?”. Набор Сущностей: “кабинет начальника”, “гардеробная”, “переговорная”, “кафетерий”, “кабинет врача”, “кухня”, “туалет”. С помощью слота Synonym производится поиск Сущности в Реплике, затем с помощью Слота Transition Rule производится деление Сценария на несколько Веток в зависимости от Сущности.
Важно: функционал работает только в Агентах с новой версией синтаксиса (подробнее: Новый синтаксис)
Создание и настройки слота
Атрибуты слота
Name — название Слота, которое будет отображено в Дереве сценария. Максимальная длина значения поля — 40 символов.
При сохранении Слота проверяется значение в поле:
Source — Проверяемая строка, в которой слот будет совершать поиск Синонимов из Словаря. Может быть выражена Контекстной переменной, указанной с помощью синтаксиса
{{ variable }}
, Выражением или Управляющей конструкцией.При сохранении Слота проверяется значение в поле:
RESULT VARIABLE — имя Пользовательской контекстной переменной, в которую запишется найденная слотом информация. При прохождении слота система удалит Контекстную переменную с указанным названием, затем, если поиск по Словарю даст результат, Контекстная переменная будет создана заново. В противном случае данной Контекстной переменной не будет в Контексте Чата.
При сохранении Слота проверяется значение в поле:
VOCABULARY — Словарь из Ресурсов компании.
При сохранении Слота проверяется значение в поле:
При добавлении каждой дополнительной пары RESULT VARIABLE + VOCABULARY в поле VOCABULARY в выпадающем списке отображаются те Словари Компании, которые не использованы в других полях VOCABULARY этого Слота. Таким образом, пар RESULT VARIABLE + VOCABULARY в одном Слоте Synonym может быть максимум 20 (это максимальное количество Словарей в Компании).
Использование синтаксиса в Слоте
В Слоте Synonym допустимо использование Выражений и Управляющих конструкций в поле Source. Подробнее: Синтаксис
Словари
О том, как создать и загрузить Словарь, читайте в статье Вкладка словарей — Vocabularies
Работа слота
Слот принимает Проверяемую строку, указанную в поле Source;
Приводит содержимое Проверяемой строки к нижнему регистру;
Разбивает содержимое Проверяемой строки по словам;
Удаляет из Контекста Чата все Контекстные переменные, указанные в поле RESULT VARIABLE данного Слота;
Совершает поиск каждого слова из Проверяемой строки в Словаре, указанном в поле VOCABULARY;
В случае, если одно или несколько слов из Проверяемой строки совпадет/ут с Синонимом/ами из Словарz, в Контекстt Чата будет создана соответствующая Контекстная переменная, указанная в поле RESULT VARIABLE, в которую будет записан результат поиска:
Формат результата — JSON с информацией:
[{'synonym': 'найденный в переменной синоним', 'reference': 'первый синоним в строке', 'entity': 'название сущности', 'start': порядковый номер первого символа найденного в переменной синонима, 'end': порядковый номер последнего символа найденного в переменной синонима}]
В случае, если в Словаре найдено несколько совпадений (при наличии одинакового Синонима в разных Сущностях либо при наличии нескольких одинаковых Синонимов в одной Проверяемой строке), JSON-ов может быть несколько, пример:
[{'synonym': 'honda', 'reference': 'HONDA', 'entity': '42639f67-b170-11ea-b78c-0050568041d3', 'start': 0, 'end': 5}, {'synonym': 'honda', 'reference': 'HONDA', 'entity': '42639f67-b170-11ea-b78c-0050568041d3', 'start': 6, 'end': 11}]
Если в Слоте несколько пар RESULT VARIABLE - VOCABULARY, Слот проходит по каждой по порядку, повторяя описанное в пунктах 4-5.
Важно: регистр Синонимов в Словаре и Проверяемой строки не влияет на результат распознавания.
Last updated