ViTalk работает с сущностями (показатели, атрибуты, значения атрибутов, измерения) в базе данных ViQube. Чтобы при запросе выделялись корректные сущности, необходимо, чтобы их можно было найти используя интуитивные обозначения на естественном языке. Рекомендации к именованию сущностей приведены здесь.
Однако бывают ситуации, при которых база данных уже настроена с не самыми подходящими именами сущностей и перенастройка БД может быть дорогостоящей. Также, на одну сущность может оказаться удобно ссылаться используя разные имена (Москва, столичный филиал, главный филиал).
Поэтому, для управления именами сущностей, используемыми в ViTalk, предоставляется несколько инструментов.
В разделе синонимы описано, как можно настроить глобальные (независимые от конкретных показателей, измерений и др. сущностей) синонимичные фразы, а также можно указать части сущностей, которые должны игнорироваться при их поиске в ViTalk (например, в измерении Медиастор_клиенты, можно срезать часть Медиастор_).
В данном разделе описана работа с конфигурационным файлом entity_names.json. Конфигурация в этом файле позволяет переименовать или задать альтернативные имена конкретным сущностям БД. Именно заданные имена будут использоваться ViTalk для распознавания присутствия сущностей в запросе на естественном языке.
Файл entity_names.json генерируется после заполнения файла metadata.json. В него попадают те сущности, которые не будут игнорироваться ViTalk в соответствии с конфигурацией в metadata.json.
Файл имеет следующую структуру:
{ "measure_groups": { "ИМЯ_ГРУППЫ ПОКАЗАТЕЛЕЙ_1": { "имя показателя": [ "новое имя показателя1", "новое имя показателя2" ], "имя показателя2": [ ... ], ... }, "ИМЯ_ГРУППЫ ПОКАЗАТЕЛЕЙ_2": { .. }, ... } }, "dimensions": { "Имя измерения1" { "vitalk_name": [ "Новое имя измерения1", ... ], "attributes": { "имя_атрибута1": [ "Новое имя атрибута1", ... ], "имя_атрибута2": [...], ... } "roles": { "Имя ГП": { "Имя роли измерения1": ["новое имя роли"], ... }, ... } } }, "attribute_values": [] }
Далее, опишем настройку имен разных типов сущностей:
Переименование показателей
Чтобы переименовать показатель или добавить новое имя, необходимо найти этот показатель в разделе measure_groups.
Например, мы хотим, чтобы показатель “отгрузка” также назывался “продажи”. Для этого достаточно добавить слово “продажи” в список имён.
"measure_groups": { "Медиастор_Оборот": { "Оборот": [ "Оборот" ], "прибыль": [ "прибыль" ], "отгрузка": [ "отгрузка", "продажи" # добавлено новое имя ], ...
Переименование измерений, ролей измерений и атрибутов
Чтобы переименовать измерение, его атрибуты или роли, необходимо найти это измерение в разделе “dimensions”. Предположим, мы хотим, чтобы атрибут “филиал” измерения “Медиастор_филиал” можно было найти по слову офис.
В таком случае нам нужно найти атрибут “филиал” в поле “attributes” и дописать имя “офис”.
"dimensions": { ..., "Медиастор_Филиал": { "vitalk_name": [ "Медиастор_Филиал" ], "attributes": { "филиал": [ "филиал", "офис" # добавлено новое имя ] }, "roles": { "Медиастор_Оборот": { "Медиастор_Филиал": [ "Медиастор_Филиал" ] }, "Медиастор_Дебиторка": { "Медиастор_Филиал": [ "Медиастор_Филиал" ] }, "Медиастор_Расходы": { "Медиастор_Филиал": [ "Медиастор_Филиал" ] } } },
Чтобы отредактировать имя роли измерения, нужно найти раздел с ролями для интересующей группы показателей (поле roles)
Поле vitalk_name позволяет отредактировать имя неролевого измерения.
Переименование значений атрибутов.
Чтобы переименовать значения атрибутов (фильтры), нужно самостоятельно дописать их в раздел attribute_values
{ "measure_groups": { ... }, "dimensions": { ... }, "attribute_values": [] }
Формат записи для переименования и добавления имён следующий:
{ "dimension": "ИМЯ ИЗМЕРЕНИЯ", # можно использовать только оригинальное имя, а не переименование "attribute": "ИМЯ АТРИБУТА", "value": "ЗНАЧЕНИЕ АТРИБУТА", "new_values": [ "новое значение 1", "новое значение 2" ] }
Приведём примеры:
"attribute_values": [ { "dimension": "Медиастор_Филиал", "attribute": "филиал", "value": "Москва", "new_values": [ "Столица", "Москва" ] }, { "dimension": "Медиастор_Клиенты", "attribute": "Наименование клиента", "value": "«Красноярский завод цветных металлов имени В. Н. Гулидова»", "new_values": [ "КЗЦМ", "«Красноярский завод цветных металлов имени В. Н. Гулидова»" ] } ]