Привет. Прошло уже почти полгода как я сделал новостной агрегатор каналов в Телеграме с открытым исходным кодом. Краткую статью про него можно прочитать на VC. Здесь же я бы хотел поделиться некоторыми интересными вещами, которые я нашёл в данных за всё время работы агрегатора.
Дисклеймер 1: многое из этого отчёта может показаться политизированным, особенно некоторые примеры новостей. Но здесь я не делаю никаких выводов про то, кто прав, а кто виноват; кто грязный пропагандист, а кто носитель священной истины.
Дисклеймер 2: это не руководство по визуализации данных средствами Plotly и PyVis. В самой статье я не привожу код и не объясняю, почему он устроен именно так. При этом Colab с кодом открыт, и примеры оттуда можно использовать для своих задач.
При подготовке этого отчёта я вдохновлялся несколькими вещами:
NewsViz - проект ODS ML4SG по визуализации тем в новостях, статья о нём. Впрочем, в финальной версии отчёта никаких тематических моделей нет, уж слишком они сложны для понимания.
Упомянутая в той же статье визуализация разницы освещения разных событий американскими телеканалами.
Описание данных
Всего в коллекции около 225 тысяч документов с 5 апреля по 6 августа из 59 каналов основного выпуска, и около 4 тысяч состоящих из них сюжетов. На картинке ниже можно увидеть распределение количества документов и сюжетов во времени.
Что тут можно увидеть:
меньшее количество документов по выходным
общее уменьшение количества документов до конца июля
рост в начале августа: добавил каналы для технологического выпуска
дыра в мае: закончилось место на диске и часть данных не сохранилась
уменьшение количества сюжетов в начале мая: измененил настройки кластеризации
Деление каналов по группам
Каналы в рамках основного выпуска новостей разделены на три категории: красные (прогосударственные, консервативные), синие (оппозиционные, зарубежные, либеральные) и фиолетовые (нейтральные).
Разделены они на глаз, но есть свидетельства того, что это деление разумное.
Первое свидетельство — Word2Vec-like модель, где вместо предложений сюжеты, а вместо слов каналы. В результате её работы для каждого канала получается вектор в некотором пространстве. Чем вероятнее каналы встречаются в одних и тех же сюжетах, тем ближе должны лежать их векторы. Подобная визуализация есть на картинке ниже. Цветами отмечены разные группы источников. Красная и синяя группы явно выделяются на этой картинке.
Другое свидетельство — граф цитирований. Рёбра в нём означают наличие цитирований одними каналами других, размер вершин — это их PageRank в этом графе.
Видно, что на пару красных источников ссылаются почти все. Но в остальном графе есть чёткие сети синих и красных каналов.
Есть ли события, освещаемые только одной стороной?
Первый способ ответить на этот вопрос — посмотреть сами сюжеты. Сэмплировать их можно по-разному, в таблицах ниже приведены самые просматриваемые (по совокупности просмотров на документах) и случайные сюжеты каждой из сторон.
Второй способ — облака слов.
В целом видно, что различия в освещаемых событиях есть. Обычно это либо события, выставляющие другую сторону в плохом свете, либо продвигающие свою точку зрения, либо просто локальные новости.
Правда ли, что одни и те же события могут освещаться по-разному?
На этот вопрос ответить немного сложнее. С одной стороны, у нас есть данные кластеризации, которая пыталась склеить документы про одно и то же. Мы могли бы посмотреть на наиболее отличающиеся документы от разных сторон внутри одного сюжета. С другой стороны, кластеризация делает ошибки, и большинство таких пар будут именно этими ошибками.
Поэтому я выбрал путь компромисса. Примеры ниже отобраны вручную среди всех подобных пар документов (внутри одного кластера + с разных сторон + с большим расстоянием между векторами) для показа наличия разных точек зрения на одни и те же события.
Содержание таблицы примерно отражает то, что мы видели на иллюстрации в самом начале статьи.
Есть ли запретные термины или типичные штампы?
Здесь мы воспользуемся визуализацией отсюда. Идея в том, чтобы взять 3 источника с разными точками зрения и посчитать употребления ими разных слов. На картинке ниже я привожу 4 субъективно интересных примера слов-штампов, но в Колабе эта визуализация интерактивна.
Заключение
Здесь приведены не все возможные способы исследования полученных данных. Более того, приведённые здесь примеры — малая часть даже из моих экспериментов. Если ты, читатель, знаешь как сделать лучше — данные открыты и регулярно обновляются. Буду рад увидеть другую аналитику.
Основная же мысль этой статьи проста: будьте аккуратны с теми источниками информации, которые используете. Пользуйтесь новостными агрегаторами — так вы хотя бы будете получать информацию из разных источников. К тому же и новостных агрегаторов сейчас существует немало:
Яндекс.Новости (субъективно красный)
The True Story (субъективно синий, ещё не конца запустившийся)
НЯН (мой агрегатор, данные которого я здесь и использовал)
И как говорил классик, "берегите себя и своих близких!".
Ссылки
Код в Google Colab: ссылка на ноутбук
Оригинальные данные: ссылка на архив
Код агрегатора: ссылка на Github
Комментарии (19)
vanxant
27.08.2022 17:45Прикольная идея, неплохая реализация. Список каналов бы немного сбалансировать, а так норм.
NyanNyanovich Автор
27.08.2022 18:02+2Спасибо!
С каналами вот какая история: сейчас количество "красных" и "синих" сюжетов примерно одинаковое, в архиве примерно 300 сюжетов с каждой стороны. То есть 10 красных каналов производят примерно столько же сюжетов, сколько 28 синих.
Причины этого не берусь точно определять. Например, это может быть разный объём финансирования или тот факт, что новости по "методичке" лучше склеиваются в сюжеты. Кроме того, баланс сюжетов сильно различается в будни и в выходные: в будни обычно доминируют "красные", а в выходные — "синие".
Справедливое освещение, в том числе по количеству сюжетов на выходе, и было моей целью.
NikSmirnov
27.08.2022 23:27Находясь в обществе с преобладающими синими новостями очень удобно оценивать "цвет" новостей по расположению обыкновенного пограничного столба на международно признанных границах. Если столб находится прямо передо мной - можно оценивать способ освещения новостей. А если между мной и столбом появляется третье лицо, то цвет новостей отходит на второй план до возвращения третьего лица на исходную позицию.
NyanNyanovich Автор
28.08.2022 00:31По-моему понимание цвета новостей большинством людей может уменьшить время возвращения третьего лица на исходную позицию, а ретроспективно могло бы и повлиять на сам факт его выдвижения с неё. Этому у меня нет доказательств, но мой здравый смысл подсказывает именно так.
Serdechnyy
27.08.2022 23:58В начале года проводили исследования на базе Воронежского государственного технического университета по анализу изменений ландшафта telegram-каналов. Анализ проводили с использованием методологии информационного картографирования (http://www.techbook.ru/book.php?id_book=1225) применительно к графу упоминаний каналов. Видно, как структура информационного пространства менялась каждую неделю с момента начала специальной военной операции. Некоторые данные по исследованиям размещены на сайте проекта "Безопасный Интернет" (https://безопасный-интернет.рф/информационная-картография/)
Serdechnyy
28.08.2022 08:19+3Граф цитирования telegram-каналов позволяет отобразить основные кластеры и "увидеть" ландшафт информационного пространства соответствующей социальной платформы. В основе кластерообразующих признаков тематическое, языковое и географическое сходство каналов.
В каналах обычно цитируются тематически схожие или дружественные каналы. Данное свойство характерно для всей системы в целом, но может нарушаться для отдельных каналов.
Эта особенность определяет локализацию канала в определённой области, основные из которых отмечены на информационной карте. Чем больше расстояние между кластерами, тех сильнее отличается точка зрения на освещаемые события и процессы
tuxi
28.08.2022 00:08А можно это применить к каналам инфоцыган, которые пампят некоторые бумаги на бирже, чтобы понять откуда начинаются такие памп-вбросы?
NyanNyanovich Автор
28.08.2022 00:19+1Вообще агрегатор можно запустить на любом конечном списке публичных каналов.
В случае же анализа вбросов список каналов во-первых не совсем конечен. Нам бы хотелось бы прокачивать и все каналы, на которые ссылаются уже собранные документы.
А во-вторых что-то я сомневаюсь, что каналы инфоцыган обязательно публичны, что добавляет технических сложностей.
Но глобально это вполне реализуемо.
Serdechnyy
28.08.2022 18:59Понравилась реализация идеи с распределением ключевых слов по трём координатным источникам. Решил поглядеть, а где эти источники окажутся на Информационной карте telegram-каналов. Вот что получилось. Три ключевых источника на карте отмечены звёздочками. Заодно разместил telegram-каналы из предоставленного в статье набора данных (отмечены синими кругами)
Dmitry_Dor
NyanNyanovich Автор
Да, это тоже отличная картинка, к тому же совпадают цвета.
Но в отличие от использованной в статье, для неё не так легко отследить авторство. Картинка с кораблями появилась в 2015, вот твит автора об этом. Найти же источник этой картинки у меня не получилось, и она, кажется, появилась позднее.
Dmitry_Dor
Но из какого источника я её туда «спионерил», насколько раньше она в нем появилась, и кто автор картинки, я не могу сказать…
Crimento
Верхний заголовок явно с Лентача, те же шрифты и цвета, но остальное кто-то изменял и вносил свои идеи
martein
Мораль как раз в том, что цвета и совпадают и не совпадают одновременно, а не, как бы вам ни казалось, совпадают.
NyanNyanovich Автор
Я тут рассматривал в основном российские СМИ. И с этой позиции цвета именно что совпадают. Это видно, например, по тернарным графикам, в которых слова "националист", "боевик", "спецоперация" использует только одна сторона. А вот в украинских СМИ действительно будет зеркальная ситуация.
yellow-elephant
Мне больше по душе история по Сабатону: