Правда о фейковых новостях
Текст и метаданные из фальшивых и предвзятых источников новостей в Интернете

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

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

Процесс очистки набора данных был выполнен в несколько шагов:

Очистка данных:

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

Устранение ненужных столбцов: мы удалили из набора данных столбцы «unnamed», «ord_in_thread», «domain_rank» и «main_img_url», поскольку они не имеют отношения к нашему анализу данных. title», следовательно, он был излишним.

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

Разделение столбцов: Столбец «опубликовано» содержал как дату, так и время публикации, поэтому он был разделен на два отдельных столбца: «дата_публикации» и «время_публикации».

Изменение значений: Числовые значения для «spam_score» были заменены маркерами «Низкий», «Высокий» и «Средний». Маркер «Низкий» присваивался баллам меньше или равным 0,3, «Средний» баллам больше 0,3 и меньше или равным 0,6 и «Высокий» баллам в диапазоне от 0,6 до 1. Кроме того, столбцы имели много нулей, которые были удалены, чтобы устранить асимметрию распределения.

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

Удаленные столбцы:

Следующие столбцы были удалены из набора данных, поскольку они не помогают в прогнозировании:

Безымянный: случайный идентификатор, присвоенный каждой строке фрейма данных.
Нравится: количество отметок "Нравится", поставленных теме.
Комментарии: количество комментариев в цепочке
Поделиться: количество репостов в цепочке
Просканировано: дата и время создания ветки новостей просканировано.
Опубликовано: дата и время публикации ветки.
Тип: категория каждой статьи с точки зрения содержания.
Published_date: дата публикации темы.
Published_time: время публикации темы.

Добавление столбца взаимодействия:

В кадр данных добавляется новый столбец с именем «post_engagement», который в основном представляет собой сумму лайков, репостов и комментариев в ветке, чтобы показать влияние публикации на общественность.

Функции включают:

  1. UUID: идентификатор, назначаемый каждой новости для их уникальной идентификации.
  2. Автор: имя автора новости.
  3. Заголовок. Название новости.
  4. Текст. Содержание новостей.
  5. Язык. Язык, на котором написана ветка новостей.
  6. Site_url: URL-адрес веб-сайта, включенного в ветку новостей.
  7. Страна: страна, в контексте которой создается ветка новостей.
  8. Spam_score: метки (низкий, средний, высокий) для каждой цепочки новостей, указывающие уровень спама.
  9. Replies_count: количество ответов в ветке новостей.
  10. Participants_count: количество участников в ветке новостей.
  11. Post_engagement: комбинированные столбцы для лайков, комментариев и репостов.

Исследовательский анализ данных:

Для проведения EDA были импортированы следующие библиотеки:

Матрица корреляции для числовых атрибутов

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

Код корреляционной матрицы

Корреляционная матрица для числовых переменных

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

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

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

Частота оценки спама

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

Код для подсчета спама

Частота спама со стороны авторов

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

Следующий код использовался для получения 10 лучших авторов с высокими оценками спама:

Код для извлечения авторов с высоким рейтингом спама

Гистограмма, представляющая наиболее частых авторов с высокими показателями спама

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

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

Гистограмма для низкого и среднего рейтинга спама

Влияние заголовка на рейтинг спама

Заголовки тредов, опубликованных с фейковыми новостями, предназначены для того, чтобы заманить пользователя, чтобы он щелкнул заголовок новости и перешел к тексту новости. Подсчет слов в заголовке с высоким рейтингом спама показывает, что он в основном содержит модные слова, такие как «wwiiii» (третья мировая война) и большое количество слова «yuge», который был термином, связанным с Дональдом Трампом из-за его акцента, намекает на то, что фальшивые новости в основном нацелены на политику и текущие события.

Следующий график был получен для сравнения количества слов в высокой и низкой скобках с кодом для извлечения слов из заголовка с использованием sklearn:

Векторизация токенов для оценки словарного запаса

И построить подсчеты:

Слова против их количества

Частота по странам

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

Взаимосвязь между показателями охвата и использованием знаков препинания в заголовке

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

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

  • Количество менее 2 считается низким использованием
  • Количество от 2 до 4 (включительно) считается средним использованием
  • Количество больше 4 считается высоким использованием

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

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

Частота спама по URL-адресам

Кроме того, правдоподобным пониманием доступного набора данных может быть то, какие URL-адреса имеют наибольшее количество высоких оценок спама, приписываемых им.

Следующий код был использован для получения 10 лучших URL-адресов, которым приписывалось наибольшее количество высоких оценок спама:

Следующая визуализация используется для выделения лучших URL-адресов с наибольшим количеством баллов Span:

Можно увидеть, что URL-адреса веб-сайтов, «100percentfedup.com» и «beforeitsnews.com», имеют самую высокую частоту высоких оценок Span, приписываемых им, что позволяет предположить, что либо контент, размещенный на этих веб-сайтах, либо тип писателей, которые размещают содержание может подпадать под категорию спама, что приводит к высокому рейтингу спама.

Частота спама по вовлеченности

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

Машинное обучение — предсказание фейковых новостей

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

Разработка функций

Набор данных был в основном категориальными данными, которые необходимо было закодировать, функции были в основном строковыми данными, которые нельзя было использовать в необработанном виде, поэтому кодирование выполнялось с использованием библиотек sklearn:

После удаления стоп-слов из строк «текст» и «заголовок» и удаления лишнего символа с помощью регулярного выражения данные были закодированы.

Балансировка, векторизация и кодирование данных:

  1. Нечисловые метки были преобразованы посредством кодирования, т.е. значения числовых столбцов в наборе данных были приведены к использованию общей шкалы.
  2. Заголовок и текстовые данные были векторизованы с использованием вектора tfidf, который присваивает оценку ngram, созданному из набора данных поезда. Это закодированное лучше векторизует данные, а не просто присваивает им количество, оценка лучше отражает важность слов, которые могут значительно помочь в прогнозах.
  3. Все остальные функции кодируются с использованием векторизатора dict, поскольку они являются категориальными, но кодирование отдельно с помощью кодировщика меток назначит им числа, которые могут создать значение или порядковые данные из кодирования, следовательно, после того, как кодирование метки было выполнено, векторы были закодированы с одним горячее кодирование, которое решает проблему кодирования меток, создавая веса или порядковые данные.

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

Разделение данных

Процесс разделения набора данных был выполнен в два этапа:

  1. Извлеките y_target из моего фрейма данных, который был меткой оценки спама для нашего набора данных, т. е. низкий, средний и высокий.
  2. Разделите данные с помощью train_test_split от Scikit, используя соотношение 70:30.

Оценка показателей

Для оценки качества каждой модели использовались следующие показатели: точность, точность, полнота и оценка f-1.

Метрика Точность помогает нам определить количество правильных классификаций для сделанных нами прогнозов.

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

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

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

Выбор модели

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

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

Введите KNN

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

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

Итак, построив график для различных значений K в диапазоне от 0 до 20, мы заметили, что при значении K=10 ошибка была наименьшей, и это было нашим оптимальным значением k, где точность составляла около 94% с довольно хорошими показателями f1. для всех наших классов. Были получены следующие результаты:

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

Заключение

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

Результаты исследовательского анализа данных показывают, что существуют определенные текстовые структуры, источник, на котором были опубликованы новости, и особенности, связанные с условиями, в которых они были опубликованы, собранная новостная цепочка была во время выборов в США 2016 года, что, возможно, также способствовало высокий рейтинг спама и текст, связанный с политикой. Кроме того, взаимодействие с новостной лентой также дает понимание, которое показал анализ данных, и, возможно, может быть основным показателем оценки спама.

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