текст перекладу
Будівництво моделі машинного навчання для виявлення фейкових новин: Подорож від ідеї до виконання.
У цифрову епоху межа між реальними та фейковими новинами стирається, і багато людей стикаються з труднощами у визначенні фактів і вигадок. Надихнувшись цією сучасною проблемою, я розпочав подорож зі створення моделі машинного навчання, яка здатна класифікувати новинні статті як реальні чи фейкові.
Ця стаття дозволить вам заглянути за куліси того, як я підходив до проблеми, які труднощі виникли і які уроки я отримав на шляху.
1. Розуміння проблеми
Виявлення фейкових новин по суті є проблемою бінарної класифікації. Вхідними даними є текстовий вміст новинної статті, а вихідним результатом є одна з двох міток: Фейк
або Реальний
.
Першою проблемою було знайти набір даних, який містив марковані новинні статті. Після вивчення кількох джерел я зупинився на наборі даних від [вставити джерело набору даних], який містив тисячі маркованих новинних статей.
2. Попередня обробка даних
Сирі дані були далекі від готових для моделювання. Ось як я їх трансформував:
- Очищення тексту: Видалив стоп-слова, спеціальні символи та розділові знаки, щоб зосередитись на змістовних словах.
- Токенізація: Розбив текст на окремі слова для аналізу.
- Векторизація: Перетворив текстові дані в числовий формат за допомогою TF-IDF (Частота терміну - Інверсна частота документа).
Кожен з цих кроків був критично важливим для того, щоб модель могла ефективно розуміти і аналізувати вміст.
Перевірка фейкових новин проти реальних новин
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