Урок 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 збирає, граф знань зберігає:
- LLM витягує трійки (суб’єкт-предикат-об’єкт) з тексту
- Entity resolution об’єднує дублікати
- Knowledge Graph зберігає і дозволяє запити
- 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:
- Зібрати дані → CSV (nodes.csv + edges.csv)
- Завантажити у Gephi
- Запустити Layout (ForceAtlas2 для OSINT)
- Розрахувати метрики (Statistics → Network Diameter)
- Відобразити Betweenness Centrality через розмір вузла
- Community Detection → Modularity → кольори кластерів
- Експортувати як 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 (безкоштовно).
- Зберіть дані про мережу: 10+ людей/організацій і їх зв’язки
(наприклад: рада директорів компанії + їхні попередні компанії) - Створіть nodes.csv і edges.csv
- Завантажте у Gephi, застосуйте ForceAtlas2 layout
- Виведіть хто має найвищий Betweenness Centrality
Здайте: скріншот графу + таблицю топ-3 за BC
Завдання 2 — Wikidata (обов’язкове)
Зайдіть на query.wikidata.org
Знайдіть або напишіть запит для:
- Перелік усіх українських депутатів певного скликання, або
- Перелік топ-50 компаній за капіталізацією, або
- Будь-яку іншу тему що вас цікавить
Здайте: запит + результат + інтерпретація
Завдання 3 — Аналіз Telegram-мережі (бажане)
Візьміть будь-яку тему (безпека, технології, бізнес).
Знайдіть 15-20 Telegram-каналів за цією темою.
Визначте хто кого репостить за 2 тижні.
Побудуйте граф і знайдіть “amplifiers”.
Матеріали для студентів
Ресурси
Граф-аналіз для OSINT:
- Graph-Based Intelligence Analysis — Linkurious
- Maltego Link Analysis — концепція і практика
- How to Use Maltego and Gephi — EBU для журналістів
Теорія і AI:
- AI-OSINT with Knowledge Graphs and GNN — академічна робота
- Entity and Relation Extraction for CTI KG — ScienceDirect 2024
Практичні інструменти:
- Gephi — установити заздалегідь
- Wikidata Query — онлайн, без реєстрації
- Maltego Community — безкоштовна версія
Формат 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 | Причинно-наслідкові ланцюги |
| Argumentation | ACH + аргументи |
| 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 Graph | Gephi |
|---|---|---|
| < 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-Автоматизація-збору →