serge_gorshkov


Сергей Горшков - о бизнесе в сфере ИТ

о семантической интеграции, программировании, управлении...


Previous Entry Share Next Entry
Все тайное становится явным
serge_gorshkov
... вместе с АрхиГраф.СУЗ. По результатам обсуждения прошлого поста (спасибо vvagr!) мы взялись за реализацию функции "Поиск вокруг". Теперь наш продукт можно переименовать в "Свет мой, зеркальце" :)
Вот что у нас получилось:



А теперь обо всем по порядку.

Кейс на этот раз выглядит так. Некая крупная компания выполняет капитальный проект по строительству - предположим, высоковольтной линии. По ходу проекта последовательно происходит несколько процедур закупки: ПИР (проектирование), СМР и ПНР (строительство), поставка материалов и оборудования. Компания - ну, представим себе! - хочет выявить аффилированных участников всех трех закупок. Для этого в ее распоряжении есть простейшая информация: только выписки из ЕГРЮЛ. Такие выписки можно автоматически получать через веб-сервис, так что этот кейс абсолютно реалистичен. Общая схема ситуации выглядит так:



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

Для начала при помощи правил логического вывода построим простейшие критерии аффилированности.
1. Если адрес регистрации компании A совпадает с адресом компании B, то они - аффилиаты по адресу.
2. Если персона A владеет долей в компании B, пусть даже через цепочку промежуточных фирм, персона является ее бенефициаром.
3. Если персона A и персона B одновременно являются бенефициарами компании C, то эти персоны - бизнес-партнеры.

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

В результате работы правил у нас получился граф, в котором могут обнаружиться потенциальные взаимосвязи участников закупки. Осталось только построить картинку, на которой их можно будет увидеть. Для этого используем новый инструмент АрхиГраф.СУЗ - "Поиск вокруг".

Для начала работы в этом режиме нужно выбрать стартовые объекты. Выберем три процедуры закупки. Далее нужно установить глубину просмотра связей - в нашем примере хватит пяти. После этого в средней колонке страницы инструмента появляется возможность выбрать типы связей и/или объектов, которые нас интересуют. Мы отметим компании и персоны - остальные объекты, через которые закупки связаны с выбранными, добавятся на диаграмму автоматически. После этого можно нажать ссылку "Предварительный просмотр" и убедиться, что мы получим разумный результат:



Раз результат похож на правду, остается нажать на кнопку "Показать результат" и увидеть итог - картинку, которая была показана в начале поста. Слева на ней приведена легенда типов объектов, показанных на диаграмме, и статистика по их количеству; также можно увидеть полный список показанных связей, для каждой из которых отображается перечень объектов, на которые эта связь указывает. На поле справа мы видим саму диаграмму, где при помощи разных цветов отображены различные виды связей между объектами.

Проанализируем эту диаграмму. Наша задача - понять, не связаны ли между собой участники (а в особенности - победители) трех процедур закупки. В первых двух процедурах, как мы помним, победили ООО "Ромашка" и ООО "Сирень", между которыми прямой связи нет. Однако, проследив за нитями клубка, мы легко увидим, что их объединяет (контур мы обвели черным):




Оказывается, "Ромашкой" через промежуточную компанию владеет некто Петров. Он же является владельцем не участвовавшей в наших процедурах компанией ЗАО "Гладиолус", которая зарегистрирована по тому же адресу, что и победитель второй закупки - ООО "Сирень".

А что с третьей закупкой? Эта процедура еще не состоялась, и победителя мы пока не знаем. Известны только участники - ООО "Тополь" и АО "Клен". Не связаны ли с ними "Сирень" и "Ромашка"?
Найти и такую связь оказалось несложно:



"Сиренью" владеет некто Иванов, бизнес-партнер которого, Сидоров, является директором участника третьей закупки - ООО "Тополь". Ставлю на то, что именно "Тополь" окажется победителем третьей процедуры...
Несложно также увидеть, что Иванов и Сидоров являются партнерами на основании того, что оба владеют долями не попадавшейся нам ранее компании под названием ООО "Плющ".

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



Что делать с этим знанием - вопрос уже не нашей компетенции. Отмечу кстати, что и предыдущий кейс, с поиском цепочки вывода средств, отлично решается при помощи инструмента "Поиск вокруг", без необходимости строить сложные гипотезы-правила.

Буду очень благодарен, если кто-нибудь из читателей подскажет мне демонстрационный кейс для этих функций, не связанный с расследованиями: практические применения здесь довольно специфические, а мне хочется продемонстрировать широту потенциала инструмента.

  • 1

Детали инструмента

Кейс отличный, не хватает только более подробного описания:

Специалистам скорее всего запинтересует:
- где указываем, что учитываем 5 связей в глубину?
- где ставим галочки о том, какие связи учитываем?

Айтишника будет интересовать:
- закачиваем ли всю базу данных по юр лицам, или обрабатываем прямо из интернета?
- это специальный инструмент под задачу поиска связей по юр.лицам, или же это универсальный инструмент. В последнем случае интересно как выполняется настройка этого универсального инструмента для работы с базою юр.лиц?

Re: Детали инструмента

5 связей в глубину выбираем в средней колонке, над связями и классами - видно на третьей картинке в посте.
Там же ставим галочки, какие связи интересуют. На скриншоте этот блок свернут, но выглядит он точно так же, как развернутый ниже блок выбора классов. Добавим еще колонку с галочками "игнорировать", чтобы принудительно скрывать соответствующие объекты и связи (сейчас на диаграмму могут попасть связи и объекты не отмеченных типов, если они попадаются где-то в середине цепочки между стартовыми объектами и целевыми).

Базу, конечно, лучше обрабатывать прямо из интернета. Тут никакой сложности нет, мы это делали еще в 2013 году для проекта "ЭнергоПравда".

И, конечно, это универсальный инструмент! Онтология может быть любой, не обязательно про тендера и юр. лица. Это может быть все, что угодно, например - какое-нибудь оборудование и аварии на нем, сообщения в ситуационный центр и фактические события, и так далее.
В любом случае, онтология создается через наш редактор Onto.pro (или любой другой), наполняется при помощи инструментов импорта, или, например, через API нашего АрхиГраф.MDM.

>> не попадавшейся нам ранее компании под названием ООО "Плющ"

Откуда в онтологии возьмутся элементы, которые напрямую не связаны с кейсом? Нужно делать запросы вида "выбрать для анализа все факты с типами связей x,y,z,... в которых участвуют все стартовые объекты, при необходимости добавив новые объекты"? И это на всю глубину просмотра связей.

Резонный вопрос.
По-хорошему, здесь должна быть связка с витриной данных, которая умеет доставать недостающие данные (если говорить о данном конкретном кейсе). Алгоритм у нее придется настраивать с учетом специфики кейса.

Анализ диаграммы предполагается ручной или автоматизированный? Здесь были бы полезны функции вида Neighborhood Search (Breadth-First Search), Shortest Path, Strongly Connected Components, Isomorphic Subgraph Search ...

В качестве инструмента рисования "круговых" графов советую GraphViz с движками circo и twopi (а для для ненаправленных neato и sfdp).

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

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

Готовый визуализатор вряд ли подойдет. Как минимум потому что диаграма не просто картинка - каждая точка-объект является ссылкой, перейдя по которой можно посмотреть детальную информацию об объекте. Кроме того раскраска: цвет точки соответствует ее типу, в том числе учтена ситуация, когда объект относится сразу к нескольких типам (в описанном кейсе этого нет, но для других полезно). Не уверена, что в готовых это всё есть. А в планах есть и другие идеи, что еще можно делать с объектами на диаграмме (скрывать временно часть диаграммы и т.п.)

GraphViz легко интегрируется в веб, например генерирует SVG или VML-содержимое, а хоть и HTML-теги map и area поверх растровой картинки. Любым элементам графа можно назначить свои ссылки (свойство URL). Да и способ вызова GraphViz из веба можно выбрать подходящий, хоть вызов утилиты в любой ОС (Windows, Linux, ...), хоть вызов JS-функции: viz.js через emscripten, graph-viz-d3-js через jquery. Формирование dot-разметки графа также легко делается, хоть из обёртки для любого языка (java, perl, php, ...), хоть запросом из базы (я делал в SQL, думаю можно и в SPARQL). Здесь можно ввести любую нотацию, назначить типу цвет, форму, шрифт, сделать группировку для скрытия-раскрытия кластера по клику мыши. Масса возможностей, при том что отрисовка графа быстрая и достаточно красивая.

  • 1
?

Log in

No account? Create an account