Краткий пересказ: мы сделали программу, определяющую надежность новостей с точностью 95% (на валидационной выборке) при помощи машинного обучения и технологий обработки естественного языка. Скачать ее можно здесь. В условиях реальной действительности точность может оказаться несколько ниже, особенно по прошествии некоторого времени, так как каноны написания новостных статей будут меняться.

Глядя, как бурно развиваются машинное обучение и обработка естественного языка, я подумал: чем черт не шутит, может быть, мне удастся создать модель, которая выявляла бы новостной контент с недостоверной информацией, и тем самым хоть чуть-чуть сгладить катастрофические последствия, которые приносит сейчас распространение фейковых новостей.



С этим можно поспорить, но, на мой взгляд, самый сложный этап в создании собственной модели машинного обучения — сбор материалов для обучения. Когда я обучал модель для распознавания лиц, мне пришлось несколько дней собирать фотографии каждого из игроков лиги НБА в сезоне 2017/2018. Теперь же я и не подозревал, что мне придется провести погруженным в этот процесс несколько мучительных месяцев и столкнуться с очень неприятными и жуткими вещами, которые люди пытаются выдать за настоящие новости и надежную информацию.

Определение фейка


Первое же препятствия стало для меня неожиданностью. Изучив сайты с фейковыми новостями повнимательнее, я быстро обнаружил, что существует множество различных категорий, к которым могут относиться ложные сведения. Есть статьи с откровенным враньем, есть такие, которые приводят реальные факты, но затем неверно их интерпретируют, есть псевдонаучные тексты, есть просто эссе с мнениями автора, замаскированные под новостные заметки, есть сатира, есть компиляторские статьи, состоящие в основном из чужих твитов и цитат. Я немного погуглил и нашел разные классификации, в которых люди пытались разбить такие сайты на группы — «сатира», «фейковые», «вводящие в заблуждение» и так далее.

Я решил, что можно с тем же успехом взять их за основу, и пошел по списку приведенных сайтов, чтобы набрать оттуда примеров. Практически сразу возникла проблема: некоторые из сайтов, помеченные как «фейковые» или «вводящие в заблуждение» на самом деле содержали и достоверные статьи. Я понял, что собирать с них данные без проверки на тривиальные ошибки не удастся.

Тогда же я стал задаваться вопросом: стоит ли учитывать сатиру и субъективные тексты и если да, то куда их относить — к достоверным материалам, фейку или в отдельную категорию?

Анализ тональности


Прокорпев неделю над сайтами с фейковыми новостями, я задумался, не слишком ли усложняю проблему. Возможно, стоит просто взять какие-то из уже существующих обучающих моделей для анализа тональности и попытаться выявить закономерности. Я решил сделать простенький инструмент, который будет собирать данные: заголовки, описания, информацию об авторах и сам текст, и отсылать их модели для анализа тональности. Для последнего я использовал Textbox — это было удобно, потому что я могу запускать его локально, на своей машине, и быстро получать результаты.

Textbox выдает оценку тональности, которую можно интерпретировать как позитивную или негативную. Затем я сварганил алгоритм, который приписывал тональности каждой разновидности выгруженных данных (заголовок, авторы, текст и так далее) определенную степень значимости, и собрал всю систему воедино, чтобы посмотреть, удастся ли мне получить общую оценку новостной статьи.

Сначала все вроде бы шло неплохо, но уже после седьмой или восьмой загруженной статьи система стала проседать. В общем и целом, все это и близко не стояло к тому инструменту для выявления фейковых новостей, который я хотел создать.

Это был полный провал.

Обработка естественного языка


На этом этапе мой друг Дэвид Хернандез посоветовал мне обучить модель самостоятельно обрабатывать текст. Чтобы это сделать, нам нужно было как можно больше примеров из разных категорий текстов, которые модель, по нашему замыслу, должна была бы уметь распознавать.

Так как я уже замучился в своих попытках выявить паттерны в фейковых сайтах, мы решили просто взять и собрать данные с доменов, категория которых нам точно была известна, чтобы набрать базу побыстрее. Буквально через несколько дней мой плохонький инструмент насобирал объем контента, который мы сочли достаточным для обучения модели.

Результат был хреновым. Копнув наши обучающие материалы поглубже, мы обнаружили, что их просто-напросто невозможно аккуратно расфасовать по четко ограниченным категориям, как нам бы хотелось. Где-то фейковые новости были перемешаны с нормальными, где-то попадались сплошь посты со сторонних блогов, а какие-то статьи на 90% состояли из твитов Трампа. Становилось ясно, что всю нашу базу придется перерабатывать с нуля.

Тут-то и началось самое веселье.

В одну прекрасную субботу я взялся за этот бесконечный процесс: вручную просматривать каждую статью, определять, в какую категорию она попадает, а затем неуклюже копировать ее в громадную таблицу, которая становилась все необъятнее. В этих статьях попадались по-настоящему отвратительные, злобные, расистские высказывания, на которые я поначалу старался не обращать внимания. Но уже после первых нескольких сотен они стали на меня давить. Перед глазами все рябило, цветовосприятие начало давать сбои, а состояние духа стало сильно подавленным. Как наша цивилизация докатилась до такого? Почему люди неспособны критически воспринимать информацию? Есть ли у нас еще какая-то надежда? Так все продолжалось еще несколько дней, пока я пытался наскрести достаточно материалов, чтобы модель была значимой.

Я поймал себя на том, что уже сам не уверен, что подразумеваю под «фейковыми новостями», что злюсь, когда вижу в какой-нибудь статье точку зрения, с которой не согласен, и с трудом перебарываю искушение брать только то, что мне кажется верным. В конце концов, что вообще можно считать верным, а что — нет?

Но в конце концов я все-таки дошел до того магического числа, к которому стремился, и с огромным облегчением отослал материалы Дэвиду.

На следующий день он снова провел обучение. Я с нетерпением ожидал результатов.
Мы достигли точности примерно в 70%. В первую минуту мне показалось, что это прекрасный результат. Но потом, опробовав систему на выборочной проверке нескольких рандомных статей из Сети, я понял, что реальной пользы от нее никому не будет.

Это был полный провал.

Fakebox


Возвращаемся к стадии рисования на доске. В чем я ошибся? Дэвид предположил, что, возможно, упрощение механизма — ключ к более высокой точности. Следуя его совету, я всерьез задумался над тем, какую проблему пытаюсь решить. И тут меня озарило: может быть, решение состоит в том, чтобы выявлять не фейковые новости, а достоверные. Достоверные новости куда проще свести в единую категорию. Они основываются на фактах, излагают их коротко и ясно и содержат минимум субъективной интерпретации. И надежных ресурсов, откуда можно набрать материалы, для них хватает.

Так что я вернулся в Интернет и в очередной раз приступил к сбору новой базы данных для обучения. Я решил распределять материалы по двум группам: истинные и неистинные. К неистинным относились сатирические заметки, статьи с субъективными мнениями, фейковые новости и все остальное, что не содержало строго фактической информации и не укладывалось в стандарты Associated Press.

На это у меня ушло еще несколько недель. Каждый день я тратил несколько часов на то, чтобы собрать новый контент со всех сайтов, которые вы только можете себе представить, от The Onion до Reuters. Я загрузил в гигантскую таблицу несколько тысяч примеров истинных и неистинных текстов, и каждый день их число возрастало еще на несколько сотен. Наконец, я решил, что материалов набралось достаточно для повторной попытки. Я отослал таблицу Дэвиду и не мог дождаться результатов.

Увидев точность выше 95%, я чуть не запрыгал от радости. Значит, нам все-таки удалось выявить паттерны в написании статей, которые отличают достоверные новости от всего того, что не стоит принимать всерьез.

Это был успех (ну, в каком-то смысле)!

Фейковым новостям — бой


Весь смысл этих махинаций состоял в том, чтобы препятствовать распространению ложной информации, поэтому я с большим удовольствием делюсь результатом с вами. Мы назвали систему Fakebox, и пользоваться ей очень просто. Нужно только вставить текст статьи, которая вызывает у вас сомнения, и нажать на кнопку «Ananlyze».



При помощи REST API Fakebox можно интегрировать в любую среду. Это контейнер Docker, так что деплоить и масштабировать его вы можете куда и как пожелаете. Перелопачивайте неограниченные объемы контента с нужной вам скоростью и автоматически помечайте все то, что требует вашего внимания.

Помните: система определяет, написан ли текст языком, характерным для достоверной новостной статьи. Если она выдает очень низкую оценку, это значит, что текст не является основанной на фактах новостной заметкой в ее классическом виде: это может быть дезинформация, сатира, субъективное мнение автора или что-то еще.

Если обобщить, мы научили модель анализировать, как написан текст, и определять, есть ли в нем оценочная лексика, авторские суждения, слова с эмоциональной окраской или нецензурные выражения. Она может давать сбои, если текст очень короткий или преимущественно состоит из цитат (или твитов) других людей. Fakebox, конечно, не решит проблему фейковых новостей окончательно, но может помочь выявить те материалы, к которым нужно относиться с долей скепсиса. Наслаждайтесь!

Комментарии (42)


  1. semen-pro
    26.01.2018 14:17

    Это как VirusTotal или Антиплагиат: после написания фейковой статьи нужно прогнать ее через ваш сервис, если срабатывает — переделать.


    1. BiTHacK
      26.01.2018 14:23

      Прогонять вирус после его написания через VirusTotal не самая хорошая идея, т.к. проверяемые файлы передаются AV.


      1. Rambalac
        26.01.2018 15:09

        Del


      1. boblenin
        26.01.2018 21:05
        +2

        Все все? Возникает сразу идея ddos


    1. pda0
      26.01.2018 22:23
      +1

      Пффф… Конкурентные нейросети. Одна обучается по тем же критериям отличать правдивые новости, а вторая — её обманывать. В конце у нас будут такие фейковые статьи, которые окажутся более настоящими, чем настоящие. Даже проверку за пределами интернета будут проходить. :)


      1. Antervis
        27.01.2018 09:28

        у людей-то не всегда получается генерировать правдоподобные фейки, а вы говорите о перекладывании этой задачи на нейросеть


        1. San66
          28.01.2018 21:19

          Зато нейросеть может заDDOSить людей.


      1. roryorangepants
        27.01.2018 12:03
        +1

        К сожалению, в данный момент GANы толком не научились использовать для генерации текста.


      1. lowride
        27.01.2018 17:32

        Дойдут до того что искусственные интеллекты будут с друг другом воевать. Был кстати такой рассказ. Там люди полностью устранились от управления боевыми роботами, а роботы воевали сами друг с другом дальше.


        1. nidalee
          27.01.2018 23:19

          1. Deosis
            29.01.2018 09:37

            Есть ещё один рассказ, в котором все роботы обоих сторон отказались воевать, узнав, что среди них прятался человек в скафандре.


    1. Narical
      27.01.2018 17:23

      И в итоге придется убрать из статьи все основные пропагандистские инструменты и поменять тональность. И «польза» от нее в том смысле, для чего она писала, снизится в несколько раз.


  1. VladVin
    26.01.2018 14:26

    Укажите, по какой метрике считали точность, и какая была выборка — сколько позитивов и негативов


    1. Semy
      26.01.2018 15:20

      Статья отмечена как перевод. Вы у кого спрашиваете?


      1. VladVin
        26.01.2018 15:44

        Ой, точно, извиняюсь. В оригинальной тоже никаких упоминаний не нашел


  1. myrkoxx
    26.01.2018 15:24

    И тут меня озарило: может быть, решение состоит в том, чтобы выявлять не фейковые новости, а достоверные. Достоверные новости куда проще свести в единую категорию.

    Хмм. Похоже на «Все счастливые семьи счастливы одинаково, каждая несчастливая семья несчастлива по-своему». Как раз где-то на Хабре недавно даже статья проскакивала.


  1. fediq
    26.01.2018 15:30

    Интересно, как автор понял, что он сам в состоянии отделить настоящие новости от фейковых и сформировать обучающую выборку? Можно ли использовать его дар, чтобы методом перебора понять, кто же все-таки сбил малайзийский Боинг?


    1. Revertis
      26.01.2018 15:43

      Мне кажется, что статья про Боинг может быть честной, но показания свидетелей в ней могут быть ложными. Причём, даже непреднамеренно, ибо часто показания свидетелей просто какой-то бред.


    1. San66
      26.01.2018 16:13

      «Если факты противоречат моей теории, тем хуже для фактов» не иначе.

      А Боинг сбил тот, на кого укажут секретные информаторы WADA.


    1. Am0ralist
      26.01.2018 16:19

      Да ладно Боинг, Кенеди то кто убил?


      1. vikarti
        27.01.2018 15:26

        Более простая чем то ситуация. И более провокационная
        Статья ну например о выборах губернатора Севастополя. Репортер на тех выборах был и дословно описывает что видел, с фотками + ссылка на документ в .gov.ru описывающий тоже самое(и тому что репортер написал — документ не противоречит).

        Статья достоверная?
        А если учесть что с официальной точки Украины — не может быть никаких выборов губернатора Севастополя а xxx.gov.ru в вопросах по Севастополю точно не авторитет?

        А статья что решением Верховной рады аэропорт симферополя именуется «Международный аэропорт Симферополь имени Амет-Хана Султана» и в статье просто написано что аэропорт — переименован без указания КЕМ? А если указано про Раду но без комментария про то почему данное решение для жителей Крыма — не имеет особого значения?

        Что делать с такими статьями условному гуглу если есть желание учитывать достоверность в ранжировании? А условному яндексу?


        1. Am0ralist
          29.01.2018 11:08

          Что делать с такими статьями условному гуглу если есть желание учитывать достоверность в ранжировании?
          Как там было?
          «Google объявил о глобальном запуске механизма проверки новостей на фейки и вбросы. При этом он сам не будет сам заниматься проверкой новостей, отдав это дело на аутсорс «международному сообществу репортеров», включающему в себя 115 активных организаций по всему миру (и ни одного на территории РФ).
          Например, в списке одобренных Google «проверятелей фактов» 4 украинские организации, включая stорfаkе.оrg, а информацию про ситуацию в Южной Осетии 2008 года будет проверять грузинская организация, финансируемая (судя по описанию) европейскими фондами и посольством США в Грузии.»
          А условному яндексу?
          Ну вы поняли, да?


        1. VolCh
          29.01.2018 11:31

          Это всё примеры достоверности, ведь искажения фактов нет. Если кому-то интересны правовые и(или) практические последствия событий под названиями "выборы губернатора Севастополя" или "переименование аэропорт симферополя", то он углубится в тему и найдёт другие достоверные новости, в том числе новости о занятии Россией Крыма и последующем включении его в свой состав и объявление Украиной Крыма временно оккупированной территорией и сделает выводы о последствиях на основе фактов самостоятельно или обратится к аналитическим статьям авторитетных для себя источников. Но это будут уже не новости, а чьё-то мнение, недостоверным может быть только его изложение.


  1. T-362
    26.01.2018 15:55

    Не дайте темные боги варпа Гуглу добраться до таких идей. Я уже представляю диалог:


    — Ваш сайт был замечен нашим алгоритмом в распространении фейковых новостей, вы отключены от рекламки и удалены из поисковой выдачи.
    — Но вот же видео, свидетельские показания и ссылки на .gov с подтверждениями!
    — Данный ящик не предназначен для рассмотрения жалоб, обращайтесь по адресу noreply@google.com, ожидаемое время рассмотрения жалобы 845 рабочих дней.


    1. bro-dev
      26.01.2018 17:32
      -3

      ну не знаю, хотя гугл и переходит границы, это все равно на пользу конечному пользователю.


      1. T-362
        26.01.2018 17:45
        +1

        Угу, сует рекламу в звуки природы на ютубе из-за нарушения этим видео копирайтов — монетизируя его в пользу «владельца копирайта», ставшее притчей во языцех качество работы их суппорта, насильное втюхивание своей упоротой соц сети чуть менее чем всюду (что, в прочем, не помогло — она сдохла, а я даже не успел запомнить ее название), выпуск мессенджеров @ закрытие мессенджеров, поисковые и оценочные алгоритмы что в гугле что на ютубе — пихаюшие треш на казахском как самое востребованное по ру сегменту, анализ переписки для таргетинга рекламы.
        Вне сомнения — это все равно на пользу конечному пользователю.


        1. equand
          28.01.2018 14:34

          Добавьте возможность написать фейковый обзор на бизнес понижая их в рейтинге без возможности оспорить или удалить его.


  1. San66
    26.01.2018 16:05

    Следующим шагом объявляем всё, не прошедшее через анализ достоверности как недостоверное, фэйковое и возвращаемся к вопросу о «Министерстве правды» :-)


  1. degs
    26.01.2018 17:31

    Достоверные новости куда проще свести в единую категорию.… И надежных ресурсов, откуда можно набрать материалы, для них хватает.

    Ну-ну, да вы батенька я вижу оптимист.


    1. boblenin
      26.01.2018 21:06

      Интересно как же все-таки оценивались надежные ресурсы? Reuters и The Onion уже успели хорошо запачкаться в однобоковости подачи информации (предвзятости).


      1. VolCh
        27.01.2018 00:45

        Если предвзятость состоит из фильтрации новостей, что публиковать, а что нет, то источник надёжный.


      1. Chamie
        28.01.2018 05:16

        The Onion? Запачкаться? Это шутка такая?


  1. Tantrido
    26.01.2018 18:01

    Молодец Aaron Edell: пока он работал над материалом, сильно расширил своё сознание и понимание процессов в мире, и ещё и другим поможет теперь.


  1. Tortortor
    26.01.2018 22:17

    ты что, против путина?


    1. EvilBeaver
      27.01.2018 00:04

      Как-то толсто. Вы ресурсом не ошиблись?


    1. VolCh
      27.01.2018 00:44

      А что, Путин генерирует фейковые новости?


      1. soniq
        27.01.2018 10:10
        -1

        Если не Путин, то кто?</s>


        1. cl0ne
          28.01.2018 18:43

          Трамп, наверное


  1. sfocusov
    27.01.2018 10:22

    А что будет, если если в настоящие новости записывать статьи «Комсомольской правды», «Тайны Чапман» и «Шоу Малахова»? То есть, действуя от противного, мы получим всё-таки средство выявления фейковых новостей?


    1. Chamie
      28.01.2018 05:18

      Так с этого же и начали.


  1. Frankenstine
    27.01.2018 11:27
    +1

    Херня этот ваш AI. В новостях часто можно увидеть группу одной новости, где идёт утверждение какого-то события или факта, а затем его опровержение, причём примерно таким же языком, на такого же авторитета сайтах. Даже человеку порой трудно определиться какая из них верная. Более того, иногда встречаются правильные новости, не фейковые, но в виде вольного пересказа дабы не быть обвинённым в запрещённом копипасте, выполненного не очень качественного, либо коряво сделанный перевод. А иногда встречаются и нормальные переводы, которые однако искажают смысл и делают статью фейковой из-за непонимания переводчиком предметной области переводимой статьи.


  1. algotrader2013
    27.01.2018 12:33
    +3

    Есть подозрение, что произошла подмена понятий — автор программы научился выявлять то, что не является толстым троллингом и сарказмом, и приписал себе способность выявлять (не)фейки. Но, если фейк писать по шаблону годной новости, подставляя нужные факты и фамилии, то очень сомневаюсь, что нейросейть что-то выяснит.

    Лично я для себя использую следующий алгоритм.
    1) Пытаюсь найти первоисточник. Использую в гугле поиск по точной фразе и отсекая последние дни ограничением выдачи за период. Также важно правильно выбрать точную фразу, потому, что часто новости щедро откопирайчены. Использую поиск по картинке.
    2) Оцениваю сайт первоисточника через similarweb, просто смотрю, какие новости на нем
    3) Проверяю побочные факты, приведенные в статье. Ищу упоминания о ключевых людях/компаниях вне этого инфоповода. Например, может быть упоминание профессора с мировым именем, но невозможно найти ни одной его публикации, или упоминания о его участии в конференции.

    То есть, почти все мои активности завязаны на добывание дополнительной информации (что хорошо, сама концепция интернета способствует этому), и робот может с этим справится лучше человека. В статье же попытка найти черную кошку в темной комнате, где ее нет.