Автоматическое обнаружение дезинформации о COVID-19

НЛП, Машинное обучение, COVID-19

Обычным гражданам нелегко распознать фейковые новости. И фейковые новости о коронавирусе - не исключение.

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

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

Данные

Как упоминалось в предыдущей статье, я собрал более 1100 новостных статей и сообщений в социальных сетях о COVID-19 из множества новых источников, а затем пометил их. Набор данных можно найти здесь.

Я решил создать несколько десятков новых функций на основе заголовков новостей и тел новостных статей. Позвольте мне объяснить их один за другим.

Заглавные буквы в заголовке

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

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

Стоп-слова в заголовке

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

В заголовках фальшивых новостей меньше стоп-слов, чем у настоящих новостей.

Имя собственное в названии

  • Подсчитайте количество имен собственных (NNP) в каждом заголовке.

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

Отказ от анализа названий статей

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

Вот пример фальшивого заголовка новости по сравнению с настоящим заголовком новости.

Заголовок фейковой новости: «ПОЛНЫЙ ТРАНСКРИПТ« ДЫМОГО ПИСТОЛЕТА »ИНТЕРВЬЮ БОМБШЕЛЛ: ПРОФ. Фрэнсис Бойл раскрывает происхождение биологического оружия, вызвавшего коронавирус COVID-19 »

Заголовок настоящей новости: «Почему вспышки, подобные коронавирусу, распространяются экспоненциально, и как« сгладить кривую »»

Функции

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

  • Используйте теггер части речи и подсчитывайте, сколько раз каждый тег появляется в статье.
  • Количество отрицаний, вопросов в теле статьи.
  • Используйте библиотеку Python - textstat, чтобы вычислить статистику по тексту, чтобы определить удобочитаемость, сложность и уровень оценки любой статьи. Объяснение значения каждого статистического признака можно найти здесь.
  • Количество ключевых слов, случайных слов, предварительных слов, слов эмоций в теле статьи.

Изучение

Заглавные буквы в тексте статьи

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

Стоп-слова в теле статьи

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

NNP (существительное собственное, единственное число) в теле статьи

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

Отрицательные слова в текстах статей

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

Кронштейн

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

Соотношение типа и токена (TTR)

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

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

Harvard Health Publishing и Natural News

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

Как и ожидалось, в статьях Natural News используется гораздо меньше стоп-слов, чем в Harvard Health Publishing.

TTR предназначен для отражения лексического разнообразия лексики в документе. Низкое TTR означает, что в документе больше избыточности слов, а высокое TTR означает, что в документе больше словарного разнообразия. Понятно, что существует большая разница между Harvard Health Publish и Natural News с точки зрения TTR.

Модель классификации

Мы не будем использовать «источник» в качестве функции из-за предвзятости при сборе данных, например, я собирал только поддельные сообщения из Facebook и Twitter. Хотя на самом деле большинство постов в Facebook или Twitter настоящие.

Я уверен, что вы заметили, что мы создали большое количество числовых функций. Для первой попытки я решил использовать их все для соответствия модели машины опорных векторов (SVM) с линейным ядром и 10-кратной перекрестной проверки для предотвращения переобучения.

print(scores.mean())

Когда выполняется 10-кратная перекрестная проверка, мы можем видеть 10 различных баллов на каждой итерации, а затем вычисляем средний балл.

Возьмите все значения параметра C и проверьте оценку точности.

Из приведенного выше графика видно, что точность близка к 84,2% для C = 1, а затем она падает примерно на 83,8% и остается постоянной.

Мы рассмотрим более подробную информацию о том, какое точное значение параметра C дает нам хорошую оценку точности.

Приведенный выше график показывает, что показатель точности самый высокий при C = 0,7.

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

Помните, я создал несколько десятков новых числовых функций с целью изучения и изучения, и я использовал их все, чтобы соответствовать модели классификации. Я бы посоветовал вам использовать метод проверки гипотез, чтобы выбрать 8 или 10 основных функций, а затем запустить линейную модель SVM и 10-кратную перекрестную проверку.

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

Блокнот Jupyter можно найти на Github. Хороших выходных!

Ссылка: https://arxiv.org/pdf/1703.09398.pdf