This site is no longer updated.Go to new Conversational Cloud docs

Именованные сущности


Именованная сущность — слово или словосочетание, выделяющее определенный предмет или явление из ряда однотипных предметов или явлений. Например, это названия городов, стран, валют.

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

Именованные сущности можно указывать в правилах NLU, как и любые другие именованные паттерны, и таким образом распознавать элементы справочников в запросах.

Объявление

Чтобы задать паттерн как именованную сущность, необходимо проделать следующие шаги. Для примера воспользуемся фрагментом справочника городов, который разместим в файле dicts/cities.csv:

1;Санкт-Петербург, Питер, СПб;{"name": "Санкт-Петербург", "lat": 59.93863, "lon": 30.31413}

  1. Подключите к файлу сценария .sc справочник именованных сущностей при помощи тега require:
require: dicts/cities.csv
    name = Cities
    var = Cities

  1. Задайте конвертер для сущности в одном из файлов с расширением .js либо в одном из блоков init:
$global.cityConverter = function($parseTree) {
    var id = $parseTree.Cities[0].value;
    return Cities[id].value;
};

Использование конвертеров опционально, однако оно упрощает последующий доступ к данным, указанным в значении сущности.


  1. Объявите именованный паттерн при помощи специального элемента $entity, после которого в угловых скобках записывается название справочника, а как атрибут после || — имя конвертера:
patterns:
    $city = $entity<Cities> || converter = cityConverter

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

Рассмотрим пример стейта, который будет срабатывать на запросы с упоминанием сущности $city:

state: City
    q!: * $city *

При попадании в данный стейт, например, по запросу мой регион Санкт Петербург в $parseTree будет доступна информация по сущности:

{
  "city": [
    {
      // Служебные поля: tag, pattern и другие
      "value": {
        "name": "Санкт-Петербург",
        "lat": 59.93863,
        "lon": 30.31413
      }
    }
  ],
  "_city": {
    "name": "Санкт-Петербург",
    "lat": 59.93863,
    "lon": 30.31413
  }
}

По ключу <имя_паттерна> доступна подробная информация по всем распознанным сущностям, а по ключу _<имя_паттерна> — значение value первой распознанной сущности.

Значение value отличается в зависимости от того, задан ли для сущности конвертер:

  • Если конвертер задан, берется значение, которое возвращает конвертер.
  • Если конвертер не задан, записывается только идентификатор сущности.