Урок 6: Теорія графів та графи знань — застосування в AI та OSINT

Навігація курсу: Хаб: Уроки

Попередній: Урок-05-Entity-Resolution | Наступний: Урок-07-Автоматизація-збору


Слайди (Презентаційний текст)

Слайд 1 — Заголовок

Теорія графів та графи знань
Застосування в AI та OSINT


Слайд 2 — Навіщо теорія графів аналітику?

Граф — природна модель для OSINT:

  • Люди пов’язані з людьми
  • Компанії пов’язані з людьми і адресами
  • Транзакції пов’язують рахунки
  • Телефонні дзвінки → мережа комунікацій

Без теорії графів: список фактів
З теорією графів: виявлення прихованих структур, центральних гравців, містків між групами


Слайд 3 — Базові концепції

Граф G = (V, E)

  • V (вершини/вузли) — сутності: люди, компанії, місця
  • E (ребра) — зв’язки: “знайомий з”, “директор”, “власник”

Типи графів:

  • Направлений — A→B (A впливає на B, але не навпаки)
  • Ненаправлений — A — B (взаємний зв’язок)
  • Зважений — сила зв’язку (частота спілкування, сума транзакцій)
  • Мультиграф — кілька типів зв’язків між одними вузлами

Слайд 4 — Ключові метрики графу

МетрикаЩо вимірюєOSINT-застосування
Ступінь вузлаКількість прямих зв’язківХто найбільш “з’єднаний”?
Betweenness CentralityСкільки коротких шляхів проходить через вузолХто є “містком” між групами?
Closeness CentralityНаскільки близько вузол до всіх іншихХто має найшвидший доступ до інформації?
PageRankВажливість вузла за якістю зв’язківХто є авторитетом у мережі?
Clustering CoefficientНаскільки “зкластеровані” сусіди вузлаЧи є tight group навколо суб’єкта?

Слайд 5 — Betweenness Centrality: ключова метрика

Betweenness = “ким проходить більшість зв’язків”

В OSINT:

  • Висока BC → “брокер” або “посередник”
  • Може не мати найбільше зв’язків, але контролює інформаційні потоки
  • Видалення вузла з високою BC → руйнування мережі

Приклад: у злочинній мережі — не лідер з найбільшою кількістю зв’язків є найважливішим, а той через кого проходять всі комунікації


Слайд 6 — Виявлення спільнот (Community Detection)

Алгоритми:

  • Louvain — ефективний для великих мереж, без параметрів
  • Girvan-Newman — видаляє ребра з максимальною BC, виявляє кластери
  • Label Propagation — швидкий, для дуже великих графів

В OSINT: виявлення груп впливу, кластерів за інтересами, сепаратних угруповань


Слайд 7 — Граф знань (Knowledge Graph)

Knowledge Graph = структурований граф де:

  • Вузли = конкретні сутності з атрибутами
  • Ребра = іменовані типові зв’язки (предикати)
  • Факти = трійки (суб’єкт, предикат, об’єкт)
(Іван Петренко) --[є CEO]--> (TechUA Ltd)
(TechUA Ltd) --[розташована в]--> (Київ)
(Іван Петренко) --[навчався в]--> (КПІ)
(КПІ) --[знаходиться в]--> (Київ)

Слайд 8 — AI + Knowledge Graphs (2025-2026)

AI збирає, граф знань зберігає:

  1. LLM витягує трійки (суб’єкт-предикат-об’єкт) з тексту
  2. Entity resolution об’єднує дублікати
  3. Knowledge Graph зберігає і дозволяє запити
  4. Graph Neural Networks прогнозують приховані зв’язки

Застосування в OSINT: KnowCTI — 92.96% точності для витяжки кіберзагроз
OSINT + KG: виявлення транснаціональних мереж, бенефіціарних власників


Слайд 9 — SPARQL і Wikidata

Wikidata — найбільший публічний граф знань (100M+ фактів)

# Знайти всіх СEO українських компаній у Wikidata
SELECT ?person ?personLabel ?company ?companyLabel WHERE {
  ?person wdt:P39 wd:Q484876 .  # посада: CEO
  ?company wdt:P17 wd:Q212 .    # країна: Україна
  ?person wdt:P108 ?company .   # роботодавець
  SERVICE wikibase:label { bd:serviceParam wikibase:language "uk,en" }
}

Відкрити: query.wikidata.org


Слайд 10 — Gephi на практиці

Workflow:

  1. Зібрати дані → CSV (nodes.csv + edges.csv)
  2. Завантажити у Gephi
  3. Запустити Layout (ForceAtlas2 для OSINT)
  4. Розрахувати метрики (Statistics → Network Diameter)
  5. Відобразити Betweenness Centrality через розмір вузла
  6. Community Detection → Modularity → кольори кластерів
  7. Експортувати як SVG/PNG

Слайд 11 — Практичний приклад: мережа впливу

Кейс: відстеження мережі Telegram-каналів

Крок 1: Зібрати 50 каналів за темою
Крок 2: Визначити хто кого репостить (ребра)
Крок 3: Побудувати граф у Gephi
Крок 4: Знайти вузли з найвищим betweenness
→ Це "amplifiers" — ключові вузли розповсюдження
Крок 5: Виявити кластери
→ Це окремі інформаційні бульбашки

Слайд 12 — Graph Neural Networks (GNN) у OSINT

GNN навчаються на графах і прогнозують:

  • Link prediction — виявлення прихованих зв’язків
  • Node classification — автоматична класифікація вузлів
  • Anomaly detection — аномальні патерни в мережі

Реальне застосування 2025-2026:

  • Виявлення бенефіціарних власників (Quantifind)
  • Прогнозування пов’язаних суб’єктів у фінансових злочинах
  • CTI: зв’язування невідомих акторів з відомими APT-групами

Нотатки доповідача

До слайду 3 — Базові концепції

Не заглиблюйтесь у математику. Ключове повідомлення: граф = природна мова для представлення зв’язків. Намалюйте простий граф з 5 вузлів на дошці — одразу видно хто “в центрі”.

До слайду 5 — Betweenness Centrality

Гарна аналогія: уявіть аеропорти. Франкфурт і Дубай не мають найбільше рейсів (ступінь), але через них проходить більшість пересадок — це висока betweenness. Видаліть їх — і тисячі маршрутів зламаються. У розвідувальних мережах так само.

До слайду 8 — AI + Knowledge Graphs

Підкресліть: це передній край технологій у 2025-2026. Компанії типу Quantifind і Palantir будують бізнес на цьому. Академічні системи типу KnowCTI досягли 92%+ точності. Для аналітика важливо розуміти концепцію — будувати таке самому не потрібно, але замовляти і оцінювати — так.

До слайду 9 — Wikidata

Зробіть LIVE-демонстрацію у query.wikidata.org. Запустіть простий запит прямо під час лекції. Це вражає студентів — сотні мільйонів фактів доступні через прості запити.


Домашнє завдання

Завдання 1 — Gephi: перший граф (обов’язкове)

Встановіть Gephi (безкоштовно).

  1. Зберіть дані про мережу: 10+ людей/організацій і їх зв’язки
    (наприклад: рада директорів компанії + їхні попередні компанії)
  2. Створіть nodes.csv і edges.csv
  3. Завантажте у Gephi, застосуйте ForceAtlas2 layout
  4. Виведіть хто має найвищий Betweenness Centrality

Здайте: скріншот графу + таблицю топ-3 за BC

Завдання 2 — Wikidata (обов’язкове)

Зайдіть на query.wikidata.org
Знайдіть або напишіть запит для:

  • Перелік усіх українських депутатів певного скликання, або
  • Перелік топ-50 компаній за капіталізацією, або
  • Будь-яку іншу тему що вас цікавить

Здайте: запит + результат + інтерпретація

Завдання 3 — Аналіз Telegram-мережі (бажане)

Візьміть будь-яку тему (безпека, технології, бізнес).
Знайдіть 15-20 Telegram-каналів за цією темою.
Визначте хто кого репостить за 2 тижні.
Побудуйте граф і знайдіть “amplifiers”.


Матеріали для студентів

Ресурси

Граф-аналіз для OSINT:

Теорія і AI:

Практичні інструменти:

Формат CSV для Gephi (роздаткове)

# nodes.csv
Id,Label,Type
1,Іван Петренко,Person
2,TechUA Ltd,Company
3,Олена Ковальчук,Person
4,Київ,Location
 
# edges.csv
Source,Target,Type,Weight,Label
1,2,DirectedEdge,5,CEO
3,2,DirectedEdge,3,CFO
1,3,UndirectedEdge,2,знайомий
2,4,DirectedEdge,1,розташована

Шпаргалка метрик графу

МетрикаОзначенняДе знайти у Gephi
DegreeКількість зв’язківStatistics → Average Degree
BetweennessПроходить через вузолStatistics → Network Diameter
ClosenessБлизькість до всіхStatistics → Network Diameter
PageRankАвторитетStatistics → PageRank
ModularityКластериStatistics → Modularity


SHATTERED: Graph шард — 10+ режимів візуалізації

Слайд 13 — SHATTERED Graph: Огляд

Graph шард — інтерактивна візуалізація мережі зв’язків між сутностями прямо у браузері.

10+ режимів візуалізації:

РежимЗастосування в OSINT
Force-DirectedОрганічна кластеризація за зв’язками
HierarchicalСтруктура командування, ієрархія компаній
CircularПорівняння кількості зв’язків
SankeyПотоки (фінанси, інформація)
MatrixЩільність зв’язків між групами
GeographicГеопростір: хто де, зв’язки через карту
CausalПричинно-наслідкові ланцюги
ArgumentationACH + аргументи
Link AnalysisМережа зв’язків у стилі i2
TemporalЯк мережа змінювалась у часі

Слайд 14 — SHATTERED Graph: Аналітичні метрики

Вбудовані метрики (не потрібен Gephi!):

# Запустити граф-аналітику для проєкту
curl -X POST http://localhost:8100/api/graph/analytics \
  -H "Content-Type: application/json" \
  -d '{
    "project_id": "proj_abc",
    "metrics": ["pagerank", "betweenness", "closeness", "eigenvector"],
    "community_detection": "louvain"
  }'

Відповідь:

{
  "nodes": [
    {
      "entity_id": "ent_001",
      "name": "Іван Петренко",
      "pagerank": 0.187,
      "betweenness": 0.432,
      "closeness": 0.681,
      "community": 2
    }
  ],
  "communities": {
    "count": 4,
    "modularity": 0.73
  },
  "top_by_betweenness": ["ent_001", "ent_047", "ent_023"]
}

Слайд 15 — SHATTERED Graph: Path Finding та Community

Знайти найкоротший шлях між двома суб’єктами:

curl -X POST http://localhost:8100/api/graph/path \
  -d '{
    "from_entity": "ent_person_A",
    "to_entity": "ent_org_B",
    "max_depth": 4
  }'
# → ["Петренко" → WORKS_FOR → "TechUA" → PARTNER_OF → "OffshoreHolding"]

Виявлення циклів (кільця власності, замкнені структури):

curl -X POST http://localhost:8100/api/graph/cycles \
  -d '{"project_id": "proj_abc", "min_length": 3}'

У UI: SHATTERED → Graph → вибери режим → інтерактивна D3.js/Force Graph

  • Клік на вузол → деталі + зв’язки
  • Подвійний клік → розгорнути сусідів
  • Filter по типу зв’язку або даті

Слайд 16 — SHATTERED vs Gephi: коли що використовувати

СитуаціяSHATTERED GraphGephi
< 1000 вузлів, інтерактивно✓ КращийМожна
> 10K вузлівПовільно✓ Кращий
Вбудовано з документами✓Потрібен export
Часова анімація✓ (Temporal mode)Плагін
Публікація в звіті✓ Export SVG/PNG✓
Geographic режим✓ Вбудований LeafletПлагін GeoLayout

Workflow: SHATTERED для оперативного аналізу → Gephi для глибокого статистичного аналізу великих мереж.


Нотатки до SHATTERED-блоку (Урок 6)

LIVE DEMO: відкрий SHATTERED після того як у попередніх уроках завантажили документи з сутностями. Перейди у Graph → Force-Directed. Студенти побачать автоматично побудований граф зі своїх даних. Переключи на Temporal — покажи як мережа змінювалась. Запусти analytics → покажи betweenness — це прямо відповідь на “хто є містком” зі слайду 5.


← Урок-05-Entity-Resolution | Наступний урок: Урок-07-Автоматизація-збору →