tl; dr - Мы создали детектор фейковых новостей с точностью выше 95% (по набору проверки), который использует машинное обучение и обработку естественного языка, который вы можете скачать здесь. В реальном мире точность может быть ниже, особенно с течением времени и изменением способа написания статей.

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

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

Определение фейковых новостей

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

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

Затем я начал спрашивать себя, должна ли моя модель учитывать сатиру и мнения, и если да, следует ли их считать фальшивыми, настоящими или помещать в отдельную категорию?

Анализ настроений

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

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

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

Неудача.

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

Здесь мой друг Дэвид Эрнандес порекомендовал натренировать модель на самом тексте. Для этого нам понадобится много-много примеров в различных категориях, которые мы хотели бы, чтобы модель могла предсказывать.

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

После нескольких дней работы с сырым скребком у нас был набор данных, который, по нашему мнению, был достаточно большим для обучения модели.

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

Вот когда дела пошли плохо.

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

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

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

На следующий день он снова провел тренировку, так как я с нетерпением ждал результатов.

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

Неудача.

Fakebox

Вернуться к доске для рисования. Что я делал не так? Именно Дэвид предположил, что, возможно, упрощение задачи будет ключом к более высокой степени точности. Так что я действительно подумал о том, какую проблему я пытался решить. Затем меня осенило; возможно, ответ заключается не в обнаружении фейковых новостей, а в обнаружении настоящих новостей. Настоящие новости гораздо проще классифицировать. Это факт и по существу, и практически не имеет интерпретации. И было множество авторитетных источников, из которых можно было получить это.

Итак, я вернулся в Интернет и снова начал собирать данные о тренировках. Я решил разделить все на две категории; реальный и ненастоящий. Notreal включал бы сатиру, авторские статьи, фейковые новости и все остальное, что не было написано сугубо фактическими данными и соответствовало стандартам AP.

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

Я чуть не подпрыгнул от радости, когда увидел, что точность выше 95%. Это означает, что мы обнаружили закономерность в написании статей, позволяющую выявить разницу между настоящими новостями и вещами, к которым вы должны относиться с недоверием.

Успех (вроде)!

Остановить фальшивые новости

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

Вставьте содержание статьи, в которой вы не уверены, и нажмите "Анализировать".

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

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

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

Пожалуйста, наслаждайтесь!