صورة شاملة لمعالجة اللغات الطبيعية
🧠 مقدمة في معالجة اللغات الطبيعية
🎯 ما ستتعلمه في هذا الدرس:
- أساسيات معالجة اللغات الطبيعية (NLP)
- تحليل المشاعر باستخدام VADER
- الشبكات العصبية LSTM للنصوص
- Word Embeddings وWord2Vec
- بناء نظام تصنيف المراجعات الذكي
معالجة اللغات الطبيعية (Natural Language Processing) هي فرع من فروع الذكاء الاصطناعي يهتم بتمكين الحاسوب من فهم وتحليل ومعالجة اللغة البشرية الطبيعية.
85%
من البيانات غير منظمة
2.5
كوينتيليون بايت يومياً
الذكاء الاصطناعي ومعالجة اللغات الطبيعية
📚 تطبيقات معالجة اللغات الطبيعية
- التجارة الإلكترونية: تحليل مراجعات المنتجات
- وسائل التواصل: مراقبة المشاعر العامة
- خدمة العملاء: الردود الآلية الذكية
- الطب: تحليل التقارير الطبية
- التمويل: تحليل الأخبار المالية
📊 تحليل المشاعر باستخدام VADER
VADER (Valence Aware Dictionary and sEntiment Reasoner) هو أداة قوية لتحليل المشاعر مصممة خصيصاً لنصوص وسائل التواصل الاجتماعي.
تصور تحليل المشاعر
# تثبيت المكتبات المطلوبة
!pip install nltk vaderSentiment textblob wordcloud
import nltk
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from wordcloud import WordCloud
# تحميل البيانات المطلوبة
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('vader_lexicon')
# إنشاء محلل المشاعر
analyzer = SentimentIntensityAnalyzer()
# أمثلة على النصوص
texts = [
"أحب هذا المنتج كثيراً! إنه رائع جداً",
"المنتج سيء للغاية، لا أنصح به أبداً",
"المنتج عادي، لا بأس به",
"هذا أفضل شراء قمت به هذا العام! 😍",
"خدمة العملاء سيئة جداً 😡"
]
# تحليل المشاعر
results = []
for text in texts:
scores = analyzer.polarity_scores(text)
results.append({
'text': text,
'negative': scores['neg'],
'neutral': scores['neu'],
'positive': scores['pos'],
'compound': scores['compound']
})
# تحويل إلى DataFrame
df_sentiment = pd.DataFrame(results)
print(df_sentiment)
💡 مميزات VADER:
- يتعامل مع الرموز التعبيرية والعلامات
- يفهم كلمات التأكيد والنفي
- سريع ولا يحتاج تدريب مسبق
- مناسب للنصوص القصيرة
🔗 الشبكات العصبية LSTM للنصوص
LSTM (Long Short-Term Memory) هي نوع من الشبكات العصبية المتكررة مصممة خصيصاً لمعالجة التسلسلات الطويلة مثل النصوص.
شبكة LSTM للنصوص
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Embedding, Dropout
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from sklearn.model_selection import train_test_split
# إعداد البيانات للتدريب
texts = [
"أحب هذا الفيلم كثيراً",
"الفيلم ممل جداً",
"قصة رائعة وأداء متميز",
"لا أنصح بمشاهدته",
"من أفضل الأفلام التي شاهدتها"
]
labels = [1, 0, 1, 0, 1] # 1 = إيجابي، 0 = سلبي
# تحويل النصوص إلى أرقام
tokenizer = Tokenizer(num_words=1000)
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)
# توحيد طول التسلسلات
max_length = 10
X = pad_sequences(sequences, maxlen=max_length)
y = np.array(labels)
# بناء نموذج LSTM
model = Sequential([
Embedding(1000, 64, input_length=max_length),
LSTM(64, dropout=0.2, recurrent_dropout=0.2),
Dense(32, activation='relu'),
Dropout(0.5),
Dense(1, activation='sigmoid')
])
# تكوين النموذج
model.compile(
optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy']
)
print(model.summary())
# تدريب النموذج (مثال مبسط)
# model.fit(X, y, epochs=10, batch_size=32, validation_split=0.2)
⚠️ ملاحظة مهمة:
هذا مثال مبسط للتوضيح. في التطبيقات الحقيقية، تحتاج إلى مجموعة بيانات أكبر بكثير (آلاف أو ملايين النصوص) للحصول على نتائج جيدة.
🎯 Word Embeddings وWord2Vec
Word Embeddings هي تقنية لتحويل الكلمات إلى متجهات رقمية تحافظ على المعنى والعلاقات الدلالية بين الكلمات.
from gensim.models import Word2Vec
from gensim.utils import simple_preprocess
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
# نصوص للتدريب
sentences = [
"الذكاء الاصطناعي يغير العالم",
"التعلم الآلي جزء من الذكاء الاصطناعي",
"البيانات الضخمة مهمة للتعلم الآلي",
"الشبكات العصبية تحاكي الدماغ البشري",
"معالجة اللغات الطبيعية تطبيق مهم"
]
# تحضير البيانات
processed_sentences = [simple_preprocess(sentence) for sentence in sentences]
# تدريب نموذج Word2Vec
model = Word2Vec(
processed_sentences,
vector_size=100, # حجم المتجه
window=5, # نافذة السياق
min_count=1, # الحد الأدنى لتكرار الكلمة
workers=4 # عدد المعالجات
)
# الحصول على متجه كلمة
try:
vector = model.wv['الذكاء']
print(f"متجه كلمة 'الذكاء': {vector[:5]}...") # أول 5 عناصر
except KeyError:
print("الكلمة غير موجودة في النموذج")
# العثور على الكلمات المشابهة
try:
similar_words = model.wv.most_similar('الذكاء', topn=3)
print(f"الكلمات المشابهة لـ 'الذكاء': {similar_words}")
except KeyError:
print("لا توجد كلمات مشابهة كافية")
أدوات تحليل المشاعر
✅ فوائد Word Embeddings:
- تحافظ على المعنى الدلالي للكلمات
- تقلل من أبعاد البيانات
- تحسن أداء نماذج التعلم الآلي
- تتيح العمليات الحسابية على الكلمات
🚀 المشروع العملي: نظام تصنيف المراجعات الذكي
🎯 هدف المشروع:
بناء نظام ذكي لتصنيف مراجعات المنتجات إلى إيجابية أو سلبية باستخدام تقنيات معالجة اللغات الطبيعية.
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns
from wordcloud import WordCloud
import re
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
# إنشاء بيانات تجريبية
reviews_data = {
'review': [
"منتج رائع جداً، أنصح بشرائه",
"جودة ممتازة وسعر مناسب",
"خدمة سيئة ومنتج معيب",
"لا يستحق المال المدفوع",
"تجربة رائعة، سأشتري مرة أخرى",
"منتج عادي، لا شيء مميز",
"أفضل منتج اشتريته هذا العام",
"مضيعة للوقت والمال",
"جودة عالية وتسليم سريع",
"لا أنصح أحد بشرائه"
],
'sentiment': [1, 1, 0, 0, 1, 0, 1, 0, 1, 0] # 1 = إيجابي، 0 = سلبي
}
df = pd.DataFrame(reviews_data)
# تنظيف النصوص
def clean_text(text):
# إزالة الأرقام والرموز
text = re.sub(r'[0-9]+', '', text)
text = re.sub(r'[^\w\s]', '', text)
return text.strip()
df['cleaned_review'] = df['review'].apply(clean_text)
# تحويل النصوص إلى متجهات TF-IDF
vectorizer = TfidfVectorizer(max_features=1000, stop_words=None)
X = vectorizer.fit_transform(df['cleaned_review'])
y = df['sentiment']
# تقسيم البيانات
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)
# تدريب النموذج
model = LogisticRegression()
model.fit(X_train, y_train)
# التنبؤ
y_pred = model.predict(X_test)
# تقييم النموذج
print("تقرير التصنيف:")
print(classification_report(y_test, y_pred))
# اختبار النموذج على نص جديد
def predict_sentiment(text):
cleaned = clean_text(text)
vectorized = vectorizer.transform([cleaned])
prediction = model.predict(vectorized)[0]
probability = model.predict_proba(vectorized)[0]
sentiment = "إيجابي" if prediction == 1 else "سلبي"
confidence = max(probability) * 100
return sentiment, confidence
# اختبار
test_text = "هذا المنتج رائع ومفيد جداً"
sentiment, confidence = predict_sentiment(test_text)
print(f"النص: {test_text}")
print(f"المشاعر: {sentiment} (الثقة: {confidence:.1f}%)")
💪 التمارين العملية
🎯 التمرين الأول: تحليل مشاعر التغريدات
المطلوب: استخدم VADER لتحليل مشاعر مجموعة من التغريدات وإنشاء رسم بياني يوضح توزيع المشاعر.
البيانات: قم بإنشاء 20 تغريدة متنوعة (إيجابية، سلبية، محايدة)
المخرجات: رسم بياني دائري يوضح نسب المشاعر
🎯 التمرين الثاني: Word Cloud للكلمات الإيجابية والسلبية
المطلوب: إنشاء سحابتي كلمات منفصلتين للمراجعات الإيجابية والسلبية
البيانات: استخدم مجموعة من مراجعات المنتجات
المخرجات: صورتان تظهران أهم الكلمات في كل فئة
🎯 التمرين الثالث: مقارنة خوارزميات التصنيف
المطلوب: قارن بين 3 خوارزميات مختلفة لتصنيف المشاعر
الخوارزميات: Logistic Regression، Random Forest، SVM
المخرجات: جدول مقارنة يوضح الدقة والسرعة لكل خوارزمية
📈 مقارنة تقنيات معالجة اللغات الطبيعية
التقنية |
السرعة |
الدقة |
سهولة الاستخدام |
الاستخدام الأمثل |
VADER |
عالية جداً |
جيدة |
سهل جداً |
وسائل التواصل |
TF-IDF + ML |
عالية |
جيدة جداً |
متوسط |
النصوص الطويلة |
LSTM |
متوسطة |
ممتازة |
صعب |
النصوص المعقدة |
BERT |
منخفضة |
ممتازة جداً |
صعب جداً |
التطبيقات المتقدمة |
🎓 ملخص الدرس
✅ ما تعلمته في هذا الدرس:
- أساسيات معالجة اللغات الطبيعية وتطبيقاتها
- استخدام VADER لتحليل المشاعر السريع
- بناء شبكات LSTM لمعالجة النصوص
- تطبيق Word Embeddings وWord2Vec
- إنشاء نظام تصنيف المراجعات الذكي
- مقارنة تقنيات معالجة اللغات المختلفة
🚀 الخطوات التالية:
في الدرس القادم، سنجمع كل ما تعلمناه في مشروع نهائي متكامل لبناء نظام التوصية الذكي الذي يدمج جميع التقنيات التي درسناها.