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