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

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

Слот Synonym позволяет совершать семантический поиск Сущность по таблице определенного формата с данными — Словарь — и сохранять найденную информацию в Контекстная переменная. Семантический поиск — распознавание различных словоформ синонимов, а не только полных совпадений с ними — доступен для языков, перечисленных в таблице https://coda.io/d/_d_pM7PjYCmj#_tu9qV. Для остальных языков работает поиск по полному совпадению.При выражении намерения естественным языком, Собеседник может использовать в Реплика Сущность. К примеру, в Реплика“Как добраться в Питер на поезде” присутствует Сущность “город” (Питер) и “транспорт” (поезд). В некоторых случаях требуется выделять значения Сущность и записывать их в Контекстная переменная для последующего использования в Сценарий агента. Сущность могут быть выражены разными словами-синонимами. К примеру, “Питер” можно назвать “Санкт-Петербургом”, или “северной столицей”, а “поезд” — “электричкой” или “жд”.В некоторых сценариях требуется выделять значения Сущность и записывать их в Контекстная переменная для последующего использования в Сценарий агента. Для выделения Сущность используется Слот Synonym в сочетании с функционалом Словарь.

Примеры:

  1. Необходимо определить полное официальное название города для передачи его во внешнюю систему. Для этого создается Словарь, состоящий из ряда Сущность, каждая из которых соответствует определенному городу и содержит различные вариации его названия, например: название Сущность — “Санкт-Петербург”, содержание — синонимы “Спб, Питер, Петербург, Ленинград”. Сообщение собеседника прогоняется Слотом Synonym через данный Словарь и найденное в нем название Сущность используется далее в Сценарий агента.

  2. Необходимо разделить Сценарий агента после определения Интента в зависимости от содержащейся в Реплика Сущность.

  3. Интент: “Как найти < Сущность>?”.Набор Сущность: “кабинет начальника”, “гардеробная”, “переговорная”, “кафетерий”, “кабинет врача”, “кухня”, “туалет”С помощью слота Synonym производится поиск Сущность в Реплика, затем с помощью Слота Synonym производится деление Сценарий агента на несколько Ветка сценария в зависимости от Сущность.

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

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

  1. NAME* — название Слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов.

  2. Source* — Выражение, дающее результат — строку (Проверяемая строка), в которой будет совершаться поиск Синонимов из Словарь. Может быть указано как полноценное Выражение с операторами, так и Выражение из одной Контекстная переменная, например {{ variable }} или {{ places[0].name }}

  3. RESULT VARIABLE* — имя Контекстная переменная, в которую запишется найденная слотом информация. Формат: строка без скобок, например var1.

  4. VOCABULARY* — Словарь из Ресурсы Компании.

  5. Пар RESULT VARIABLE + VOCABULARY может быть несколько. Для добавления новой пары необходимо кликнуть по кнопке Add search.

При добавлении каждой дополнительной пары RESULT VARIABLE + VOCABULARY в поле VOCABULARY в выпадающем списке отображаются те Словарь Компания, которые не использованы в других полях VOCABULARY этого Слота. Таким образом, пар RESULT VARIABLE + VOCABULARY в одном Слот Synonym может быть максимум 20 (20- максимальное количество Словарь в Компания).

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

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

Словари

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

Работа слота

При прохождении Слота Synonym выполняются следующие операции в указанном порядке:

  1. Удаление из Контекст Чата все Контекстная переменная указанные в поле RESULT VARIABLE данного Слота;

  2. Вычисление Выражение, указанное в поле Source, получение Проверяемая строка.

  3. Если Выражение не удалось вычислить и получить строку (не существует Контекстная переменная, указанной в Выражение или некорректно описано Выражение), то в Контекст Чата будет создана Контекстная переменная error со значением Template rendering (source of synonym extraction) error occurred.

  4. Приведение содержимого Проверяемая строка к нижнему регистру;

  5. Разделение содержимого Проверяемая строка по словам с помощью специальной модели (например, по пробелу, по запятой и тп) — получение массива слов;

  6. Для каждой заполненной пары RESULT VARIABLE - VOCABULARY: Поиск каждого слова из Проверяемая строка в Словарь , указанном в поле VOCABULARY, и запись результата в Контекстная переменная, указанную в соответствующем поле RESULT VARIABLE:

    1. В случае, если одно или несколько слов из Проверяемая строка совпадут

      1. со словоформами Синонимов для языков, перечисленных в таблице Доступные для распознавания языки словарей

      2. или с точным значением Синонима для любых языков

      3. Важно: регистр Синонимов в Словарь и Проверяемая строка не влияет на результат распознавания.

      4. Значением Контекстная переменная, указанной в поле RESULT VARIABLE является массив объектов, где каждый элемент массива — объект, содержащий положительный результат распознавания слова (положительный результат = слово было найдено в Словарь).

        1. Формат результата — JSON с информацией, в примере расписан только первый элемент, массива объектов-результатов: [ {'synonym': 'найденный в переменной синоним', 'reference': 'первый синоним в строке', 'entity': 'название сущности', 'start': порядковый номер первого символа найденного в переменной синонима, 'end': порядковый номер последнего символа найденного в переменной синонима }, ... { <N-й элемент - результат поиска> }, ]

        2. Пример: [ {'synonym': 'honda', 'reference': 'HONDA', 'entity': 'car_brand', 'start': 0, 'end': 5} ]

      5. В массиве может быть несколько элементов, их количество равно количеству найденных при проверке в Словарь совпадений, это возможно в следующих случаях (в т.ч. одновременно):

        1. одно слово из Проверяемая строка соответствует нескольким в данном Словарь (найдено в нескольких строках)

        2. Пример: Проверяемая строка — мне нужно два билета до Краса Результат распознавания: [ {'synonym': 'Краса', 'reference': 'Красноярск', 'entity': 'Красноярск', 'start': 24, 'end': 29}, {'synonym': 'Краса', 'reference': 'Краснодар', 'entity': 'Краснодар', 'start': 24, 'end': 29}] Слово Краса было найдено в 2 Сущность в одном Словарь.

        3. несколько слов из Проверяемая строка соответствует разным Сущность в данном Словарь

        4. Пример: Проверяемая строка — хочу купить билеты из Москвы до Питера Результат распознавания: [ {'synonym': 'Москвы', 'reference': 'Москва', 'entity': 'Москва', 'start': 22, 'end': 28}, {'synonym': 'Питера', 'reference': 'Санкт-Петербург', 'entity': 'Санкт-Петербург', 'start': 32, 'end': 38} ] Слово Москвы было найдено в 1 Сущность в Словарь, слово Питера было найдено в 1 Сущность в Словарь.

        5. несколько слов из Проверяемая строка соответствует одной Сущность в данном Словарь. Например, во фразе один город упоминается два раза, каждое упоминание — отдельное слово, которое даст свой объект-результат в переменной RESULT VARIABLE

        6. Пример: Проверяемая строка — купить билеты Москва Питер Москва [ {'synonym': 'Москва', 'reference': 'Москва', 'entity': 'Москва', 'start': 14, 'end': 20}, {'synonym': 'Питер', 'reference': 'Санкт-Петербург', 'entity': 'Санкт-Петербург', 'start': 21, 'end': 26}, {'synonym': 'Москва', 'reference': 'Москва', 'entity': 'Москва', 'start': 27, 'end': 33}] Слово Москва соответствует Сущность 'Москва' в Словарь и присутствует в Проверяемая строка дважды.

    2. В случае, если ничего не будет найдено, Контекстная переменная, указанная в поле RESULT VARIABLE не будет создана в Контекст Чата.

Last updated