В этом современном мире данные очень важны, и к 2020 году будет генерироваться 1,7 мегабайта данных в секунду. Итак, существует множество технологий, которые меняют мир с помощью такого большого количества данных. Машинное обучение - одна из них, и мы используем эту технологию для обнаружения фейковых новостей.
Машинное обучение
Машинное обучение - это приложение ИИ, которое дает системе возможность изучать вещи без явного программирования. Машинное обучение работает с данными, и оно будет учиться через некоторые данные. Машинное обучение сильно отличается от традиционного подхода. В разделе «Машинное обучение» мы вводили данные, а машина генерирует алгоритм. Машинное обучение имеет три типа обучения
- Контролируемое обучение
- Неконтролируемое обучение
- Обучение с подкреплением
Контролируемое обучение означает, что мы обучили нашу модель с помощью помеченных примеров, поэтому машина сначала учится на этих примерах, а затем выполняет задачу с невидимыми данными. В этом проекте по обнаружению фейковых новостей мы используем контролируемое обучение.
Узнайте больше здесь
Что такое фейковые новости?
Простое значение фейковых новостей - включать информацию, ведущую людей на ложный путь. В настоящее время фейковые новости распространяются как вода, и люди делятся этой информацией, не проверяя ее. Это часто делается для продвижения или навязывания определенных идей и часто достигается с помощью политических программ.
Для средств массовой информации способность привлекать посетителей на свои веб-сайты необходима для получения доходов от онлайн-рекламы. Так что необходимо обнаруживать фейковые новости.
Рабочий процесс:
Источник: к науке
На приведенной выше диаграмме показано, как этот конвейер генерирует числовые характеристики и передает их в алгоритм машинного обучения. В этом проекте мы используем некоторые библиотеки машинного обучения и обработки естественного языка, такие как NLTK, re (регулярное выражение), Scikit Learn.
Обработка естественного языка
Данные машинного обучения работают только с числовыми функциями, поэтому мы должны преобразовать текстовые данные в числовые столбцы. Итак, мы должны предварительно обработать текст, и это называется обработкой естественного языка.
В текстовом препроцессе мы очищаем наш текст пропариванием, лемматизацией, удаляем стоп-слова, удаляем специальные символы и числа и т. Д. После очистки данных мы должны передать эти текстовые данные в векторизатор, который преобразует эти текстовые данные в числовые функции.
Набор данных
Вы можете найти множество наборов данных для обнаружения фейковых новостей на Kaggle или многих других сайтах. Я скачиваю эти наборы данных из Kaggle. Есть два набора данных: один для фейковых новостей, а другой - для настоящих. В истинных новостях 21417 новостей, а в фейковых - 23481 новость. Оба набора данных имеют столбец меток, в котором 1 для фейковых новостей и 0 для истинных новостей. Мы объединили оба набора данных с помощью встроенной функции pandas.
В этом наборе данных нет пропущенных значений, в противном случае мы должны удалить эту информацию или присвоить какое-то значение.
Наш окончательный набор данных сбалансирован, потому что обе категории имеют примерно одинаковые номера. примеров
Очистка данных
Мы не можем использовать текстовые данные напрямую, потому что в них есть непригодные для использования слова, специальные символы и многое другое. Если мы использовали его напрямую, не очищая, то алгоритму машинного обучения очень сложно обнаружить закономерности в этом тексте, а иногда он также генерирует ошибку. Так что мы всегда должны сначала очищать текстовые данные. В этом проекте мы создаем одну функцию «clean_data», которая очищает данные.
Лемматизация: преобразование слова или лексемы в его базовую форму.
Примеры :
Пребывание, пребывание, пребывание, пребывание - - ›Пребывание
Дом, Дома, Жилье - - ›Дом
Стоп-слова: слова, которые встречаются слишком часто и не считаются информативными.
Примеры :
{‘The’, ‘a’, ‘an’, ‘and’, ‘but’, ‘for’, ‘on’, ‘in’, ‘at’…}
Разделить данные
Разделение данных - самый важный шаг в машинном обучении. Мы обучаем нашу модель на тренировочном наборе и тестируем наши данные на тестовом наборе. Мы разделяем наши данные на тренировку и тестируем с помощью функции train_test_split из Scikit learn.
Мы разделяем наши 80% данных для обучающего набора и оставшиеся 20% данных для набора для тестирования.
Tfidf Vectorizer
Tfidf-Vectorizer: ( частота термина * обратная частота документа)
1.Частота сроков: количество раз, когда слово появляется в документе, деленное на общее количество слов в документе. Каждый документ имеет свою частоту использования.
2. Обратная частота документов: журнал количества документов, разделенный на количество документов, содержащих слово w. Частота обратных данных определяет вес редких слов во всех документах в корпусе.
Наконец-то векторизатор Tfidf
Этот векторизатор уже предопределен в Scikit Learn Library, поэтому мы можем импортировать его:
Теперь мы сначала создаем объект TfidfVectorizer с некоторыми аргументами.
Вы можете проверить значение аргументов здесь
Теперь поместите этот векторизатор в наш обучающий набор данных и преобразуйте его значения в обучающем и тестовом наборе данных относительно векторизатора.
После векторизации данных он вернет разреженную матрицу, поэтому для алгоритмов машинного обучения мы должны преобразовать ее в массивы. Функция toarray сделает эту работу за нас.
Полиномиальный наивный байесовский классификатор
Наивный байесовский метод. Метод наивного байесовского классификатора основан на теореме Байеса и особенно подходит для данных большой размерности.
Формула:
Ознакомьтесь с дополнительной информацией Теорема Байеса
Полиномиальный наивный байесовский метод:
Он используется для классификации в дискретной форме. Это очень полезно при обработке текста. Каждый текст будет преобразован в вектор количества слов. Он не может иметь дело с отрицательными числами.
Он предопределен в Scikit Learn Library. Итак, мы можем импортировать этот класс в наш проект, а затем создать объект Multinomial Naive Bayes Class.
1. Подгоните классификатор к нашим векторизованным данным поезда.
2. Когда классификатор успешно вписывается в обучающую выборку, мы можем использовать метод прогнозирования, чтобы предсказать результат на тестовой выборке.
Показатели классификации
Чтобы проверить, насколько хорошо наша модель, мы используем некоторые метрики, чтобы определить точность нашей модели. В Scikit доступно множество типов показателей классификации.
- Матрица путаницы
- Оценка точности
- Точность
- Отзывать
- F1-Оценка
Матрица неточностей. Обычно это показатели того, сколько результатов предсказано правильно, а сколько результатов неверно.
Оценка точности. Это количество правильных прогнозов по сравнению с общим числом. предсказаний
Подробная информация о Точность, отзывчивость и F1-Score
Подробнее о показателях классификации
Как видите, у нас очень хорошие показатели точности, отзыва и F1. Таким образом, мы можем сказать, что наша модель отлично работает с невидимыми данными. Оценка точности набора тестовых данных составляет 95%, что очень хорошо.
Теперь мы видим отчет о классификации по обучающей выборке.
Мы также получаем очень хорошую оценку точности на тренировочной выборке.
Оценка точности на поезде и тестовом наборе
Вы можете видеть, что обе точности почти равны. Так что мы можем сказать, что наша модель работает хорошо.
Сохраните модель
После хорошей производительности с данными мы можем сохранить нашу модель, чтобы в следующий раз мы могли использовать ее напрямую. Библиотеки joblib и pickle, используемые для сохранения модели машинного обучения. На следующем шаге вы можете сохранить и загрузить свою модель.
Еще один способ сохранить и загрузить вашу модель Оформить заказ здесь
Код:
Резюме
Сегодня мы научились обнаруживать фейковые новости с помощью Python. Мы взяли набор данных Fake и True News, реализовали функцию очистки текста, TfidfVectorizer, инициализировали полиномиальный наивный байесовский классификатор и соответствовали нашей модели. В итоге мы получили точность 95,31% по величине.
Надеюсь, вам понравился этот проект.
Свяжитесь со мной:
Github:
Средний:
LinkedIn:
Последнее примечание:
Спасибо за внимание! Если вам понравилась эта статья, нажмите кнопку "хлопать" 👏 столько раз, сколько сможете. Это будет много значить и побудит меня продолжать делиться своими знаниями.