Автоматическое обнаружение дезинформации о COVID-19
НЛП, Машинное обучение, COVID-19
Обычным гражданам нелегко распознать фейковые новости. И фейковые новости о коронавирусе - не исключение.
В рамках усилий по борьбе с дезинформацией о коронавирусе я попробовал собрать данные обучения и обучил модель машинного обучения обнаруживать фейковые новости о коронавирусе.
Мои данные обучения не идеальны, но я надеюсь, что они будут полезны, чтобы помочь нам понять, отличаются ли фейковые новости систематически от реальных новостей по стилю и языку. Итак, давайте выясним.
Данные
Как упоминалось в предыдущей статье, я собрал более 1100 новостных статей и сообщений в социальных сетях о COVID-19 из множества новых источников, а затем пометил их. Набор данных можно найти здесь.
Я решил создать несколько десятков новых функций на основе заголовков новостей и тел новостных статей. Позвольте мне объяснить их один за другим.
Заглавные буквы в заголовке
- Подсчитайте количество заглавных букв в каждом заголовке.
- Вычисляйте процент заглавных букв в теле каждой статьи, а не просто подсчитывайте количество, потому что длина статей сильно различается.
В среднем у фейковых новостей в заголовке гораздо больше слов, которые заглавными буквами пишутся. Это заставляет меня думать, что фейковые новости нацелены на аудиторию, на которую могут повлиять заголовки.
Стоп-слова в заголовке
- Подсчитайте количество стоп-слов в каждом заголовке.
- Вычисляйте процент стоп-слов в теле каждой статьи, а не просто подсчитывайте количество, потому что длина статей сильно различается.
В заголовках фальшивых новостей меньше стоп-слов, чем у настоящих новостей.
Имя собственное в названии
- Подсчитайте количество имен собственных (NNP) в каждом заголовке.
В заголовках фальшивых новостей больше имен собственных. Очевидно, использование имен собственных в заголовках очень важно для отличия подделки от настоящего.
Отказ от анализа названий статей
В целом, эти результаты предполагают, что авторы фейковых новостей пытаются привлечь внимание, используя все слова с заглавной буквы в заголовках, и втиснуть в заголовки как можно больше содержания, пропуская стоп-слова и увеличивая количество имен собственных. Мы узнаем, применимы ли они и к телам статей, в ближайшее время.
Вот пример фальшивого заголовка новости по сравнению с настоящим заголовком новости.
Заголовок фейковой новости: «ПОЛНЫЙ ТРАНСКРИПТ« ДЫМОГО ПИСТОЛЕТА »ИНТЕРВЬЮ БОМБШЕЛЛ: ПРОФ. Фрэнсис Бойл раскрывает происхождение биологического оружия, вызвавшего коронавирус COVID-19 »
Заголовок настоящей новости: «Почему вспышки, подобные коронавирусу, распространяются экспоненциально, и как« сгладить кривую »»
Функции
Чтобы изучать фальшивые и настоящие новостные статьи, мы вычисляем множество функций на основе содержимого статей. Они есть:
- Используйте теггер части речи и подсчитывайте, сколько раз каждый тег появляется в статье.
- Количество отрицаний, вопросов в теле статьи.
- Используйте библиотеку Python - textstat, чтобы вычислить статистику по тексту, чтобы определить удобочитаемость, сложность и уровень оценки любой статьи. Объяснение значения каждого статистического признака можно найти здесь.
- Соотношение тип-токен (TTR) - это общее количество уникальных слов (типов), деленное на общее количество слов (токенов) в данном сегменте языка. Использование библиотеки Python - лексическое богатство.
- Количество ключевых слов, случайных слов, предварительных слов, слов эмоций в теле статьи.
Изучение
Заглавные буквы в тексте статьи
В среднем в фейковых новостях больше слов, написанных заглавными буквами в тексте статьи, чем в настоящих новостях.
Стоп-слова в теле статьи
Кажется, нет существенной разницы в процентном соотношении стоп-слов в тексте статьи между фальшивыми и реальными новостями.
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. Хороших выходных!