Распознавание сущностей | Слот Synonym
Last updated
Last updated
Слот Synonym позволяет совершать семантический поиск Сущность по таблице определенного формата с данными — Словарь — и сохранять найденную информацию в Контекстная переменная. Семантический поиск — распознавание различных словоформ синонимов, а не только полных совпадений с ними — доступен для языков, перечисленных в таблице https://coda.io/d/_d_pM7PjYCmj#_tu9qV. Для остальных языков работает поиск по полному совпадению.При выражении намерения естественным языком, Собеседник может использовать в Реплика Сущность. К примеру, в Реплика“Как добраться в Питер на поезде” присутствует Сущность “город” (Питер) и “транспорт” (поезд). В некоторых случаях требуется выделять значения Сущность и записывать их в Контекстная переменная для последующего использования в Сценарий агента. Сущность могут быть выражены разными словами-синонимами. К примеру, “Питер” можно назвать “Санкт-Петербургом”, или “северной столицей”, а “поезд” — “электричкой” или “жд”.В некоторых сценариях требуется выделять значения Сущность и записывать их в Контекстная переменная для последующего использования в Сценарий агента. Для выделения Сущность используется Слот Synonym в сочетании с функционалом Словарь.
Примеры:
Необходимо определить полное официальное название города для передачи его во внешнюю систему. Для этого создается Словарь, состоящий из ряда Сущность, каждая из которых соответствует определенному городу и содержит различные вариации его названия, например: название Сущность — “Санкт-Петербург”, содержание — синонимы “Спб, Питер, Петербург, Ленинград”. Сообщение собеседника прогоняется Слотом Synonym через данный Словарь и найденное в нем название Сущность используется далее в Сценарий агента.
Необходимо разделить Сценарий агента после определения Интента в зависимости от содержащейся в Реплика Сущность.
Интент: “Как найти < Сущность>?”.Набор Сущность: “кабинет начальника”, “гардеробная”, “переговорная”, “кафетерий”, “кабинет врача”, “кухня”, “туалет”С помощью слота Synonym производится поиск Сущность в Реплика, затем с помощью Слота Synonym производится деление Сценарий агента на несколько Ветка сценария в зависимости от Сущность.
NAME* — название Слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов.
Source* — Выражение, дающее результат — строку (Проверяемая строка), в которой будет совершаться поиск Синонимов из Словарь. Может быть указано как полноценное Выражение с операторами, так и Выражение из одной Контекстная переменная, например {{ variable }} или {{ places[0].name }}
RESULT VARIABLE* — имя Контекстная переменная, в которую запишется найденная слотом информация. Формат: строка без скобок, например var1.
VOCABULARY* — Словарь из Ресурсы Компании.
Пар RESULT VARIABLE + VOCABULARY может быть несколько. Для добавления новой пары необходимо кликнуть по кнопке Add search.
При добавлении каждой дополнительной пары RESULT VARIABLE + VOCABULARY в поле VOCABULARY в выпадающем списке отображаются те Словарь Компания, которые не использованы в других полях VOCABULARY этого Слота. Таким образом, пар RESULT VARIABLE + VOCABULARY в одном Слот Synonym может быть максимум 20 (20- максимальное количество Словарь в Компания).
В Слоте Synonym допустимо использование Выражение и Выражение с управляющей конструкцией в поле Source.
Словарь представляет собой объект Ресурсы Компании, то есть доступен из всех Агентов данной компании.О создании Словарь: Вкладка словарей — Vocabularies.
При прохождении Слота Synonym выполняются следующие операции в указанном порядке:
Удаление из Контекст Чата все Контекстная переменная указанные в поле RESULT VARIABLE данного Слота;
Вычисление Выражение, указанное в поле Source, получение Проверяемая строка.
Если Выражение не удалось вычислить и получить строку (не существует Контекстная переменная, указанной в Выражение или некорректно описано Выражение), то в Контекст Чата будет создана Контекстная переменная error со значением 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 не будет создана в Контекст Чата.