ІПСО/Фейки — Як знайти та розпізнати

Всім привіт хочу поділитися з Вами історією про те, як я намагався очистити свій особистий інфопростір від фейків і сміття і як це вилилося в проект, який користуються військові.

Але для початку кілька слів про себе. Мене звуть Михайло мені 36 років. Одружений, 4 дітей. Народився і живу у найкращому місті на землі — Харкові. Працюю на комерційній основі розробником вже 18 років.

Початок

Коли йшла революція гідності було дуже багато фейків і вкидів в інфопростір. І я зловив себе на тому, що майже кожну більш-менш гучну новину я сиджу і перевіряю ще раз мінімум на 5-6 сайтах щоб зрозуміти — це просто якась ліва інформація або це реальні події. І тут прийшло розуміння, що швидше за все так роблю не тільки я, а ще тисячі людей витрачають тисячі годин на такі крос перевірки — було прийнято рішення спробувати склепати на колінці «альфа» версію web проекту. (Скільки неочікуванних речей мене чекало попереду...)

Було взято wordpress і прикручено кілька RSS стрічок для автоматичного збирання даних. Через пару днів стало зрозуміло, що сайт просто перетворюється на смітник новин, а також є досить багато сайтів, які не віддають повний текст новини по RSS. Значить, рухаємося далі.

Бета версія

На той момент найпросунутішим фреймворком був Yii2 і в мене був найбільший досвід саме з цим фреймворком. Тому вибір припав саме на нього. Була реалізована базова схема і найпростіша реалізація для перевірки того, що схема з Yii2 робоча. Отже для базової схеми було взято: Yii2, PostgreSQL, ElasticSearch, RabbitMQ.

Для першої версії були взяті сайти, у яких в RSS стрічці міститься повний контент новини. І було реалізовано алгоритм «групування» новин певною мірою схожості. Після кількох днів гри з налаштуванням знайшлися оптимальні значення та з’явилися перші цікаві результати. Паралельно був запущений простий UI, в якому можна було відкрити новину і на одній сторінці відразу подивитися як ця новина викладена різними джерелами. І після перших днів тестів здалося дуже цікава картина відразу було видно, що різні групи сайтів просувають однаковий наратив і грубо кажучи ти відразу ж бачиш те, що ця група сайтів дотримується приблизно однієї позиції.

Потім стало зрозуміло, що потрібно додавати більше джерел, щоб отримати більше інформації, але далеко не у всіх сайтів був повний текст новини в RSS стрічці. І тут нове цікаве технічне завдання: в RSS міститься посилання на новину — але як визначити на сторінці, що новина, а що ні? Перша спроба була скористатися якимось набором патернів для css селекторів, але ця спроба розбилася про реальність того, що сайти зроблені абсолютно по-різному. Тому було прийнято радикальне рішення — була написана спеціальна бібліотека, в якій за допомогою математичної моделі знаходився основний контент новини. Це було реалізовано за рахунок обліку глибини вкладення та кількості текстового контенту всередині тегів. І ця бібліотека в більшості випадків видавала справді контент, відсіваючи зайве сміття. Однак були випадки, коли коментар під новиною містив більше тексту, ніж сама новина — у таких випадках бібліотека помилялася і приймала за реальний контент цей коментар.

Було додано ТОП-100 Українських сайтів новин і база почала наповнюватися. Навіть маючи таку невелику кількість даних вже можна було почати відрізняти фейки найпримітивнішим чином — якщо новина представлена ​​лише на 1-2-х не найавторитетніших сайтах — то з ймовірністю 99% це фейк. Якщо ж новина представлена ​​на всіх топових сайтах, то ця новина правдива, але може бути подана зовсім з різних ракурсів. Таким чином відпала необхідність лазити купою сайтів — можна відкрити тільки агрегатор і побачити як і ким представлена ​​та чи інша область.

До речі, згодом на сайт почав звертати увагу роскомнагляд, посилаючи злісні вимоги про видалення інформації. Вони були послані кудись подалі і мабуть на знак образи завели на мене кримінальні справи =).

Комерційне застосування

Через деякий час системою зацікавилося консалтингове агентство. Після тестів було ухвалено рішення щодо подальшого розвитку проекту в рамках потреб агентства.

Першим етапом було розширення бази сайтів. Внесли практично всі доступні сайти новин — їх було близько 10 000. І з’явилася нова проблема — «погані» сайти з точки зору якості та технологій. Далеко не всі сайти мали RSS стрічку або sitemap. Тому був реалізований скрапер/павук, який просто ходить по сайту і стягує максимальну кількість контенту, намагаючись відсіяти сміття. На цьому етапі зустрілася ще вкрай цікава та несподівана проблема — сайти «низької» якості просто лягали якщо намагатися в 10 потоків збирати з них дані — тому довелося вводити обмеження на навантаження на сайт.

Паралельно з проблемою «поганих» сайтів виявилося завдання «хороших» сайтів — багато сайтів генеруються динамічно у клієнта — а це означає, що просто зробивши «curl» запит вже не витягнеш даних — довелося піднімати цілу ферму з puppeteer з хромом. Але і в цьому моменті теж був нюанс «хороших» сайтів — вони захищаються від скрапінгу — Але це вирішилося підняттям N кількості проксей.

Facebook

Але для повноцінного комерційного використання недостатньо тільки новинних сайтів — необхідні ще й соціальні мережі. І першою соцмережею для аналізу було взято facebook. Скільки разів ми згадували Марка Цукерберга та його друзів поки що шукали підходи до роботи з фейсбуком. Після 4-6 тижнів у нас таки був робочий прототип, який повністю емулював дії користувача та збирав оновлення з топових акаунтів. І тут чекало наступне відкриття — а всі топові акаунти не є «вільними» — всі вони транслюють дані з «методичок». Провівши аналіз можна було розбити на групи як сайти так і фейсбук блогерів та чітко їх об’єднати та сказати яка група які настрої транслює.

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

Телеграм

Наступним на аналіз зайшов телеграм. Він також має захист від збору даних, але більш примітивний, ніж фейсбук — тому збирати з нього дані було вже не так важко. Але знову згадували Павла Дурова та його друзів. У якихось місцях телеграм прямий класно реалізований і з ним зручно працювати — а в якихось через «терни до зірок». Але після того як базова взаємодія була налаштована і додалися основні канали, то була виявлена ​​приблизно та ж картина що і на фейсбук, у плані «свободи» думки. Але, до речі, у телеграмі були хоч трохи схожі на «незалежні» канали.

Боротьба з фейками

Отже, маючи вже досить велику кількість джерел даних (приблизно 15 000) був доступний масив даних і зрозумілі групи джерел за загальним наративам. Це допомагало зрозуміти хто публікує та розкручує той чи інший контент, щоб відсіяти «паразитну» інформацію. Усередині проекту було зроблено ще багато цікавого, що виходить за межі цієї статті.

Висновок

Під час повномасштабного вторгнення цією системою зацікавилися військові, і вона була повністю безкоштовно представлена ​​ним. За запитом було внесено доопрацювання та доробки до системи та планувалося її впровадження. Сподіваюся, її використовують для боротьби в інфополі.

Дякуємо за увагу та будьте уважні до контенту, який споживаєте!

👍ПодобаєтьсяСподобалось5
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Як знайти іпсо чи фейки?) все дуже просто.
Якщо хтось за щось критикує владу — це іпсо-фейк-диверсант-рф наративи-пропагандист і т.д.

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

Вот смотрите, уже как раз и новый закон принят:
m.censor.net/...​kommentarii-o-chinovnikah
«СМИ будут наказывать за негативные комментарии читателей о чиновниках, если их не удалят в течение 3 дней».
По-моему над вами тут уже вполне откровенно глумятся. Есть возражения?

Круті технічні челенджі 👍
Із задоволенням почитав би більш хардкорну статтю, із більшими деталями про те, як вдалося реалізувати нетривіальні задачі.

Шкода що вільного доступу до системи ще немає.
Я би точно користувався, і був би готовий за це платити.

Насправді хардкорних задач було дуже багато і нажаль не вдалося більше ніж вдалося ;)

Цікаво б було побачити шось на кшталт тижневого дайджесту. Типу «цього тижня просувались отакі теми групою отаких джерел, реакція на них була отака, але 80% коментаторів були боти»

Так-так, щось на кшталт дашбоарду фейків.
Було б дуже корисно для соціуму.

А які юзкейси, якщо в нас будь-що негативне про Україну рахується як ІПСО?

Ну система почала працювати ще в 2014-му році — тоді не було «тренду» на те щоб все помічати як ІПСО.

Один із коммерційних юзкейсів — аналізувати реакцію на рекламну компанію — чи є зміна в тональності стосовно компаніі/продукта в інфополі.

Або ще юзкейс — провести аналіз як людина/бренд представлена (чи не представлена) в інфополі

Коммерційних юзкейсів дуже велика кількість

І при цьому вони беруть за основу російські закони щодо цензури. Ммм справжній classic, я б навіть сказав pleasantly. Нас чекає срака, і жарти про цифровий гулаг, перестануть бути жартами, але ми цього не дізнаємось, бо коментарі почистять.

Надважливий проект! Не плануєте монетизувати?

Я не проти монетизаціі — але це геть не те у чому я маю хист — я розробник ;)

Підписатись на коментарі