Про проєкт
Сайт порівнює, як російські, українські та незалежні медіа висвітлюють одні й ті самі події війни в Україні. Увесь вміст — картки подій, перекази, переклади — створюється і публікується автоматично, без ручної перевірки перед публікацією. Сайт не встановлює істину: він показує, що і як повідомляє кожна група джерел та де версії розходяться.
Методика
Один автоматичний конвеєр (скрипт update.py) виконує кроки нижче. Де можливо, кожен крок доповнено перевіркою в коді — модель не «перевіряє сама себе».
- Збір. Скрипт читає публічні сторінки джерел (RSS, sitemap, денні архіви, сторінки статей) і зберігає заголовок, посилання, час, групу та текст (до 6000 знаків) у локальну базу. Збір інкрементальний: уже відомі адреси повторно не завантажуються. До кожного сайту — пауза між запитами, дотримується robots.txt; сторінки, закриті для автоматичного читання, не використовуються.
- Попередній відбір. За ключовими словами (широкий перелік) відбираються матеріали, пов’язані з війною; решта до карток не потрапляє.
- Групування в події. Мовна модель (OpenAI, gpt-6-luna) отримує партії до 100 матеріалів разом із назвами нещодавно відкритих подій і відносить матеріали до наявних подій, створює нові або залишає матеріал без події. Код перевіряє відповідь: прибирає повтори, додає пропущені номери (окремий запит), відкидає неіснуючі. Потім окремий прохід шукає події, розбиті на частини, і об’єднує їх.
- Фільтр релевантності. Для кожного матеріалу окремо ставиться питання «чи описує він саме цю подію?». До переказу потрапляють лише матеріали з відповіддю «так». Так сторонній матеріал не стає «версією» однієї зі сторін.
- Перекази. Для кожної з трьох груп (Росія, Україна, незалежні) модель пише короткий переказ з атрибуцією («Міноборони РФ заявляє…»), блок «Де версії розходяться» та 1–2 цитати на групу. Події з числовими розбіжностями (за наперед перевірюваними цифрами втрат) або з великою кількістю матеріалів одразу йдуть до потужнішої моделі (gpt-6.1-sol); решта — спершу gpt-6-luna, а за невдалої перевірки — один повтор на gpt-6.1-sol.
- Перевірка цитат. Кожна цитата має бути дослівним фрагментом збереженого тексту статті з тієї ж групи (дозволено лише виправлення пробілів). Цитата, що не пройшла перевірку, не публікується. Якщо в групи з переказом не залишилося жодної перевіреної цитати, картка не публікується.
- Перевірка чисел. Кожне число в переказі та в блоці розбіжностей має зустрічатися в текстах джерел. Невідповідність — привід для повтору на потужнішій моделі; за кількох невідповідностей картка не публікується. Розбіжність цифр між групами визначається в коді за числами, які модель навела з посиланням на статтю і які код знайшов у тексті цієї статті.
- Переклади. Заголовок, місце, перекази та блок розбіжностей пишуться російською, а потім машинно перекладаються українською та англійською (gpt-6-luna). Код перевіряє, що числа в перекладі збігаються, а писемність і довжина правдоподібні; цитати не перекладаються. Картка, що не пройшла перевірку, не публікується.
- Публікація. Картка виходить на сайт автоматично, якщо пройшла всі «ворота якості» (нижче). Ручної перевірки немає.
Ворота якості: картка не публікується, якщо (1) менше двох релевантних матеріалів або менше двох різних джерел; (2) фільтр релевантності підтвердив менше половини згрупованих матеріалів; (3) у групи з переказом немає перевіреної цитати; (4) у переказі кілька чисел не знайдено в джерелах; (5) модель повідомила про високу невпевненість; (6) не пройшла перевірка перекладу; (7) відповідь моделі неповна або некоректна. Якщо раніше опублікована картка перестала проходити ці перевірки (наприклад, після появи нових матеріалів), її знімають автоматично, а запис про це потрапляє до журналу виправлень.
Шкала підтвердженості
Для кожної події обчислюється показник підтвердженості — переважно за формальними ознаками, у коді: скільки груп і різних джерел описують подію; чи є серед них міжнародні або емігрантські незалежні видання (Kyiv Independent належить до українських видань і для цього не вважається міжнародним); чи розходяться числа (відмінність чисел сама по собі не дає позначки «суперечать»: «запущено» і «збито» — різні величини; позначка ставиться, лише якщо модель за текстом відзначила несумісні твердження); чи пройшла перевірка цитат і чисел; наскільки фільтр релевантності підтвердив групування; наскільки невпевненою вважала картку сама модель. Показник відображається значком і текстом (не лише кольором).
| Мітка | Що означає | Коли виставляється |
|---|---|---|
| підтверджено незалежними джерелами | Подію описують міжнародні або емігрантські незалежні видання, і між групами немає виявлених суперечностей у фактах. Це не означає, що незалежні медіа перевірили кожну деталь. | Немає зауважень перевірок і суперечностей; подію описують ≥2 міжнародні/емігрантські незалежні джерела, або ≥1 таке джерело і ще одна сторона (Росія чи Україна). |
| сторони суперечать одна одній | Групи джерел наводять несумісні відомості (модель за текстом відзначила несумісні твердження про факти; різні цифри показано в картці). Сайт не визначає, хто правий. | Модель за текстом позначила несумісні твердження, а подію описують щонайменше дві «сторони». Відмінність цифр сама по собі позначки не дає. |
| повідомляють обидві сторони, незалежних джерел немає | Подію описують і російські, і українські джерела, але міжнародних незалежних джерел у добірці немає. | Є і російські, і українські матеріали, немає міжнародних незалежних, немає виявлених суперечностей. |
| заявляє одна сторона | Подію описує лише одна сторона (без незалежного міжнародного джерела); її твердження наведено як твердження. | Матеріали лише однієї «сторони» (російської або української) без міжнародного незалежного джерела. |
| недостатньо даних | Матеріалів мало або автоматичні перевірки якості пройдено не повністю (мало джерел, невпевненість моделі, частину цитат або цифр не підтверджено). | Будь-що з: менше двох джерел, фільтр релевантності підтвердив менше 60% матеріалів, модель повідомила про високу невпевненість, частина цитат не пройшла перевірку, є число, не знайдене в джерелах, матеріали складаються лише з коротких заголовків. Перевіряється першим. |
Важливо: мітка описує охоплення та узгодженість матеріалів у зібраних даних, а не істинність. «Підтверджено незалежними джерелами» означає, що подію описують незалежні видання, а не що вони перевірили кожну деталь; вони можуть переказувати заяву однієї зі сторін. Мітка виставляється автоматично і може бути хибною.
Чого очікувати: прогноз помилок
Нижче — види помилок, яких слід очікувати, та грубі оцінки з одного тестового прогону від 2026-10-04 (звіт llm-test/REPORT.md). Вибірки малі (у тесті групування — 100 матеріалів і 9 еталонних карток; у тесті переказів — 8 карток), тому цифри орієнтовні й не переносяться на весь сайт.
- Розбиті та склеєні події. У тесті групування (gpt-6-luna, режим за замовчуванням) у середньому 63% ключових матеріалів еталонної картки потрапляло в один найкращий кластер; у 3 з 9 карток — не менше 75%. Модель обережна: зі 100 матеріалів 55–69 залишаються без події, а одна подія нерідко ділиться на дві картки. Із 17 кластерів 2 були змішаними (суміжні епізоди); обидва випадки спірні. Еталон і сам неточний, тож оцінка приблизна.
- Хибна приналежність матеріалу. Без фільтра релевантності в одній із 8 перевірених карток чернетка видала сторонню статтю (про інший сюжет) за «російську версію» події. Саме тому введено фільтр; його власну точність окремо не вимірювали.
- Поверхневий блок «Де версії розходяться». Це найменш стабільне поле: у слабших режимів моделі він нерідко зводився до загальних слів замість конкретних цифр і формулювань; потужніша модель описувала розбіжності точніше. Блок лише фіксує відмінності, він не перевіряє факти.
- Цитати та числа. У тесті gpt-6-luna (режим за замовчуванням) усі 35 цитат із 35 виявилися дослівними; у слабшого режиму 40 із 42 (у конвеєрі він не використовується). Серед 25 чисел у переказах одне не знайшлося в джерелі (дата). Вибірка мала, а вручну перевірені ~15 тверджень вигаданих фактів не містили. Дослівна цитата не гарантує, що її обрано вдало чи репрезентативно.
- Помилки перекладу. Українською та англійською перекладаються перекази й блок розбіжностей. Частку помилок перекладу в тесті не вимірювали; в одному зразку потужнішої моделі в російський текст потрапило англійське слово. Код відсікає лише грубі збої (числа, мова, довжина), але не смислові неточності.
- Пропуски та зсув вибірки. «Матеріалів не знайдено» означає відсутність у зібраних даних, а не в медіа взагалі. Набір подій визначається автоматичним групуванням і доступністю джерел.
Політика виправлень
- Як повідомити про помилку: посилання «Повідомити про помилку» на кожній картці та в підвалі сайту (лист електронною поштою; у лист підставляється адреса сторінки). Адреса зараз — заглушка, поки не налаштована.
- Що відбувається зі повідомленням: картку перевіряють повторно (знову запускають перевірки за збереженими текстами); якщо помилку підтверджено, картку знімають з публікації, а за потреби створюють заново. Строків відповіді проєкт не обіцяє.
- Журнал виправлень: усі зняття й виправлення фіксуються на публічній сторінці «Виправлення» — дата, картка, що сталося і чому. Автоматичні зняття (картка перестала проходити перевірки) записуються туди ж і позначені як автоматичні.
- Виправлення не стирає історію: запис лишається в журналі й після того, як картку знято або замінено.
Нейтральність
- Твердження приписуються тим, хто їх висловив («Міноборони РФ заявляє…», «за даними ОВА…», «BBC пише…»); спірні твердження не подаються як факти.
- Сайт не визначає, яка з версій правдива, і не оцінює дій сторін. Блок «Де версії розходяться» фіксує відмінності в цифрах і формулюваннях.
- Поділ на групи — це позначка належності джерела, а не оцінка достовірності: «Росія» — російські державні й державно-лояльні видання; «Україна» — українські видання (публічний мовник і приватні); «Незалежні» — міжнародні та емігрантські видання, а також Kyiv Independent. Частина незалежних видань отримує державне або суспільне фінансування (BBC, DW, Al Jazeera); редакційна незалежність — їхня власна заява, ми її не перевіряємо.
- Вибір джерел сам по собі створює зсув: у російській групі немає видань, критичних до влади й доступних для автоматичного читання, а Kyiv Independent може займати проукраїнську позицію.
Анонімність проєкту
Проєкт анонімний: на сайті й у коді немає імен та особистих контактів авторів. Єдиний контакт — адреса для зворотного зв’язку (зараз заглушка). Сайт не використовує лічильники й cookies; у браузері локально запам’ятовуються лише обрані мова й тема оформлення.
Джерела та їхні обмеження
Перелік нижче — усі джерела, які використовує конвеєр, з описом належності та способу доступу. Кількість матеріалів — кількість збережених статей у базі (включно з тими, що не стосуються подій).
| Група | Джерело | Належність і спосіб доступу | Статус | Матеріалів |
|---|---|---|---|---|
| Росія | Міноборони РФ (Telegram) | офіційний канал відомства; публічне веб-превʼю t.me/s/mod_russia (сайти mil.ru недоступні з сервера) | працює | 574 |
| Росія | ТАСС (tass.com) | державне інформагентство РФ; англійська версія, sitemap + сторінки | працює | 1896 |
| Росія | ТАСС (tass.ru, RSS) | лише заголовок і лід з RSS: сторінки статей закриті антибот-перевіркою | частково | 453 |
| Росія | РИА Новости | державне інформагентство РФ; robots.txt забороняє підвантаження /services/, тому читаються RSS, тег «Україна» та денні архіви розділів — охоплення неповне | частково | 1989 |
| Росія | Інтерфакс | приватне російське інформагентство, що легально працює в РФ; RSS (≈25 останніх записів) + сторінки | частково | 1175 |
| Україна | Суспільне | публічний мовник України; sitemap + RSS | працює | 1748 |
| Україна | Українська правда | приватне українське видання; архіви за днями | працює | 1331 |
| Україна | РБК-Україна | приватне українське видання; RSS з повним текстом (≈3 доби) | працює | 865 |
| Незалежні | BBC News | британський суспільний мовник (фінансується ліцензійним збором); RSS (≈100 свіжих статей на весь BBC) | працює | 173 |
| Незалежні | The Moscow Times | незалежне англомовне видання у вигнанні (Амстердам); у РФ визнано «небажаною організацією»; RSS + мапа сайту | працює | 43 |
| Незалежні | France 24 | міжнародний мовник Франції (France Médias Monde, фінансується державою); RSS розділів | працює | 7 |
| Незалежні | The Guardian | британська газета, належить трасту Scott Trust; RSS «Україна» + сторінки | працює | 83 |
| Незалежні | DW (EN, RU) | міжнародний мовник Німеччини, фінансується з федерального бюджету (редакційна незалежність закріплена законом); RSS + сторінки | працює | 427 |
| Незалежні | Al Jazeera | катарський мовник, фінансується державою Катар; RSS + сторінки (за українською тематикою матеріалів мало) | працює | 151 |
| Незалежні | Meduza (RU, EN) | незалежне видання у вигнанні (Латвія); RSS з повним текстом (≈30 останніх матеріалів на мову); у РФ визнано «небажаною організацією» | працює | 91 |
| Незалежні | Kyiv Independent | українське приватне англомовне видання; позиція може бути проукраїнською — у «незалежних» умовно | працює | 525 |
Джерела, перевірені, але не використовувані або доступні лише частково:
- Reuters — HTTP 401: потрібні JS/cookies — не використовується
- Укрінформ / Ukrinform — ukrinform.ua і .net відповідають 403 на будь-які запити — не використовується
- Коммерсантъ — RSS віддається, але robots.txt забороняє автоматичне читання сторінок статей — не використовується
- Lenta.ru — robots.txt забороняє автоматичне читання сторінок статей — не використовується
- РБК (rbc.ru) — HTTP 401 — не використовується
- ISW — сторінки звітів віддаються, але це аналітичні дайджести, а не репортажі про окремі події — не використовується
- Медіазона, Euronews, УНІАН — RSS віддається (robots.txt не забороняє), але джерела поки не підключені — можна додати пізніше
- Генштаб ЗСУ (zsu.gov.ua) — сайт віддає 200, але вміст будується JS; напряму не збирається (його зведення цитують зібрані українські видання)
Обмеження:
- Глибина збору обмежена тим, що віддають RSS, мапи сайту й архіви: у RIA, BBC, France 24, Meduza, Guardian, DW, Interfax та ін. частина матеріалів за минулі дні недоступна.
- У ТАСС російською збираються лише заголовки й ліди з RSS; у Міноборони РФ — тексти дописів Telegram-каналу (публічне веб-превʼю).
- Російська група складається з державних і державно-лояльних джерел; українська — з публічного мовника та приватних видань, а Kyiv Independent належить до «незалежних» умовно. «Незалежність» — приблизне поняття.
- Незалежної перевірки фактів у проєкті немає.
Контакти
Адресу для зворотного зв’язку ще не налаштовано: зараз у посиланнях вказано приклад. Повідомити про помилку або запропонувати джерело: написати електронною поштою (feedback@example.com). Журнал виправлень.