СЛОТЫ

icon picker
Распознавание сущностей | Слот Synonym

Назначение и общая информация

@Слот
Synonym позволяет совершать семантический поиск
@Сущность
по таблице определенного формата с данными —
@Словарь
— и сохранять найденную информацию в
@Контекстная переменная
. Семантический поиск — распознавание различных словоформ синонимов, а не только полных совпадений с ними — доступен для языков, перечисленных в таблице . Для остальных языков работает поиск по полному совпадению.
При выражении намерения естественным языком,
@Собеседник
может использовать в
@Реплика
@Сущность
. К примеру, в
@Реплика
“Как добраться в Питер на поезде” присутствует
@Сущность
“город” (Питер) и “транспорт” (поезд). В некоторых случаях требуется выделять значения
@Сущность
и записывать их в
@Контекстная переменная
для последующего использования в
@Сценарий
.
@Сущность
могут быть выражены разными словами-синонимами. К примеру, “Питер” можно назвать “Санкт-Петербургом”, или “северной столицей”, а “поезд” — “электричкой” или “жд”.
В некоторых сценариях требуется выделять значения
@Сущность
и записывать их в
@Контекстная переменная
для последующего использования в
@Сценарий
. Для выделения
@Сущность
используется
@Слот
Synonym в сочетании с функционалом
@Словарь
.
image.png
Примеры:
Необходимо определить полное официальное название города для передачи его во внешнюю систему. Для этого создается
@Словарь
, состоящий из ряда
@Сущность
, каждая из которых соответствует определенному городу и содержит различные вариации его названия, например: название
@Сущность
— “Санкт-Петербург”, содержание — синонимы “Спб, Питер, Петербург, Ленинград”.
@Сообщение собеседника
прогоняется
@Слот
ом
@Synonym
через данный
@Словарь
и найденное в нем название
@Сущность
используется далее в
@Сценарий
.
Необходимо разделить
@Сценарий
после определения
@Интент
а в зависимости от содержащейся в
@Реплика
@Сущность
.
@Интент
: “Как найти <
@Сущность
>?”.
Набор
@Сущность
: “кабинет начальника”, “гардеробная”, “переговорная”, “кафетерий”, “кабинет врача”, “кухня”, “туалет”
С помощью слота Synonym производится поиск
@Сущность
в
@Реплика
, затем с помощью
@Слот
а
@Transition Rule
производится деление
@Сценарий
на несколько
@Ветка сценария
в зависимости от
@Сущность
.

Создание и настройки слота

Атрибуты слота

image.png
NAME* название
@Слот
а, которое будет отображено в
@Дерево сценария
. Максимальная длина значения поля — 40 символов.
Source*
@Выражение
, дающее результат — строку (
@Проверяемая строка
), в которой будет совершаться поиск
@Синоним
ов из
@Словарь
. Может быть указано как полноценное
@Выражение
с операторами, так и
@Выражение
из одной
@Контекстная переменная
, например {{ variable }} или {{ places[0].name }}
RESULT VARIABLE* — имя
@Контекстная переменная
, в которую запишется найденная слотом информация. Формат: строка без скобок, например var1.
VOCABULARY*
@Словарь
из
@Ресурс компании
. Работает инкрементальный регистронезависимый поиск в списке.
Пар RESULT VARIABLE + VOCABULARY может быть несколько. Для добавления новой пары необходимо кликнуть по кнопке Add search.
add search.png
При добавлении каждой дополнительной пары RESULT VARIABLE + VOCABULARY в поле VOCABULARY в выпадающем списке отображаются те
@Словарь
@Компания
, которые не использованы в других полях VOCABULARY этого
@Слот
а. Таким образом, пар RESULT VARIABLE + VOCABULARY в одном
@Слот
Synonym может быть максимум 20 (20- максимальное количество
@Словарь
в
@Компания
).

Использование синтаксиса в Слоте

В
@Слот
е Synonym допустимо использование
@Выражение
и
@Выражение с управляющей конструкцией
в поле Source.

Словари

@Словарь
представляет собой объект
@Ресурс компании
, то есть доступен из всех
@Агент
ов данной компании.
О создании
@Словарь
: .

Работа слота

При прохождении
@Слот
а
@Synonym
выполняются следующие операции в указанном порядке:
Удаление из
@Контекст Чата
все
@Контекстная переменная
указанные в поле RESULT VARIABLE данного
@Слот
а;
Вычисление
@Выражение
, указанное в поле Source, получение
@Проверяемая строка
.
Если
@Выражение
не удалось вычислить и получить строку (не существует
@Контекстная переменная
, указанной в
@Выражение
или некорректно описано
@Выражение
), то в
@Контекст Чата
будет создана
@Контекстная переменная
со значением Template rendering (source of synonym extraction) error occurred.
Приведение содержимого
@Проверяемая строка
к нижнему регистру;
Разделение содержимого
@Проверяемая строка
по словам с помощью специальной модели (например, по пробелу, по запятой и тп) — получение массива слов;
Для каждой заполненной пары RESULT VARIABLE - VOCABULARY: ​Поиск каждого слова из
@Проверяемая строка
в
@Словарь
, указанном в поле VOCABULARY, и запись результата в
@Контекстная переменная
, указанную в соответствующем поле RESULT VARIABLE:
В случае, если одно или несколько слов из
@Проверяемая строка
совпадут
со словоформами
@Синоним
ов для языков, перечисленных в таблице
или с точным значением
@Синоним
а для любых языков
Важно: регистр
@Синоним
ов в
@Словарь
и
@Проверяемая строка
не влияет на результат распознавания.
Значением
@Контекстная переменная
, указанной в поле RESULT VARIABLE является массив объектов, где каждый элемент массива — объект, содержащий положительный результат распознавания слова (положительный результат = слово было найдено в
@Словарь
).
Формат результата — JSON с информацией, в примере расписан только первый элемент, массива объектов-результатов: [ {'synonym': 'найденный в переменной синоним', 'reference': 'первый синоним в строке', 'entity': 'название сущности', 'start': порядковый номер первого символа найденного в переменной синонима, 'end': порядковый номер последнего символа найденного в переменной синонима }, ... { <N-й элемент - результат поиска> }, ]
Пример: [ {'synonym': 'honda', 'reference': 'HONDA', 'entity': 'car_brand', 'start': 0, 'end': 5} ]
В массиве может быть несколько элементов, их количество равно количеству найденных при проверке в
@Словарь
совпадений, это возможно в следующих случаях (в т.ч. одновременно):
одно слово из
@Проверяемая строка
соответствует нескольким в данном
@Словарь
(найдено в нескольких строках)
Пример:
@Проверяемая строка
мне нужно два билета до Краса Результат распознавания: ​[ {'synonym': 'Краса', 'reference': 'Красноярск', 'entity': 'Красноярск', 'start': 24, 'end': 29}, {'synonym': 'Краса', 'reference': 'Краснодар', 'entity': 'Краснодар', 'start': 24, 'end': 29}] Слово Краса было найдено в 2
@Сущность
в одном
@Словарь
.
несколько слов из
@Проверяемая строка
соответствует разным
@Сущность
в данном
@Словарь
Пример:
@Проверяемая строка
хочу купить билеты из Москвы до Питера Результат распознавания: ​[ {'synonym': 'Москвы', 'reference': 'Москва', 'entity': 'Москва', 'start': 22, 'end': 28}, {'synonym': 'Питера', 'reference': 'Санкт-Петербург', 'entity': 'Санкт-Петербург', 'start': 32, 'end': 38} ] Слово Москвы было найдено в 1
@Сущность
в
@Словарь
, слово Питера было найдено в 1
@Сущность
в
@Словарь
.
несколько слов из
@Проверяемая строка
соответствует одной
@Сущность
в данном
@Словарь
. Например, во фразе один город упоминается два раза, каждое упоминание — отдельное слово, которое даст свой объект-результат в переменной RESULT VARIABLE
Пример:
@Проверяемая строка
купить билеты Москва Питер Москва[ {'synonym': 'Москва', 'reference': 'Москва', 'entity': 'Москва', 'start': 14, 'end': 20}, {'synonym': 'Питер', 'reference': 'Санкт-Петербург', 'entity': 'Санкт-Петербург', 'start': 21, 'end': 26}, {'synonym': 'Москва', 'reference': 'Москва', 'entity': 'Москва', 'start': 27, 'end': 33}] Слово Москва соответствует
@Сущность
'Москва' в
@Словарь
и присутствует в
@Проверяемая строка
дважды.
В случае, если ничего не будет найдено,
@Контекстная переменная
, указанная в поле RESULT VARIABLE не будет создана в
@Контекст Чата
.

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.