Neo4j на страже закона: кейс поиска рецидивистов

Автор Категория , , ,
Neo4j на страже закона: кейс поиска рецидивистов

Как быстро и эффективно с помощью Neo4j выявить преступников, незаконно ввозящих в страну контрафактные товары. Почему графовая СУБД Neo4j обошла документо-ориентированную MongoDB, из чего состоит алгоритм поиска рецидивистов средствами технологий аналитики больших данных и как это может пригодиться в других бизнес-приложениях.

Постановка задачи: сложности отслеживания контрафакта

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

Но на практике определить ключевые фрагменты информации из более чем сотни документов, поступающих в день из их практики или из официальных портовых отчетов и полицейских отчетов, не так-то просто. Эти документы включают имена импортеров, их адреса, номера телефонов, email’ы и, что особенно важно, марки ввезенных в страну товаров. Нарушитель таможенного законодательства считается рецидивистом только в том случае, если он незаконно ввозит один и тот же бренд два и более раз.

Человеку невозможно оперировать с этим огромным объемом данных, чтобы выявить факты нарушения и участников этих преступлений. Нужен способ мгновенной обработки как рукописных, так и электронных документов для выявления потенциальных преступников. Например, при нахождении информации, которая поможет идентифицировать рецидивиста, желательно получать оповещение в виде электронного письма, чтобы оперативно принять меры, которые помогут в дальнейшем расследовании и поимке рецидивиста. Как это было реализовано с помощью Neo4j одной из компаний Южной Африки мы рассмотрим далее.

Выбор СУБД: MongoDB vs Neo4j

Определив варианты использования предлагаемого решения, команда разработчиков приступила к выбору технических средств, которые позволят реализовать описанные идеи. Реляционные СУБД в качестве хранилища данных были исключены, т.к. они предполагают жесткое задание схемы данных. Но в рассматриваемом кейсе есть сложности в жестком определении таких сущностей, как адреса и важные имена.

Например, может возникнуть необходимость расширить эти данные, если номерные знаки или идентификационные номера вдруг станут важными предикторами для выявления рецидивистов. Придется изменить ранее разработанную схему таблиц и переписать все запросы, чтобы получить нужную информацию в предупреждениях. Хотя это можно быстро реализовать, подобные случаи усложняют процессы обслуживания программного решения. Поэтому разработчики обратили внимания на более гибкие СУБД, которые можно поддерживать на стороне клиента. В частности, документо-ориентированная NoSQL база данных MongoDB. Она не требует описания схемы таблиц, использует JSON-подобные документы и схему базы данных. Будучи написанной на языке C++, MongoDB работает довольно быстро, поддерживает индексацию данных и парадигму параллельных вычислений MapReduce.

Но создание запросов, ориентированных на отношения, в MongoDB становится слишком сложным, поскольку документо-ориентированные NoSQL-СУБД изначально разработаны для очень быстрого поиска в одной коллекции, а затем извлечения необходимой информации из документов, релевантных запросу. В случае поиска рецидивистов при попытке создать связи между различными коллекциями сложность запроса многократно возрастает. Чтобы обойти эти ограничения, разработчики начали искать другие альтернативы. Одной из них стала графовая база данных Neo4j.

В пользу решения на основе Neo4j стали следующие аргументы:

  • ориентация на работу с сильно связанными данными;
  • поддержка SQL-подобного языка запросов Cypher;
  • возможность добавления различных отношений, сущностей или узлов в ранее заданную схему, чтобы гибко развивать систему согласно требованиям клиента или новым особенностям предметной области;
  • возможность наглядно визуализировать результаты исследований в виде графов, где можно показать преступные синдикаты, образованные связанными вершинами.

Благодаря наличию в Neo4j библиотеки Graph Data Science  со множеством алгоритмов выявления сообществ, о чем мы писали здесь, идентификация преступных синдикатов, связанных с конкретным брендом, документом, адресом или портом, становится довольно простым делом. Для этого достаточно использовать один тип отношения, а сам процесс поиска сводится к тому, что нужно пройтись по любому конкретному документу и извлечь указанные в нем сущности. Далее необходимо построить отношение на стороне Neo4j, просто указав, что конкретный бренд или человек упоминается в этом документе. Таким образом, графовая природа Neo4j позволяет быстро и легко идентифицировать момент появления объекта, который уже находится в базе данных, и позволяет узнать, где еще этот объект упоминается, а также связанные с ним сущности: адреса, email’ы и пр.

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

Узнайте больше реальных примеров применения Neo4j и других инструментов графовой аналитики больших данных для практических бизнес-задач на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков больших данных в Москве:

Источники

  1. https://neo4j.com/blog/fraud-detection-finding-needle-haystack-with-knowledge-graphs/
  2. https://ru.wikipedia.org/wiki/MongoDB