Что такое поддельные новости?

В наши дни социальные сети являются одним из самых доступных источников новостей для многих людей по всему миру, благодаря их низкой ценности, быстрому доступу и быстрому распространению. Тем не менее, это происходит из-за сомнительных характеристик и жизненно важных рисков воздействия «фальшивых новостей», которые специально написаны, чтобы ввести читателей в заблуждение. Поддельные новости, тип желтой журналистики, включают в себя новости, которые могут быть мистификацией, и обычно распространяются через социальные сети и другие онлайн-СМИ. Это часто делается для продвижения или навязывания определенных идей и часто достигается с помощью политических программ. Такие новости могут содержать ложные и/или преувеличенные заявления и могут в конечном итоге стать вирусными с помощью алгоритмов, а пользователи могут оказаться в пузыре фильтров. Цель этого документа — провести вас через процесс создания модели машинного обучения с использованием Python и NLP для успешного обнаружения фальшивых новостей.

ЦЕЛИ:

  • знать, как работает TfidfVectorizer.
  • знать IDF (обратная частота документа)
  • знать TF (частота терминов)
  • знать принцип пассивно-агрессивного классификатора
  • освоить обнаружение фейковых новостей.

НЕОБХОДИМЫЕ УСЛОВИЯ:

  • базовые знания питона
  • управлять библиотекой sklearn

TfidfVectorizer?

TfidfVectorizer или TF-IDF используется, когда нужно преобразовать набор необработанных документов в матрицу функций TF и IDF. Это метод, используемый для количественной оценки важности слов в документе и в наборе документов одновременно. Действительно, есть много общих слов, таких как «the», «is», «I», которые часто встречаются в предложениях, но не вносят существенного вклада в передачу информации. Если бы мы смотрели только на частоту термина, эти слова казались бы более важными, чем другие слова. По этой причине вводится TF-IDF, чтобы иметь более надежные функции в наборе данных.

TF (частота терминов)?

TF, в отличие от IDF, представляет собой количество раз, когда слово появляется в одном документе . где Term Frequency (TF) – частота встречаемости словаt в документе d. Другими словами, это соотношение между количеством слов в документе документа и общее количество слов.

чтобы вычислить это значение, применяя следующее стандартное правило:

IDF (обратная частота документа)?

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

чтобы вычислить это значение, применяя следующее стандартное правило:

TF-IDF или TfidfVectorizer(t,d)

Он получается путем объединения двух терминов:

Sklearn TF-IDF !!

В предыдущем параграфе было введено стандартное определение TF-IDF. Теперь я покажу, чем TfidfVectorizer, которые представляют собой tf-idf, рассчитанные в sklearn, отличаются от стандартного метода:

Вы можете легко заметить, что sklearn-версия IDF добавляет 1 к числителю и знаменателю, чтобы избежать деления на ноль. Кроме того, к члену логарифма добавляется константа, равная 1.

После того, как мы нормализуем полученные векторы TF-IDF, используя евклидову норму:

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

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

Как работают пассивно-агрессивные алгоритмы?

Пассивно-агрессивные алгоритмы называются так потому, что:

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

Агрессивный: если прогноз неверен, внесите изменения в модель. т. е. некоторые изменения в модели могут ее исправить.

Подробнее:https://www.geeksforgeeks.org/passive-aggressive-classifiers/

Реализация на Python

наша цель — построить модель для точной классификации информации как ИСТИННОЙ или ЛОЖНОЙ.

используемая библиотека:

Набор данных о фейковых новостях:

Набор данных, который мы будем использовать для этого проекта, назовем его news.csv. (здесь) Этот набор данных имеет форму 6335×4. В первом столбце указаны новости, во втором и третьем — заголовок и текст, а в четвертом столбце есть метки, обозначающие, являются ли новости НАСТОЯЩИМИ или ЛОЖНЫМИ.

метки из DataFrame:

Разделите набор данных на наборы для обучения и тестирования:

набор данных должен быть разделен на два отдельных набора. 80% данных будут использоваться для обучения нашей модели, а остальные 20% будут служить данными для тестирования (очевидно, что это может измениться).

Давайте инициализируем TfidfVectorizer со стоп-словами из английского языка и максимальной частотой документа 0,7 (термины с более высокой частотой документа будут отброшены). Стоп-слова — это наиболее распространенные слова в языке, которые необходимо отфильтровать перед обработкой данных естественного языка. А TfidfVectorizer превращает набор необработанных документов в матрицу функций TF-IDF.

Теперь подгоните и преобразуйте векторизатор на наборе поездов и преобразуйте векторизатор на тестовом наборе:

PassiveAggressiveClassifier теперь должен быть инициализирован. Чтобы интегрировать его в нашу модель за 100 итераций, мы будем использовать "y_train" и "tfidf_train".

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

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

Из матрицы путаницы мы можем сделать следующие выводы:

  • Наша модель успешно предсказала 2033 положительных результата.
  • Наша модель успешно предсказала 1988 негативов.
  • Наша модель предсказала 67 ложных срабатываний.
  • Наша модель предсказала 72 ложноотрицательных результата.

ЗАКЛЮЧЕНИЕ:

Сегодня мы научились обнаруживать фейковые новости с помощью . Мы взяли набор политических данных, внедрили TfidfVectorizer, инициализировали PassiveAggressiveClassifier и настроили нашу модель. Используя различные итерации кода и наборов данных, мне удалось добиться максимальной точности 98,3% при среднем значении 96,83%. Это довольно удивительно, поскольку она намного точнее, чем любые другие подобные модели, с которыми я сталкивался, со средней точностью 86–92,82%. Крайне важно, чтобы эти модели были усовершенствованы, чтобы эффективно бороться с дезинформацией в эти трудные времена.

код реализации и наборы данных

https://github.com/HajoubWalid2000/Машинное обучение.

Ссылка:

1. https://medium.com/swlh/detecting-fake-news-with-python-and-machine-learning-f78421d29a06.

2. https://betterprogramming.pub/a-friendly-guide-to-nlp-tf-idf-with-python-example-5fcb26286a33.

3. https://data-flair.training/blogs/advanced-python-project-detecting-fake-news/.

4. https://scikitlearn.org/stable/auto_examples/applications/plot_out_of_core_classification.html#sphx-glr-auto-examples-applications-plot-out-of-core-classification-py.