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

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

Слот Synonym позволяет совершать поиск по таблице с данными — Словарю — и сохранять найденную информацию в контекстную переменную.

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

Примеры:

  1. Необходимо определить полное официальное название города для передачи его во внешнюю систему. Для этого производится поиск в Реплике названия города и далее в Сценарии используется название соответствующей ему Сущности.

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

Важно: функционал работает только в Агентах с новой версией синтаксиса (подробнее: Новый синтаксис)

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

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

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

    1. При сохранении Слота проверяется значение в поле:

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

    1. При сохранении Слота проверяется значение в поле:

  3. RESULT VARIABLE — имя Пользовательской контекстной переменной, в которую запишется найденная слотом информация. При прохождении слота система удалит Контекстную переменную с указанным названием, затем, если поиск по Словарю даст результат, Контекстная переменная будет создана заново. В противном случае данной Контекстной переменной не будет в Контексте Чата.

    1. При сохранении Слота проверяется значение в поле:

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

    1. При сохранении Слота проверяется значение в поле:

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

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

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

Словари

О том, как создать и загрузить Словарь, читайте в статье Вкладка словарей — Vocabularies

Работа слота

  1. Слот принимает Проверяемую строку, указанную в поле Source;

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

  3. Разбивает содержимое Проверяемой строки по словам;

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

  5. Совершает поиск каждого слова из Проверяемой строки в Словаре, указанном в поле VOCABULARY;

  6. В случае, если одно или несколько слов из Проверяемой строки совпадет/ут с Синонимом/ами из Словарz, в Контекстt Чата будет создана соответствующая Контекстная переменная, указанная в поле RESULT VARIABLE, в которую будет записан результат поиска:

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

    2. В случае, если в Словаре найдено несколько совпадений (при наличии одинакового Синонима в разных Сущностях либо при наличии нескольких одинаковых Синонимов в одной Проверяемой строке), 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}]

  7. Если в Слоте несколько пар RESULT VARIABLE - VOCABULARY, Слот проходит по каждой по порядку, повторяя описанное в пунктах 4-5.

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

Last updated