Перевіряльник достовірності новин

текст перекладу
Будівництво моделі машинного навчання для виявлення фейкових новин: Подорож від ідеї до виконання.

У цифрову епоху межа між реальними та фейковими новинами стирається, і багато людей стикаються з труднощами у визначенні фактів і вигадок. Надихнувшись цією сучасною проблемою, я розпочав подорож зі створення моделі машинного навчання, яка здатна класифікувати новинні статті як реальні чи фейкові.

Ця стаття дозволить вам заглянути за куліси того, як я підходив до проблеми, які труднощі виникли і які уроки я отримав на шляху.

1. Розуміння проблеми

Виявлення фейкових новин по суті є проблемою бінарної класифікації. Вхідними даними є текстовий вміст новинної статті, а вихідним результатом є одна з двох міток: Фейк або Реальний.

Першою проблемою було знайти набір даних, який містив марковані новинні статті. Після вивчення кількох джерел я зупинився на наборі даних від [вставити джерело набору даних], який містив тисячі маркованих новинних статей.

2. Попередня обробка даних

Сирі дані були далекі від готових для моделювання. Ось як я їх трансформував:

  • Очищення тексту: Видалив стоп-слова, спеціальні символи та розділові знаки, щоб зосередитись на змістовних словах.
  • Токенізація: Розбив текст на окремі слова для аналізу.
  • Векторизація: Перетворив текстові дані в числовий формат за допомогою TF-IDF (Частота терміну - Інверсна частота документа).

Кожен з цих кроків був критично важливим для того, щоб модель могла ефективно розуміти і аналізувати вміст.

pic

Перевірка фейкових новин проти реальних новин

3.

текст перекладу
Будівництво моделі машинного навчання для виявлення фейкових новин: Подорож від ідеї до виконання.

У цифрову епоху межа між реальними та фейковими новинами стирається, і багато людей стикаються з труднощами у визначенні фактів і вигадок. Надихнувшись цією сучасною проблемою, я розпочав подорож зі створення моделі машинного навчання, яка здатна класифікувати новинні статті як реальні чи фейкові.

Ця стаття дозволить вам заглянути за куліси того, як я підходив до проблеми, які труднощі виникли і які уроки я отримав на шляху.

1. Розуміння проблеми

Виявлення фейкових новин по суті є проблемою бінарної класифікації. Вхідними даними є текстовий вміст новинної статті, а вихідним результатом є одна з двох міток: Фейк або Реальний.

Першою проблемою було знайти набір даних, який містив марковані новинні статті. Після вивчення кількох джерел я зупинився на наборі даних від [вставити джерело набору даних], який містив тисячі маркованих новинних статей.

2. Попередня обробка даних

Сирі дані були далекі від готових для моделювання. Ось як я їх трансформував:

  • Очищення тексту: Видалив стоп-слова, спеціальні символи та розділові знаки, щоб зосередитись на змістовних словах.
  • Токенізація: Розбив текст на окремі слова для аналізу.
  • Векторизація: Перетворив текстові дані в числовий формат за допомогою TF-IDF (Частота терміну - Інверсна частота документа).

Кожен з цих кроків був критично важливим для того, щоб модель могла ефективно розуміти і аналізувати вміст.

3. Побудова моделі

Я експериментував з кількома алгоритмами машинного навчання:

  • Логістична регресія: Відома своєю простотою та сильною ефективністю в задачах бінарної класифікації.

4. Технології:

У цьому проєкті я використовував:

import numpy as np  
import pandas as pd  
import re  
from nltk.corpus import stopwords  
from nltk.stem.porter import PorterStemmer  
from sklearn.feature_extraction.text import TfidfVectorizer  
from sklearn.model_selection import train_test_split  
from sklearn.linear_model import LogisticRegression  
from sklearn.metrics import accuracy_score

Основний код цього проєкту з машинного навчання:

import numpy as np  
import pandas as pd  
import re  
from nltk.corpus import stopwords  
from nltk.stem.porter import PorterStemmer  
from sklearn.feature_extraction.text import TfidfVectorizer  
from sklearn.model_selection import train_test_split  
from sklearn.linear_model import LogisticRegression  
from sklearn.metrics import accuracy_score  

import nltk  
nltk.download('stopwords')  

# виведення стоп-слів англійською  
print(stopwords.words('english'))  


# завантаження набору даних у pandas DataFrame  
news_dataset = pd.read_csv("/content/train.csv")  
news_dataset.shape  

# підрахунок кількості відсутніх значень у наборі даних  
news_dataset.isnull().sum()  


# заміна null значень на порожній рядок  
news_dataset = news_dataset.fillna('')  


# об'єднання імені автора та заголовка новини  
news_dataset['content'] = news_dataset['author']+' '+news_dataset['title']  

print(news_dataset['content'])  

# розділення даних та міток  
X = news_dataset.drop(columns='label', axis=1)  
Y = news_dataset['label']  
print(X)  
print(Y)  


port_stem = PorterStemmer()  

def stemming(content):  
 stemmed_content = re.sub('[^a-zA-Z]',' ',content)  
 stemmed_content = stemmed_content.lower()  
 stemmed_content = stemmed_content.split()  
 stemmed_content = [port_stem.stem(word) for word in stemmed_content if not word in stopwords.words('english')]  
 stemmed_content = ' '.join(stemmed_content)  
 return stemmed_content  

news_dataset['content'] = news_dataset['content'].apply(stemming)  
print(news_dataset['content'])  


# розділення даних та міток  
X = news_dataset['content'].values  
Y = news_dataset['label'].values  

print(X)  
print(Y)  

Y.shape  

# Перетворення тексту в числа  
vectorizer=TfidfVectorizer()  
vectorizer.fit(X)  

X=vectorizer.transform(X)  

print(X)  

# Розподіл набору даних на тренувальну та тестову частини  

X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.25,stratify=Y,random_state=2)  

# Використовуємо модель  

Model=LogisticRegression()  

Model.fit(X_train,Y_train)  
X_train_prediction=Model.predict(X_train)  
X_train_accuracy=accuracy_score(X_train_prediction,Y_train)  
print("Точність на тренувальних даних",X_train_accuracy*100,"%")  


X_test_prediction=Model.predict(X_test)  
X_test_accuracy=accuracy_score(X_test_prediction,Y_test)  
print("Точність на тестових даних",X_test_accuracy*100,"%")  

# Створення предсказувальної системи машинного навчання  

n=int(input("Введіть будь-який номер рядка, який ви хочете передбачити!"))  
testing_data=X_test[n]  

prediction_system=Model.predict(testing_data)  

print(prediction_system)  
print()  

if prediction_system==[0]:  
 print("Новина реальна!")  
else:  
 print("Новина фейкова!")

Висновок

Фейкові новини — це проблема, яка торкається кожного з нас, і машинне навчання пропонує потужні інструменти для боротьби з нею. Хоча мій проєкт — це лише один крок до вирішення цієї проблеми, приємно бачити потенціал технологій у розв'язанні реальних проблем.

Якщо ви захоплюєтесь машинним навчанням і вирішенням важливих проблем, я раджу вам зануритись у це! Ви стикатиметесь з труднощами, але винагороди — як особисті, так і професійні — того варті.

Дякую за те, що прочитали мій пост!

Перекладено з: NewsAuthenticityChecker

Leave a Reply

Your email address will not be published. Required fields are marked *