О проекте
Сайт сравнивает, как российские, украинские и независимые СМИ освещают одни и те же события войны в Украине. Всё содержание — карточки событий, пересказы, переводы — создаётся и публикуется автоматически, без ручной проверки перед публикацией. Сайт не устанавливает истину: он показывает, что и как сообщает каждая группа источников, и где версии расходятся.
Методика
Один автоматический конвейер (скрипт 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 — страницы отчётов отдаются, но это аналитические дайджесты, а не репортажи об отдельных событиях — не используется
- Mediazona, Euronews, UNIAN — RSS отдаётся (robots.txt не запрещает), но источники пока не подключены — можно добавить позже
- Генштаб ВСУ (zsu.gov.ua) — сайт отдаёт 200, но содержимое строится JS; напрямую не собирается (его сводки цитируют собранные украинские издания)
Ограничения:
- Глубина сбора ограничена тем, что отдают RSS, карты сайта и архивы: у RIA, BBC, France 24, Meduza, Guardian, DW, Interfax и др. часть материалов за прошлые дни недоступна.
- У ТАСС на русском собираются только заголовки и лиды из RSS; у Минобороны РФ — тексты постов Telegram-канала (публичное веб-превью).
- Российская группа состоит из государственных и государственно-лояльных источников; украинская — из публичного вещателя и частных изданий, а Kyiv Independent относится к «независимым» условно. «Независимость» — приблизительное понятие.
- Независимой проверки фактов в проекте нет.
Контакты
Адрес для обратной связи ещё не настроен: сейчас в ссылках указан пример. Сообщить об ошибке или предложить источник: написать по электронной почте (feedback@example.com). Журнал исправлений.