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