Виявлення Цивільних Жертв у Telegram: Інноваційний Підхід з Машинним Навчанням
Від лютого 2022 до вересня 2025 року команда Bellingcat зібрала, геолокувала та опублікувала інформацію про понад 2500 випадків заподіяння шкоди цивільному населенню внаслідок повномасштабного вторгнення Росії в Україну. У рамках цієї роботи було протестовано новий алгоритм машинного навчання, призначений для оцінки ймовірності наявності інформації про цивільні жертви в публікаціях Telegram.
Цей інноваційний метод значно скоротив час на пошук та відбір матеріалів, дозволивши дослідникам зосередитися на верифікації випадків, а не лише на їх пошуку. Ця стаття детально описує нашу методологію, етичні міркування та здобуті уроки, сподіваючись, що наш досвід стане корисним для тих, хто досліджує схожі теми.
Дослідження відкритих джерел щодо шкоди цивільному населенню є відносно новою сферою, яка ставить перед дослідниками багато викликів. Один з найбільших — це організація та сортування величезного обсягу контенту, створеного користувачами, для виявлення релевантної інформації. Машинне навчання, форма штучного інтелекту, що використовує алгоритми для виявлення закономірностей у великих обсягах даних та створення прогнозів, може зробити це завдання значно ефективнішим.
Зважаючи на триваючі конфлікти, що призводять до значної кількості жертв серед цивільного населення в Судані та на Близькому Сході, цей посібник має на меті запропонувати тим, хто висвітлює ці конфлікти, приклад використання машинного навчання для пошуку та класифікації інцидентів. Код нашого алгоритму доступний тут.
Ми визначили “шкоду цивільному населенню” не лише як загибель чи поранення цивільних осіб внаслідок збройного конфлікту, а й як ширші та відкладені наслідки: психологічну травму, втрату джерел доходу, вимушене переміщення, руйнування інфраструктури тощо. Це визначення базується на матеріалах книги “Protection of Civilians” щодо шкоди цивільному населенню.
Початковий Набір Даних з Telegram
Кожна допис у Telegram, що містив інформацію про шкоду цивільному населенню та була вручну верифікована дослідниками, стала основою для початкового набору даних підтверджених випадків. Ми зібрали 5848 унікальних URL-адрес таких дописів. Під час ручного збору ми переглядали повідомлення у відповідних Telegram-каналах, рухаючись від найстаріших до найновіших. Припускаючи, що певний допис потрапив до нашого списку геолокованих інцидентів, це означало, що дослідник, який його позначив, також переглянув дописи до та після нього в Telegram і не позначив їх. Тому ми обрали 10 дописів, що оточували підтверджений випадок, як додатковий набір даних, що не містили інформації про шкоду цивільному населенню. Після виключення видалених або дубльованих дописів, ми отримали 48 545 дописів без згадок про шкоду цивільному населенню — наші “негативні приклади”.
Підтримайте Bellingcat
Ваші пожертви безпосередньо сприяють нашій здатності публікувати новаторські розслідування та викривати протиправні дії по всьому світу.
Donate
Рішення збільшити кількість “негативних прикладів” покликане краще відображати реальність та розширити доступні дані для навчання моделі.
Ми збагатили кожен URL-адрес метаданими з API Telegram, такими як час публікації, реакції або текстовий контент. Оскільки деякі з цих дописів були видалені, ми заповнили відсутні дані попередньо збереженими версіями з нашої бази даних Auto Archiver, доступної лише для “позитивних прикладів”.
Інженерія Ознак (Feature Engineering)
Навчання моделі машинного навчання потребує числових даних, оскільки ці моделі обчислюють оцінку ймовірності на основі математичних операцій.
Ми створювали ці числові дані, перетворюючи сирі дані з нашого початкового набору, такі як ключові слова, що вказують на потенційну шкоду цивільному населенню, у числові показники (“ознаки”), які модель могла інтерпретувати. Метою було підвищити здатність моделі виявляти закономірності. Цей процес, відомий як інженерія ознак, може суттєво покращити результати роботи моделі, оскільки він дозволяє фахівцям з даних вносити явні контекстні знання.
Повний список ознак, які ми використали для навчання моделі, можна знайти в супровідному до цього матеріалу програмному блокноті. Багато ознак були безпосередньо навіяні досвідом дослідників під час ручного скринінгу випадків шкоди цивільному населенню, шляхом перегляду певної кількості Telegram-каналів та індивідуального аналізу кожного допису.
Кілька використаних ознак були безпосередньо побудовані на основі метаданих кожного допису в Telegram, таких як `media_type` (тип медіа), `day_of_week` (день тижня); або бінарні ознаки: `forwarded` (переслано), `edited` (відредаговано) та `reply_to` (відповідь на).
Інші ознаки включали інформацію про взаємодію: `views` (перегляди), `forwards` (пересилання), `total_reactions` (загальна кількість реакцій), і навіть окремі ознаки для найчастіше використовуваних емодзі, включно з `reaction_crying_face` для підрахунку 😭 емодзі.
Перетворення Тексту на Числа
Щоб втілити досвід ручного збору даних, дослідники склали список ключових слів українською та російською мовами, які, на їхню думку, вказували на дописи, що, ймовірно, стосуються шкоди цивільному населенню. Наприклад, “Шахед” та “КАБ” перекладені як “Shahed” та “Guided aerial bomb” відповідно. Ми створили числову ознаку для підрахунку їхньої частоти.
Крім того, ми включили кілька загальних англомовних ключових слів, які суттєво вказували на потенційну шкоду цивільному населенню, таких як “injured” (поранений), “school affected” (пошкоджена школа) та “hospital affected” (пошкоджена лікарня), які використовувалися лише для генерації показників семантичної схожості.
Показник семантичної схожості — це обчислення, що використовується для визначення близькості за змістом між різними словами та фразами. Щоб отримати семантичну схожість між текстом допису та кожним із наших ключових слів, ми представили кожне слово у вигляді списку чисел за допомогою моделі Sentence Transformer, яка перетворює слова на числові представлення, так звані вектори, що їх може зрозуміти комп’ютер.
Потім ми обчислили рівень схожості між кожним вектором за допомогою косинусної схожості, одного з найпопулярніших методів вимірювання схожості між двома фрагментами тексту.
Завдяки тому, як працюють вбудовування (embeddings), це обчислення дає результат за шкалою від -1 (немає семантичної близькості) до 1 (однакове значення). Наприклад, слова “hurt” (завдати болю) та “injured” (поранений) матимуть високий показник схожості, тоді як “residential” (житловий) та “injured” (поранений) матимуть негативний показник, оскільки слова не є семантично близькими.
Нарешті, щоб модель могла визначити релевантність кожного допису щодо шкоди цивільному населенню в Україні, ми використали багатомовний текстовий трансформер із сімейства мовних моделей BERT для представлення всього тексту допису у вигляді вектора з 768 числових значень. Ця модель може ефективно представляти текст багатьма мовами таким чином, що зберігає значення: однакове речення різними мовами генеруватиме схожі вбудовування, а навчені моделі машинного навчання можуть виявляти закономірності у цих вбудовуваннях.
Важливо зазначити, що для цього початкового прототипу моделі виявлення шкоди цивільному населенню ми не включали жодних ознак, отриманих із медіаконтенту, такого як фотографії та відео, хоча це було б логічним наступним кроком у спробі покращити продуктивність моделі.
Вибір, Навчання та Оцінка Моделей
Маючи 54 393 рядки з 893 числовими ознаками кожен, ми обрали чотири алгоритми машинного навчання для навчання наших прогнозних моделей.
Ми обрали логістичну регресію як базовий алгоритм через її простоту. Ми також вибрали три інші “найкращі у своєму класі” моделі: Random Forest, XGBoost та LightGBM. Ці вибори були зумовлені інтерпретованістю моделей та їхньою здатністю працювати з табличними даними такого розміру. Наприклад, ми уникали нейронних мереж через відсутність інтерпретованості та тому, що ці моделі найкраще працюють з більшими наборами даних.
Щоб об’єктивно оцінити продуктивність навчених моделей, ми розділили наш набір даних на три частини:
- Навчальний набір – дані, на яких тренувалися моделі (60 відсотків усіх рядків набору даних)
- Валідаційний набір – використовувався для проміжної оцінки під час налаштування параметрів моделі (20 відсотків усіх рядків)
- Тестовий набір – прихований для остаточної оцінки продуктивності, тому моделі оцінювалися на невідомих даних (решта 20 відсотків рядків)
Ми використали стратифікований поділ для розподілу набору даних замість випадкового. Цей метод забезпечив збереження пропорції “позитивних прикладів” (тобто підтверджених випадків шкоди цивільному населенню) у всіх трьох наборах на рівні приблизно 11 відсотків.
Для вимірювання ефективності моделей машинного навчання ми прогнали їх через тестовий набір даних та оцінили кількість правильних і неправильних прогнозів. Моделі видають ймовірність від 0 до 1 того, що кожен допис у Telegram містить інформацію про шкоду цивільному населенню, і ми намагалися знайти поріг відсічення, який би забезпечував хороший баланс між позначанням майже кожного допису (0.1) або позначенням дуже невеликої кількості (0.9).
Існують два основні типи метрик оцінки для визначення точності прогнозу моделі. Повнота (Recall) стверджує, яку частку “позитивних прикладів” (тобто відомих дописів про шкоду цивільному населенню) було правильно позначено. Точність (Precision) вимірює частку дописів, позначених як такі, що дійсно стосуються шкоди цивільному населенню.

Під час фази навчання ми налаштовували моделі для максимізації середньої точності (PR-AUC) — метрики, що узагальнює точність на всіх рівнях повноти. Хоча цей метод також враховує точність, він надає пріоритет повноті, що є кращим для цього сценарію використання, оскільки він спрямовує вибір моделі на зменшення кількості пропущених дописів про шкоду цивільному населенню.
Наведені нижче таблиці впорядковують моделі від найкращої до найгіршої за PR-AUC порівняно з базовим рівнем випадкового передбачення (“підкидання монети”). ROC-AUC та F1 — це ще дві метрики оцінки, включені для перевірки. Простими словами, ROC-AUC вимірює ймовірність правильного ранжування двох прикладів, одного негативного та одного позитивного; F1 однаково зважує точність і повноту, а його найкраще значення визначається пороговим рівнем.

На основі цих результатів ми обрали XGBoost як нашу фінальну модель, оскільки вона показала найкращі показники порівняно з усіма метриками.
Інтерпретація Моделі
Оскільки ці моделі є інтерпретованими, ми можемо зрозуміти, які ознаки є найкориснішими при прогнозуванні того, чи містить допис інформацію про шкоду цивільному населенню. Наведена вище таблиця показує 10 найважливіших ознак, які найсильніше сигналізують моделі XGBoost для прийняття рішення:
- `semantic_keywords_similarity`: семантична близькість між текстом допису та вручну вибраними ключовими словами “casualties” (жертви), “damage” (пошкодження) та “civilian harm” (шкода цивільному населенню).
- `bert`: модель змогла розрізняти значення тексту з тією ж силою, що й деякі інші ознаки в цьому списку — таких випадків у топ-10 три.
- `reaction_crying_face`: реакції з емодзі плачучого обличчя на допис.
- `group_of_messages`: чи містить допис кілька медіафайлів.
- `keywords_in_text`: кількість користувацьких українських або російських ключових слів у дописі.
Ці результати загалом узгоджуються з тим, що можна очікувати при виборі дописів у Telegram для виявлення випадків шкоди цивільному населенню, зокрема, що дописи, які викликають багато емоційного залучення, та дописи з використанням ключових слів про шкоду цивільному населенню, були серед тих, що найімовірніше містили контент, пов’язаний з цією темою. Не всі моделі мали такі ж провідні ознаки, як XGBoost. Насправді, для моделі Random Forest найважливішою ознакою була кількість емодзі плачучого обличчя в дописі — нечіткий патерн, виявлений дослідниками, коли ця методологія тільки зародилася.
Результати LLM та Порівняння
Ретроспективно, ми вирішили прогнати вибірку того самого тестового набору даних через різні великі мовні моделі (LLM), щоб оцінити їхню здатність робити такі ж прогнози.
Ми прагнули включити оцінку, згенеровану LLM, як додаткову ознаку для наших навчених моделей, яка б вважалася релевантною, якщо б корелювала з правильними прогнозами.
Спочатку ми вибрали дві локальні моделі — варіанти 1B та 4B Gemma 3 від Google DeepMind, та дві моделі, доступні через хмарні сервіси — Gemini 2.5 flash та Gemini 3.5 flash. Завдяки такому вибору ми сподівалися порівняти результати в широкому діапазоні очікуваної продуктивності моделей.
Ми згенерували вибірку з 400 рядків (зі збереженням тієї ж пропорції реальних випадків шкоди цивільному населенню) з тестового набору даних, що використовувався для кастомних моделей. Для кожної з чотирьох LLM ми провели два тести: один, де надсилався лише текст допису в Telegram, і інший, що включав як повідомлення, так і розроблені ознаки (за винятком текстових вбудовувань, оскільки модель мала прямий доступ до тексту). У запиті до кожної моделі ми просили надати оцінку від 0 до 1. Потім ми оцінили результати так само, як і для кастомних моделей.
Наведена вище таблиця показує, що LLM дійсно можуть витягувати цінність з розроблених ознак. Усі чотири LLM перевершили базову модель логістичної регресії в наших тестах, однак жодна з них не показала кращих результатів, ніж інші кастомно навчені моделі, і XGBoost залишився лідером за показником PR-AUC.
Тим не менш, Gemini 2.5 Flash показав кращі результати, ніж його новіша версія 3.5, і навіть досяг трохи вищого показника F1, ніж будь-яка інша модель. Хоча це хороший результат, для виявлення дописів про шкоду цивільному населенню PR-AUC залишається найважливішою метрикою, оскільки він відображає здатність моделі виявляти рідкісні випадки шкоди цивільному населенню, мінімізуючи при цьому хибні спрацьовування.
Етичні Міркування
Впровадження інструменту автоматизованого прийняття рішень у процес виявлення шкоди цивільному населенню ставить низку етичних питань. До них належать: автоматизаційна упередженість (bias), тобто схильність людей сліпо довіряти рекомендаціям, згенерованим машиною; алгоритмічна упередженість (bias), тобто як результати цих моделей відображають ті ж патерни, що присутні в навчальних даних, включно з недостатнім або надмірним представленням типів шкоди цивільному населенню.
Рішення протестувати автоматизовану методологію для цього конкретного проєкту було зумовлене обмеженими ресурсами для обох етапів процесу — виявлення потенційної шкоди цивільному населенню та її фактичної верифікації. Історично ми накопичили величезний обсяг неперевірених інцидентів, оскільки багато часу доводилося витрачати на моніторинг найновіших подій, щоб якомога швидше отримати та зберегти потенційні докази.
Автоматизація цього процесу також зменшила вплив значної кількості неприємного та тривожного візуального та текстового контенту на дослідників, знижуючи навантаження від такого травматичного контенту.
Для цього проєкту ми намагалися пом’якшити етичні виклики за допомогою низки стратегій, зокрема: випадкове позначення дописів, не охоплених жодною моделлю; моніторинг ознак, на які спираються моделі при прийнятті рішень; історичне порівняння закономірностей у даних.
Крім того, як зазначено вище, для цього початкового прототипу моделі виявлення шкоди цивільному населенню ми не включали жодних ознак, отриманих із самого медіаконтенту. У майбутньому логічним наступним кроком для покращення продуктивності моделі було б включення медіа з дописів, але використання ШІ для перегляду фактичних медіа несе додаткові етичні виклики, такі як упередженість моделі.
Через непрозоре володіння багатьма компаніями-розробниками LLM та їхню генеративну природу, використання LLM як додаткової ознаки створювало додаткові етичні виклики, включно з проблемами конфіденційності та безпеки, враховуючи чутливий характер даних. Наша модель не покладалася на LLM, хоча ми ретроспективно прогнали через неї вибірку.
Як Модель Вписується в Загальну Картину
Після вибору цієї моделі ми створили користувацький інтерфейс, де дослідники могли переглядати список дописів у Telegram, відсортований за ймовірністю вмісту ознак шкоди цивільному населенню. Користувацький інтерфейс був розроблений для швидкої тріажу та інтеграції: позитивне підтвердження від дослідників миттєво надсилало допис до Auto Archiver (інструмент Bellingcat для збереження цифрового контенту), а потім переносило його на ATLOS (нашу внутрішню платформу для спільної верифікації). Співробітники та волонтери Bellingcat могли потім вручну перевіряти інциденти. Введені дослідниками дані постійно зберігалися, щоб ці дані можна було використовувати для покращення моделі в майбутньому.
Попередні відгуки свідчили, що модель ШІ була корисною. Ми не лише змогли скоротити час та зменшити шкоду від перегляду десятків Telegram-каналів із репортажами про війну, але й дослідники повідомили, що потік нових дописів, що додаються до черги верифікації, охоплював реальні та різноманітні випадки шкоди цивільному населенню.
Ми визнаємо, що ця модель потребує значних покращень і є роботою в процесі. Навіть незважаючи на те, що вона може виявляти різноманітні випадки шкоди цивільному населенню, потрібні подальші тести та вдосконалення (такі як покращена інженерія ознак та постійна оцінка), перш ніж її можна буде впевнено розгорнути.
Незважаючи на фокус на шкоді цивільному населенню та Telegram (дуже популярному в Україні та Росії), цей конвеєр є універсальним і може бути адаптований до інших завдань моніторингу конфліктів. Наскільки легко це зробити, залежить від відкритості соціальної мережі та можливості вилучення з неї дописів. Окрім цього, легко додавати нові ознаки та дані, і недорого автоматично перенавчати, тестувати та розгортати моделі, оскільки система отримує більше людського втручання.
У майбутньому сортування величезних обсягів даних у зоні конфлікту залишатиметься викликом. Сподіваємося, що ця методологія допоможе новинним редакціям, організаціям з моніторингу конфліктів та іншим знайти баланс між етичними міркуваннями та ресурсами для проведення розслідувань відкритих джерел щодо шкоди цивільному населенню та порушень прав людини.
Порада від Шефа:
Щоб справді покращити якість даних для навчання вашої моделі, не забувайте про “шум” у соціальних мережах. Іноді дописи, які здаються очевидними, можуть бути не тим, чим здаються. Намагайтеся вручну перевіряти якомога більше крайніх випадків, щоб ваш алгоритм навчався на різноманітних, а не лише на найбільш виражених прикладах. Це допоможе йому бути більш стійким до фальшивих спрацьовувань у реальних умовах.
За матеріалами: www.bellingcat.com
