ДЗ-05: Entity Resolution та зв’язки — від сутностей до графа

Навігація курсу: Хаб: ДЗ · Урок: Урок-05

Урок: Урок-05-Entity-Resolution
Час виконання: 1–2 години
Дедлайн: до наступного заняття


🔵 Базовий рівень (обов’язкове) — ~1 година

Не потребує встановлення жодних інструментів. Виконується у браузері.

Мета

  1. Зрозуміти entity resolution на практиці — знайти різні записи про одну й ту саму людину
  2. Навчитися будувати граф зв’язків вручну
  3. Застосувати шкалу впевненості (1–10) до реальних знахідок
  4. Виконати Collision Detection — переконатися, що ви досліджуєте правильну людину

Що потрібно зробити

Завдання 1 — Таблиця ідентифікаторів

Оберіть будь-яку публічну особу — підприємець, журналіст, місцевий політик, громадський активіст. Тільки публічна діяльність, тільки відкриті джерела.

Знайдіть мінімум 5 різних записів про цю людину в різних джерелах. Для кожного запишіть:

ІдентифікаторЗначенняДжерелоВпевненість (1–10)
Повне ім’яLinkedIn / ЗМІ / реєстр
EmailВитік / публічний профіль
ТелефонПублічний сайт / реєстр
НікнеймGitHub / Telegram / Twitter
КомпаніяЄДРПОУ / LinkedIn
АдресаРеєстр / сайт компанії

Що тут важливо зрозуміти: один і той самий запис може мати різну оцінку впевненості залежно від джерела. Email із витоку бази даних — 7/10. Email, підтверджений LinkedIn і реєстром — 10/10.


Завдання 2 — Граф зв’язків у draw.io

Побудуйте граф у draw.io (безкоштовно, у браузері, без реєстрації):

  • Мінімум 6 вузлів (особа, компанії, адреси, акаунти, події — будь-які сутності)
  • Мінімум 8 ребер з підписом типу зв’язку (CEO, засновник, адреса, email, знайомий тощо)
  • На кожному ребрі — оцінка впевненості (1–10)

Колірне кодування вузлів (рекомендовано):

  • Синій — особа
  • Жовтий — організація
  • Зелений — локація
  • Червоний — артефакт (email, IP, домен, телефон)

Що тут важливо зрозуміти: граф — це не просто малюнок. Кожне ребро — це перевірений факт з джерелом. Якщо джерела немає — ребро не малюється.


Завдання 3 — Collision Detection

Перевірте: чи є хтось інший з таким самим іменем у публічних джерелах?

Дайте відповіді на 3 питання:

  1. Скільки людей з таким іменем знайшлося у відкритих джерелах?
  2. Які 2 факти однозначно ідентифікують саме вашу людину (а не однофамільця)?
  3. Чи є хоча б один зв’язок у вашому графі, який ви б не включили через ризик collision? Чому?

Що тут важливо зрозуміти: collision — найпоширеніша помилка OSINT-аналітика. Перевірити альтернативну гіпотезу (“це інша людина”) так само важливо, як знайти зв’язок.


Формат виконання

  • Таблиця ідентифікаторів — Markdown або Google Sheets (посилання)
  • Граф — скріншот із draw.io (PNG або PDF)
  • Відповіді на Collision Detection — 5–10 речень вільного тексту

Що саме потрібно здати

  1. Таблиця ідентифікаторів (мінімум 5 рядків, заповнені всі колонки)
  2. Скріншот графу (мінімум 6 вузлів, 8 ребер, підписані ребра)
  3. Відповіді на 3 питання Collision Detection

Acceptance Criteria 🔵

  • Таблиця містить мінімум 5 ідентифікаторів з різних джерел
  • Кожен ідентифікатор має оцінку впевненості 1–10 і назву джерела
  • Граф має мінімум 6 вузлів і 8 ребер
  • Кожне ребро підписане (тип зв’язку + впевненість)
  • Collision Detection — наявні відповіді на всі 3 питання
  • Досліджувана особа — публічна, всі дані з відкритих джерел

🔴 Просунутий рівень (бажане) — +30–40 хвилин

Потребує встановленого Docker. Якщо Docker не запускається — просунутий рівень не обов’язковий.

Мета

  1. Встановити Flowsint і запустити перше автоматичне розслідування
  2. Порівняти ручний граф (Базовий рівень) з автоматично побудованим
  3. Зрозуміти, що автоматизація доповнює, а не замінює аналітика

Що потрібно зробити

Встановлення Flowsint

git clone https://github.com/reconurge/flowsint.git
cd flowsint
make prod

Відкрийте http://localhost:5173/register і створіть обліковий запис.

Встановлення займає 15–20 хвилин (Docker завантажує образи). Запустіть заздалегідь.


Завдання 4 — Flowsint: автоматичне розслідування

Використайте той самий суб’єкт, що досліджували у Базовому рівні.

  1. Додайте домен його компанії або email як сутність у Flowsint
  2. Запустіть усі доступні збагачувачі для цієї сутності
  3. Слідуйте мінімум за 2 новими вузлами, що з’явилися (наприклад: домен → IP → ASN)
  4. Зробіть скріншот фінального графу

Що тут важливо зрозуміти: Flowsint будує граф автоматично, але ви вирішуєте, які ребра заслуговують на довіру. Інструмент — помічник, не суддя.


Завдання 5 — Порівняльний аналіз

Напишіть 5–8 речень:

  • Що Flowsint знайшов, чого не було у вашому ручному графі?
  • Що знайшли ви руками, чого Flowsint не показав?
  • Яка оцінка впевненості у нових автоматичних знахідок? Чому?

Формат виконання

  • Скріншот графу Flowsint
  • Порівняльний аналіз — 5–8 речень вільного тексту

Що саме потрібно здати

  1. Скріншот графу Flowsint (з мінімум 8 вузлами після збагачення)
  2. Порівняльний аналіз (ручний граф vs Flowsint)

Acceptance Criteria 🔴

  • Flowsint встановлений і запущений
  • Досліджена мінімум 1 сутність з 2+ збагачувачами
  • Граф містить мінімум 8 вузлів після збагачення
  • Порівняльний аналіз містить конкретні знахідки (не загальні слова)
  • Нові автоматичні знахідки оцінені за шкалою впевненості 1–10

Примітка

  • Досліджуйте лише публічних осіб і лише їх публічну діяльність
  • Не публікуйте зібрані дані у відкритий доступ
  • Якщо при встановленні Flowsint виникла помилка — опишіть її у здачі: це теж корисний досвід
  • Оцінка впевненості нижче 5/10 — не включайте до фінального графу або позначайте окремо як «потребує перевірки»

← Урок-05-Entity-Resolution | Наступний урок: Урок-06-Теорія-графів →