Давайте построим простой сценарий Python, который обнаружит фальшивые новости заголовков, а также реальных!
Первые вещи сначала импортируют эти библиотеки:
import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.model_selection import train_test_split from sklearn.naive_bayes import MultinomialNB
Для этого машинного обучения проекта я буду использовать Этот набор данных Для обучения нашей модели обнаруживают реальные или поддельные новости заголовки.
Теперь начать работать с данными, загрузить в набор данных и определить X и у переменных
data = pd.read_csv("news.csv") x = np.array(data["title"]) y = np.array(data["label"])
X будет определен как заголовки новостей, которые мы хотели бы, чтобы наша модель была обучена и проверена на у будет ярлыком (подделка или реальная), которую мы собираемся предсказывать
Далее добавьте эти строки кода в ваш скрипт:
cv = CountVectorizer() x = cv.fit_transform(x)
“Wth?” Вы можете спросить Проще говоря:
- Функция «CountVectorizer ()» подсчитывает количество вхождений слов в заголовках, чтобы найти разницу между реальными и поддельными заголовками. Без судейства заголовок новостей реальна или подделка, насколько это звучит правдоподобие, вы, вероятно, согласитесь, что основное отличие между реальными и поддельными заголовками является тональником и выбор слов, модель, как это не может судить по новостям Насколько они правдоподобны, поскольку у него нет суждения о том, что звучит правдоподобно или нет, вот почему, лучше всего сделать ставку при обнаружении реальных или поддельных заголовков, анализируя свой тон и слово.
- «Fit_Transform ()», затем подходит для переменной x и преобразует его из простого текста в список словных вхождений всех слов, встречающихся как из реальных, так и поддельных заголовков, чтобы разызнуть их по своему выбору слов, длиной и тоном.
Чтобы сделать, поезжать и проверить нашу модель, добавьте эти строки кода в ваш скрипт:
xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.2, random_state=42) model = MultinomialNB() model.fit(xtrain, ytrain)
Позволь мне объяснить…
- Прежде всего, мы разделим набор данных в поезде (80%) и тестируйте (20%) наборы и устанавливаете «Random_State» на 42, чтобы убедиться, что у нас есть тот же поезда, и тестовые наборы каждый раз, когда вы запускаете свой скрипт (номер 42 не имеет значения, вы можете поставить любой номер)
- Далее мы определяем нашу модель с помощью «мультиномиалнб ()», которая используется для классификации данных на основе количества слов.
- Наконец, мы подходим нашу модель с наборами «XTRAIN» и «YTRAIN».
Начните обнаруживать реальные или поддельные заголовки!
Теперь, чтобы предсказать, реальна ли заголовка новости или нет, добавьте эти строки кода к вашему сценарию:
news_headline = "Atlantis discovered under the Atlantic Ocean!" data = cv.transform([news_headline]).toarray() print(news_headline) print(model.predict(data))
Теперь, если вы запускаете свой скрипт, вы должны увидеть, что он предсказывал, что эта заголовка новостей является подделкой:
Теперь давайте возьмем случайную новости заголовок из BBC News и посмотрим, классифицирует ли наша модель как реальной:
news_headline = "Kathy Hochul: Who is New York's first female governor?"
Теперь, конечно, эта модель не идеальна Новости заголовки меняются все время, и даже если набор данных, который мы используем для обучения нашей модели, является простым текстом на 30 МБ, это всего около 50% точнее. Если вы добавите Печать (Model.Score (xtest, ytest))
В ваш скрипт вы увидите, что оценка точности составляет ~ 80%, даже если я проверил 40 заголовков новостей с прошлой недели и получил 50% до 60% точности, это потому, что новости заголовки, новости заголовок словарны и новости заголовок Темы меняются все время.
Тем не менее, я надеюсь, что вы нашли этот проект интересным, и я вижу вас в следующем посте в блоге;)
Если вы начинающий, кто любит открывать новые вещи о Python, попробуйте моя еженедельная рассылка Python
Byeeeee👋.
Оригинал: “https://dev.to/code_jedi/detect-fake-news-headlines-with-python-2l43”