أقسام الوصول السريع (مربع البحث)

📰 آخر الأخبار

📝 الدرس التاسع: معالجة اللغات الطبيعية

الدرس التاسع: معالجة اللغات الطبيعية - تحليل النصوص والمشاعر

الدرس التاسع: معالجة اللغات الطبيعية

تحليل النصوص والمشاعر باستخدام الذكاء الاصطناعي

⏱️ المدة: 120-150 دقيقة
📊 المستوى: متقدم
🎯 المشاريع: 1 مشروع شامل
💻 التمارين: 3 تمارين عملية
معالجة اللغات الطبيعية
صورة شاملة لمعالجة اللغات الطبيعية

🧠 مقدمة في معالجة اللغات الطبيعية

🎯 ما ستتعلمه في هذا الدرس:

  • أساسيات معالجة اللغات الطبيعية (NLP)
  • تحليل المشاعر باستخدام VADER
  • الشبكات العصبية LSTM للنصوص
  • Word Embeddings وWord2Vec
  • بناء نظام تصنيف المراجعات الذكي

معالجة اللغات الطبيعية (Natural Language Processing) هي فرع من فروع الذكاء الاصطناعي يهتم بتمكين الحاسوب من فهم وتحليل ومعالجة اللغة البشرية الطبيعية.

85%
من البيانات غير منظمة
2.5
كوينتيليون بايت يومياً
50+
لغة مدعومة
الذكاء الاصطناعي ومعالجة اللغات
الذكاء الاصطناعي ومعالجة اللغات الطبيعية

📚 تطبيقات معالجة اللغات الطبيعية

  • التجارة الإلكترونية: تحليل مراجعات المنتجات
  • وسائل التواصل: مراقبة المشاعر العامة
  • خدمة العملاء: الردود الآلية الذكية
  • الطب: تحليل التقارير الطبية
  • التمويل: تحليل الأخبار المالية

📊 تحليل المشاعر باستخدام 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 للنصوص
شبكة 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}%)")
92%
دقة التصنيف
1000
ميزة TF-IDF
0.3
ثانية للتنبؤ

💪 التمارين العملية

🎯 التمرين الأول: تحليل مشاعر التغريدات

المطلوب: استخدم VADER لتحليل مشاعر مجموعة من التغريدات وإنشاء رسم بياني يوضح توزيع المشاعر.

البيانات: قم بإنشاء 20 تغريدة متنوعة (إيجابية، سلبية، محايدة)

المخرجات: رسم بياني دائري يوضح نسب المشاعر

🎯 التمرين الثاني: Word Cloud للكلمات الإيجابية والسلبية

المطلوب: إنشاء سحابتي كلمات منفصلتين للمراجعات الإيجابية والسلبية

البيانات: استخدم مجموعة من مراجعات المنتجات

المخرجات: صورتان تظهران أهم الكلمات في كل فئة

🎯 التمرين الثالث: مقارنة خوارزميات التصنيف

المطلوب: قارن بين 3 خوارزميات مختلفة لتصنيف المشاعر

الخوارزميات: Logistic Regression، Random Forest، SVM

المخرجات: جدول مقارنة يوضح الدقة والسرعة لكل خوارزمية

📈 مقارنة تقنيات معالجة اللغات الطبيعية

التقنية السرعة الدقة سهولة الاستخدام الاستخدام الأمثل
VADER عالية جداً جيدة سهل جداً وسائل التواصل
TF-IDF + ML عالية جيدة جداً متوسط النصوص الطويلة
LSTM متوسطة ممتازة صعب النصوص المعقدة
BERT منخفضة ممتازة جداً صعب جداً التطبيقات المتقدمة

🎓 ملخص الدرس

✅ ما تعلمته في هذا الدرس:

  • أساسيات معالجة اللغات الطبيعية وتطبيقاتها
  • استخدام VADER لتحليل المشاعر السريع
  • بناء شبكات LSTM لمعالجة النصوص
  • تطبيق Word Embeddings وWord2Vec
  • إنشاء نظام تصنيف المراجعات الذكي
  • مقارنة تقنيات معالجة اللغات المختلفة

🚀 الخطوات التالية:

في الدرس القادم، سنجمع كل ما تعلمناه في مشروع نهائي متكامل لبناء نظام التوصية الذكي الذي يدمج جميع التقنيات التي درسناها.

تعليقات