Как выполнить анализ фейковых новостей с помощью НЛП с использованием Python

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

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

Некоторые из примеров:

1. Топ-20 фейковых новостей о президентских выборах в США в 2016 году, которые получили множество откликов в социальных сетях, таких как Facebook, для получения политической выгоды.

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

Сбор данных

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

Методология

Я использовал векторизатор подсчета и метод извлечения функций tf-idf и реализовал пассивно-агрессивную и наивную байесовскую модель для прогнозирования реальных рекламных фейковых новостей.
Библиотека scikitlearn предлагает простые в использовании инструменты для выполнения токенизации и извлечения функций из наших данных.

CountVectorizer для подсчета слов —

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

  1. Создайте класс CountVectorizer в том же экземпляре.
  2. вызвать функцию fit(), чтобы выучить словарный запас из одного или нескольких документов
  3. каждый документ кодируется как вектор с помощью функции transform().

Векторизатор Tf-idf — —

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

Используя tf-idf, мы преобразуем набор необработанных документов в матрицу функций Tf-idf.

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

Idf: Inverse Document Frequency — решается, насколько важно это слово. когда Tf вычисляет слово, в это время всем словам придается одинаковая важность. иногда «это», «из» и «что» встречается чаще, но это будет иметь меньшее значение.

Пассивно-агрессивный классификатор —

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

Наивные байесовские классификаторы — —

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

Здесь я взял такие пакеты, как NumPy, Pandas, CountVectorizer, TfidfVectorizer, PassiveAggressiveClassifer, MultinomialNB, word_tokenize, matplotlib.pyplot и т. д., которые я использовал для построения модели. После этого я импортировал данные из моего файла news.csv.

Исследование данных

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

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

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

Поиск количества настоящих и поддельных для каждой категории

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

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

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

Это НАСТОЯЩИЙ график новостей.

Это график фейковых новостей.

В наборе данных новостей я разделил его на поезд (80%) и тест (20%).

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

Метод извлечения признаков Tf-idf-

Здесь я использовал первый метод извлечения признаков 1 — метод Tf-idf. Здесь я создал 2 модели.

  • Пассивные_Агрессивные_Классификаторы
  • Наивный байесовский классификатор

Используя Passive_Aggressive_Classifier, я получил точность 89,5%.

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

Особенности метода извлечения 2- CountVectorizer-

Второй раз я использовал метод извлечения признаков 2 — метод CountVectorizer. Здесь я создаю 2 модели.

  • Пассивные_Агрессивные_Классификаторы
  • Наивный байесовский классификатор

В Passive_Aggressive_Classifier я получил точность 88,38%.

В наивном байесовском классификаторе у меня точность 94,15%.

Вывод-

Здесь я проанализировал данные двумя методами. Мой первый метод — метод TF-IDF, а второй метод — COUNT VECTORIZER. Каждый метод имеет две модели: Passive_Aggressive_Classifier и Naïve Bayes Classifier.

В первой модели метода TF-IDF точность Passive_Aggressive_Classifier составляет 89,5%, а точность наивного байесовского классификатора составляет 94,25%.

И второй метод Count_Vectorizer здесь также две модели: первая модель - Passive_Aggressive_Classifer, точность - 88,38%, а вторая модель - наивный байесовский классификатор, точность - 94,15%.

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

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

Поэтому я использовал метод TF-IDF и Passive_Aggressive_Classifer для прогнозирования фейковых новостей, модель имеет точность 89,5%.

Поставьте лайк и поделитесь этой статьей, если она вам понравилась. Это побудит меня написать еще много подобных статей.

Спасибо,

Амит Верма