Что такое фейковые новости

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

Кто-то может сказать, что население Нью-Йорка составляет 8,406 миллиона человек, он очень грязный и шумный, а другие могут сказать, что его население составляет 8,406 миллиона человек, но город потрясающий. Оба они являются правдивыми утверждениями, и поэтому мы не можем сказать, что одно или другое является фальшивкой, но оба они предвзяты.

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

Для этого я использовал более 52 000 статей. 12 000 статей были признаны поддельными и загружены с сайта kaggle.com. 29 000 из The Guardian и 12 000 из NYT с использованием API NYT и The Guardian для очистки статей.

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

Зачем обнаруживать фейковые новости?

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

Какая из них подделка?

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

Трудно обнаружить с первого взгляда, не правда ли? Посмотрим ответ.

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

И вот ответ ...

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

Как обнаружить фейковые новости?

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

Набор данных

Я собрал более 200 000 статей и отфильтровал их по теме и диапазону дат. В итоге у меня было 52 000 статей за 2016–2017 годы в журналах Business, Politics, U.S. News и The World. 12 000 из них были названы фейковыми новостями, а 40 000 из них были настоящими новостями. Я использовал NYT API и Guardian Post API, чтобы получать настоящие новости, и я использовал набор данных фейковых новостей Kaggle для фейковых новостей.

Алгоритмы машинного обучения

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

После векторизации документов с помощью TF-IDF случайный лес дал% 82 баллов F1, а XGBoost дал% 65. По сути, оценка F1 оптимизирует модель на основе ложноотрицательных и ложноположительных результатов. В нашем случае они оба одинаково важны. Я оптимизировал свою модель для оценки F1, поскольку точность и отзывчивость одинаково важны для этой проблемы. После этого я получил 95% точности от логистической регрессии, используя основную часть статьи, и уменьшил количество столбцов 5700 с 8 миллионов, используя поиск по сетке для векторизатора и регрессионной модели.

На рисунке выше показано количество столбцов по оси x и размер коэффициентов до поиска по сетке. А на рисунке ниже показано их количество после поиска по сетке.

Получив действительно высокий балл F1 и точность, каждый специалист по анализу данных должен задать вопрос: «Не переборщил ли я? В чем заключается мой компромисс между отклонением и смещением? Могу ли я получить такой же результат с меньшим количеством данных? »

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

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

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

Веб-сайт

Вот как выглядит сайт…

После копирования и вставки статьи мы нажимаем кнопку проверки, и результат ...

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

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

Будущая работа

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

Код доступен

Код доступен на www.github.com/genyunus/Detecting_Fake_News.