Кто с кем против кого: анализ графа социальных связей в Neo4j

анализ социальных сетей на графах Neo4j пример курсы обучение, графовая аналитика больших данных курсы Data Science примеры обучение, курсы обучение Neo4j, обучение дата-аналитик, аналитик больших данных курсы, аналитика данных на графах, графовые алгоритмы на больших данных курсы примеры, обучение, Школа Больших Данных Учебный Центр Коммерсант

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

Как построить граф социальных связей в Neo4j

Возьмем в качестве примера набор деловых и личных взаимоотношений между 13 людьми:

  • Анна, Николай, Михаил и Олег являются тренерами, за расписание которых отвечают менеджеры по продажам (Борис, Ольга, Иван, Петр);
  • Ольга управляет другими менеджерами, имеет родственницу Алису, дружит с Лизой и взаимодействует с Сергеем;
  • Анна ставит задачи и проверяет результаты работы Лизы и Олега, дружит с Никитой и знает Николая, который знает Ивана и взаимодействует с Ольгой;
  • Сергей дружит с Дмитрием, который является родственником Ивана и Михаила.

Чтобы построить граф связи в Neo4j, откроем ее веб-консоль по адресу https://console.neo4j.org/ и введем там следующий запрос на создание узлов (людей) и отношений между ними (связей):

create (Anna:Crew:Trainers {name: 'Анна'}), (Nick:Trainers {name: 'Николай'}), (Mike:Trainers {name:'Михаил'}),(Oleg:Trainers {name:'Олег'}),  (Boris:Crew:Sales {name: 'Борис'}), (Olga:Sales {name: 'Ольга'}), (Ivan:Sales {name:'Иван'}),(Peter:Sales {name:'Петр'}),   (Lisa:Crew {name:'Лиза'}),(Anna)-[:knows]->(Nick), (Ivan)-[:scheduls]->(Anna), (Olga)-[:deals]->(Nick), (Nick)-[:knows]->(Ivan),  (Olga)-[:manages]->(Ivan),  (Olga)-[:manages]->(Peter),(Olga)-[:manages]->(Boris), (Anna)-[:manages]->(Lisa), (Anna)-[:manages]->(Oleg),  (Peter)-[:scheduls]->(Nick), (Olga)-[:scheduls]->(Oleg),(Boris)-[:scheduls]->(Mike), (Alisa:Crew {name:'Алиса'}),(Nikita:Crew {name:'Никита'}), (Dima:Crew {name:'Дмитрий'}),(Serg:Crew {name:'Сергей'}), (Ivan)-[:family]->(Dima),  (Lisa)-[:friend]->(Olga),(Nikita)-[:friend]->(Anna),(Dima)-[:friend]->(Serg), (Serg)-[:deals]->(Olga), (Alisa)-[:knows]->(Ivan),(Mike)-[:family]->(Dima), (Alisa)-[:family]->(Olga)
Neo4j граф социальных связей примеры курсы обучение Data Science
Neo4j граф социальных связей

Далее рассмотрим, как проанализировать созданный граф, выполнив к нему запросы.

Пишем запросы на Cypher

Сделаем к этому графу социальных связей несколько запросов. Например, выясним, кто с кем дружит. Для этого следует написать запрос сопоставления (MATCH) на внутреннем SQL-подобном языке запросов Cypher, который поддерживает Neo4j:

match (n:Crew)-[r:friend]-(m) return n.name, m.name

В ответ вернется таблица сопоставления узлов, которые связаны отношениями friend. Усложним MATCH-запрос, добавив фильтрацию. К примеру, найдем, с кем взаимодействует Ольга, т.е. с какими узлами графа узел с этим именем связан отношениями deals.

Для этого напишем следующий Cypher-запрос:

match (n{name: 'Ольга'})-[r:deals]-(m) return n.name, m.name
Cypher Neo4j примеры запросов обучение курсы Data Science
Cypher Neo4j примеры запросов

Получим список сотрудников отдела продаж и людей, с которыми они связаны:

match (n:Sales)-[r]-(m) return n.name, m.name

Выделим из этого списка только тренеров:

match (n:Sales)-[r]-(m:Trainers) return n.name, m.name
Cypher Neo4j примеры запросов обучение курсы Data Science
Cypher Neo4j примеры запросов

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

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

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://console.neo4j.org/
  2. https://neo4j.com/developer/cypher/
Поиск по сайту