Перейти к основному содержимому

Справочники именованных сущностей

подсказка
.csv — справочники именованных сущностей.

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

к сведению

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

Структура справочника

Справочники задаются в файлах с расширением .csv. Каждая строка имеет следующую структуру:

id; имя; значение

ID

Идентификатор сущности.

предупреждение
Идентификаторы в пределах одного справочника должны быть уникальны.

Имя

Слово или набор слов для обозначения сущности.

подсказка
Внутри имени вы можете перечислить ряд синонимов через запятую.

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

Значение

Данные, ассоциированные с сущностью.

Данные могут быть представлены в виде строки без кавычек либо объекта JavaScript. Вы можете добавить в значения любую информацию, которая относится к сущности, чтобы воспользоваться ей в сценарии.

подсказка
Например, в имени сущности вы можете перечислить все синонимы, а в одном из полей значения — ее основное, нормализованное наименование.

Пример

В качестве примера рассмотрим фрагмент справочника личных имен:

150;Игорь,Игорек;{"name": "Игорь", "diminutive": "Игорек", "sex": "м"}
151;Инна;{"name": "Инна", "diminutive": "", "sex": "ж"}
152;Иннокентий,Кеша;{"name": "Иннокентий", "diminutive": "Кеша", "sex": "м"}
153;Ирина,Ира,Ирочка,Ирка;{"name": "Ирина", "diminutive": "Ирочка", "sex": "ж"}

Подключение справочника

Для подключения справочника используется тег require. Укажите путь к файлу, а также значения параметров name и var.

require: dicts/names.csv
name = Names
var = $Names

Название

Название справочника, указанное после name, используется при создании именованной сущности, использующей данный справочник:

patterns:
$name = $entity<Names>

Имя переменной

Имя переменной var используется для доступа к содержимому справочника напрямую из скриптовых вставок — в частности, конвертеров.

Так, если передать в функцию log переменную $Names, в лог будет выведен объект со следующей структурой:

{
"150": {
"id": "150",
"alternameNames": [
"Игорь",
"Игорек"
],
"value": {
"name": "Игорь",
"diminutive": "Игорек",
"sex": "м"
}
},
"151": {
// ...
}
}

Учет морфологических вариантов

По умолчанию синонимы для сущности распознаются во всех морфологических формах. Например, задан такой фрагмент справочника регионов:

24;Красноярский край;{"capital": "Красноярск"}
45;Курганский область;{"capital": "Курган"}

В сущность, использующую данный справочник, попадут формы словосочетаний во всех падежах и числах: Красноярского края, в Курганской области и т. д.

предупреждение
Все слова, перечисленные в синонимах, должны находиться в начальной форме.

Если такое поведение нежелательно, при подключении справочника вы можете дополнительно указать параметр strict:

require: dicts/regions.csv
name = Region
var = $Region
strict = true

В таком случае синонимы будут распознаваться строго в том виде, который они имеют в справочнике.