نویسنده (ها): آیشواریا
در ابتدا منتشر شده در به سمت هوش مصنوعیبشر
در دوران دیجیتال امروز ، اخبار جعلی سریعتر از حقیقت پخش می شود، و عواقب آن می تواند جدی باشد. از تأثیرگذاری در انتخابات گرفته تا گسترش اطلاعات نادرست سلامت ، مقابله با اخبار جعلی از همیشه مهمتر است.
تشخیص اخبار جعلی ممکن است به نظر برسد کار مناسب برای مدل های ترانسفورماتور برش مانند Bert ، اما می تواند مدل های سنتی را دوست داشته باشد LSTM هنوز زمین خود را نگه دارید؟
اما این سوال فنی است:
کدام مدل در تشخیص اخبار جعلی بهتر است – یک کلاسیک LSTM یا یک ترانسفورماتور مدرن مانند برت؟
در این راهنما ، ما دو رویکرد را برای تشخیص اخبار جعلی با استفاده از آن مقایسه خواهیم کرد یادگیری عمیق:
1LSTM از ابتدا آموزش دیده است
2. با استفاده از Huggingface خوب تنظیم شده است
📦 مجموعه داده ها: مجموعه داده های خبری جعلی و واقعی
ما از محبوب استفاده خواهیم کرد مجموعه داده از کله زدن، که حاوی بیش از 44000 مقاله خبری، تقسیم به:
مجموعه داده پیوند: داده های جعلی و واقعی
واقعی: اخبار قانونی از منابع تأیید شده
جعل کردن: اخبار ساخته شده با محتوای گمراه کننده
هر ورودی شامل:
- عنوان: عنوان مقاله اخبار
- متن: متن بدن از اخبار
- موضوع: موضوع اخبار
- تاریخ: مقاله تاریخ اخبار را منتشر کنید
🔧 رویکرد 1: LSTM که از ابتدا آموزش دیده است
📥 مرحله 1: کتابخانه های واردات
بسته های اساسی برای کنترل داده ها ، پیش پردازش و مدل سازی.
import pandas as pd, numpy as np, re, nltk
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from nltk.corpus import stopwords
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, LSTM, Dense, Bidirectional, Dropout
from tensorflow.keras.callbacks import EarlyStoppingnltk.download('stopwords')
stop_words = set(stopwords.words('english'))
📂 مرحله 2: DataSet را بارگیری کنید
مجموعه داده های خبری جعلی و واقعی را بخوانید.
df_fake = pd.read_csv("Fake.csv")
df_real = pd.read_csv("True.csv")
🏷 مرحله 3: برچسب ها را اضافه کنید
برچسب جعلی به عنوان 0 و واقعی به عنوان 1.
df_fake['label'] = 0
df_real['label'] = 1
🔗 مرحله 4: ترکیب و جابجایی
هر دو مجموعه داده و تغییر را ادغام کنید.
df = pd.concat([df_fake, df_real], axis=0).sample(frac=1).reset_index(drop=True)
🧹 مرحله 5: متن را تمیز کنید
HTML ، نگارشی ، اعداد و کلمات را حذف کنید.
def clean_text(text):
text = str(text).lower()
text = re.sub(r'<.>', '', text)
text = re.sub(r'[^\w\s]', '', text)
text = re.sub(r'\d+', '', text)
text = " ".join([word for word in text.split() if word not in stop_words])
return text
df['text'] = df['title'] + " " + df['text']
df['text'] = df['text'].apply(clean_text)
🔠 مرحله 6: توکن و پد
متن را به سکانس ها تبدیل کنید و آنها را پد کنید.
tokenizer = Tokenizer(num_words=50000, oov_token="" )
tokenizer.fit_on_texts(df['text'])
sequences = tokenizer.texts_to_sequences(df['text'])
word_index = tokenizer.word_index
vocab_size = len(word_index) + 1
max_length = 500
padded_sequences = pad_sequences(sequences, maxlen=max_length, padding='post')
🧪 مرحله 7: تقسیم آزمون قطار
تقسیم به مجموعه داده های آموزش و اعتبار سنجی.
X = padded_sequences
y = df['label'].values
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)
🧠 مرحله 8: مدل LSTM را بسازید
یک مدل LSTM دو طرفه انباشته ایجاد کنید.
model = Sequential([
Embedding(input_dim=vocab_size, output_dim=128, input_length=max_length),
Bidirectional(LSTM(128, return_sequences=True)),
Bidirectional(LSTM(64)),
Dense(64, activation='relu'),
Dropout(0.5),
Dense(1, activation='sigmoid')
])
⚙ مرحله 9: کامپایل و آموزش
مدل را کامپایل کنید و آن را با توقف زود هنگام آموزش دهید.
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
early_stop = EarlyStopping(monitor='val_loss', patience=2, restore_best_weights=True)
history = model.fit(X_train, y_train, epochs=5, batch_size=64, validation_data=(X_val, y_val), callbacks=[early_stop])
📈 مرحله 10: دقت را تجسم کنید
آموزش طرح و صحت اعتبار سنجی.
plt.plot(history.history['accuracy'], label='Train Accuracy')
plt.plot(history.history['val_accuracy'], label='Val Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.legend()
plt.title("Training vs Validation Accuracy")
plt.show()
✅ مرحله 11: ارزیابی مدل
دقت اعتبار سنجی نهایی پس از آموزش.
loss, acc = model.evaluate(X_val, y_val)
print(f"\n✅ Final Validation Accuracy: {acc:.4f}")
خروجی:
✅ دقت اعتبار سنجی نهایی: 0.9125
🤖 رویکرد 2: تنظیم دقیق Bert با Huggingface
چرا وقتی می توانید یک مدل قدرتمند از قبل آموزش دیده را تنظیم کنید ، از ابتدا ساخته شده است؟
در این رویکرد ، ما از Bert-Base-Inspased ، یک مدل زبان با هدف کلی از بغل کردن استفاده می کنیم و آن را در مجموعه داده های خبری جعلی و واقعی تنظیم می کنیم. برت نحو و متن را درک می کند و آن را برای کارهای طبقه بندی مانند تشخیص اخبار جعلی ایده آل می کند.
چه چیزی برت را قدرتمند می کند؟
- از قبل در یک جسد بزرگ (ویکی پدیا + کتابفروق) آموزش دیده است
- روابط متنی بین کلمات را ضبط می کند
- با پیش پردازش حداقل کار می کند
🛠 اجرای مرحله به مرحله
📦 1. نصب کتابخانه های مورد نیاز
pip install transformers datasets tensorflow
📥 2. مجموعه داده را بارگیری و آماده کنید
import pandas as pd
from sklearn.model_selection import train_test_splitdf_fake = pd.read_csv("Fake.csv")
df_real = pd.read_csv("True.csv")
df_fake['label'] = 0
df_real['label'] = 1
df = pd.concat([df_fake, df_real], axis=0).sample(frac=1).reset_index(drop=True)
df['text'] = df['title'] + " " + df['text']
train_texts, val_texts, train_labels, val_labels = train_test_split(
df['text'].tolist(), df['label'].tolist(), test_size=0.2, random_state=42)
✂ 3. توکن سازی با Bert Tokenizer
from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
train_encodings = tokenizer(train_texts, truncation=True, padding=True, max_length=512)
val_encodings = tokenizer(val_texts, truncation=True, padding=True, max_length=512)
🧾 4. داده های Tensorflow را آماده کنید
import tensorflow as tf
train_dataset = tf.data.Dataset.from_tensor_slices((
dict(train_encodings),
train_labels
)).shuffle(1000).batch(16)
val_dataset = tf.data.Dataset.from_tensor_slices((
dict(val_encodings),
val_labels
)).batch(16)
5 🧠. بار و تنظیم دقیق برت
from transformers import TFBertForSequenceClassification, AdamW
model = TFBertForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2)
model.compile(optimizer=AdamW(learning_rate=2e-5),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_dataset, validation_data=val_dataset, epochs=3)
✅ 6. عملکرد مدل را ارزیابی کنید
loss, accuracy = model.evaluate(val_dataset)
print(f"\n✅ Final Validation Accuracy: {accuracy:.4f}")
خروجی:
✅ دقت اعتبار سنجی نهایی: 0.9314
analysis تجزیه و تحلیل مقایسه ای: LSTM در مقابل برت
اکنون که هر دو مدل را اجرا و ارزیابی کرده ایم ، بیایید آنها را در کنار هم مقایسه کنیم:
پایان: BERT به دلیل درک عمیق از متن ، LSTM را در دقت قرار می دهد. با این حال ، اگر در محاسبات کوتاه هستید یا یک مدل ساده تر می خواهید ، LSTM هنوز نتایج بسیار خوبی را ارائه می دهد.
⚖ چه موقع از LSTM در مقابل BERT استفاده کنید
انتخاب بین LSTM و BERT به اهداف و منابع شما بستگی دارد:
از LSTM استفاده کنید اگر:
- شما در منابع محاسباتی محدود هستید
- شما می خواهید برای اهداف آموزشی مدل هایی از ابتدا بسازید
- مجموعه داده نسبتاً کوچک و خاص دامنه است
از BERT استفاده کنید اگر:
- شما نیاز دارید دقت پیشرفته
- شما با داده های متن بزرگ یا پر سر و صدا کار می کنید
- شما می خواهید اهرم کنید انتقال یادگیری برای تعمیم بهتر
thoughts افکار نهایی
هر دو LSTM و BERT به خودی خود قدرتمند هستند. در حالی که برت با آگاهی از زمینه و قبل از آموزش حاکم است ، LSTM ها هنوز هم برای استقرار سریعتر و خطوط لوله ساده تر مرتبط هستند. در نبرد با اخبار جعلی ، انتخاب مدل مناسب فقط یک قسمت است – کلید استفاده از فناوری از نظر اخلاقی و مؤثر برای ارتقاء حقیقت است.
منتشر شده از طریق به سمت هوش مصنوعی