تطبيقات Deep Learning في Natural Language Processing باستخدام Keras
تطبيقات Deep Learning في Natural Language Processing (NLP) باستخدام Keras: دليل شامل
في هذا الدليل، سنتعلم كيفية استخدام تقنيات التعلم العميق (Deep Learning) لمعالجة اللغة الطبيعية (Natural Language Processing – NLP) باستخدام مكتبة Keras. تتضمن معالجة اللغة الطبيعية مجموعة من التطبيقات مثل تحليل المشاعر (Sentiment Analysis)، الترجمة الآلية (Machine Translation)، وتصنيف النصوص. سنتناول كيفية استخدام Keras لبناء نموذج يعتمد على الشبكات العصبية المتكررة (Recurrent Neural Networks) مثل LSTM، وسنستخدم بيانات حقيقية لتوضيح كل خطوة.
1. ما هو Natural Language Processing (NLP)؟
معالجة اللغة الطبيعية هي مجال يهدف إلى تمكين الحواسيب من فهم اللغة البشرية وتحليلها بشكل آلي. تشمل تطبيقاتها الرئيسية تحليل المشاعر، التصنيف النصي، الترجمة الآلية، والتعرف على الكيانات المسماة. باستخدام تقنيات التعلم العميق مثل LSTM و GRU، يمكن تدريب النماذج على معالجة تسلسل النصوص واستخراج الأنماط المعقدة.
2. استخدام Keras في تطبيقات NLP
Keras هي مكتبة عالية المستوى لبناء نماذج التعلم العميق بشكل سريع وسهل. في NLP، نستخدم طبقات مثل Embedding
لتحويل الكلمات إلى تمثيلات عددية كثيفة، وLSTM
أو GRU
لمعالجة تسلسل النصوص الطويلة. يمكن أيضًا الاستفادة من تعلّم الانتقالات الزمنية باستخدام هذه الطبقات.
3. تثبيت Keras و TensorFlow
قبل البدء في بناء النموذج، تأكد من تثبيت مكتبة Keras و TensorFlow باستخدام الأمر التالي:
pip install tensorflow keras
4. استخدام بيانات حقيقية من IMDB لتحليل المشاعر
سنستخدم مجموعة بيانات IMDB، وهي عبارة عن مجموعة نصوص تحتوي على مراجعات أفلام مصنفة إما كمراجعات إيجابية أو سلبية. هذه البيانات مثالية لتطبيق تحليل المشاعر باستخدام تصنيف ثنائي.
from keras.datasets import imdb
from keras.preprocessing.sequence import pad_sequences
# تحميل مجموعة بيانات IMDB
max_features = 10000 # تحديد عدد الكلمات الأكثر شيوعاً
maxlen = 100 # تحديد طول التسلسل
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
# توحيد طول التسلسلات عبر الحشو
x_train = pad_sequences(x_train, maxlen=maxlen)
x_test = pad_sequences(x_test, maxlen=maxlen)
print(f'Training samples: {len(x_train)}, Test samples: {len(x_test)}')
في هذا المثال، نستخدم pad_sequences
لتوحيد أطوال التسلسلات النصية في البيانات، بحيث تكون جميع المراجعات بنفس الطول. سيتم تقليص أو زيادة طول المراجعات إلى 100 كلمة.
5. بناء نموذج LSTM لتحليل المشاعر باستخدام Keras
سنقوم الآن ببناء نموذج يعتمد على طبقة Embedding
لتحويل الكلمات إلى تمثيلات كثيفة، وLSTM
لمعالجة التسلسلات النصية. سنستخدم طبقة Dense
مع دالة التفعيل sigmoid
لتصنيف المشاعر إما إيجابية أو سلبية.
from keras.models import Sequential
from keras.layers import Embedding, LSTM, Dense, Dropout
# بناء النموذج
model = Sequential()
model.add(Embedding(input_dim=max_features, output_dim=128, input_length=maxlen))
model.add(LSTM(128, return_sequences=False))
model.add(Dropout(0.5)) # إضافة Dropout لتجنب الإفراط في التكيف
model.add(Dense(1, activation='sigmoid')) # طبقة إخراج للتصنيف الثنائي
# تجميع النموذج
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# عرض ملخص النموذج
model.summary()
شرح الكود:
Embedding
: هذه الطبقة تقوم بتحويل الكلمات إلى تمثيلات كثيفة بأبعاد 128.LSTM
: هذه الطبقة تقوم بمعالجة تسلسل النص وتتعلم الأنماط عبر الزمن.Dropout
: هذه الطبقة تقلل من الإفراط في التكيف (overfitting) عن طريق تجاهل بعض الوحدات العصبية أثناء التدريب.Dense
: طبقة الإخراج تستخدمsigmoid
للتصنيف الثنائي (إيجابي/سلبي).
6. تدريب النموذج
الآن يمكننا تدريب النموذج باستخدام مجموعة بيانات IMDB التي قمنا بتجهيزها. سنقوم بتقسيم بيانات التدريب إلى 80% للتدريب و 20% للتحقق.
# تدريب النموذج
history = model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2)
يقوم النموذج بتحديث الأوزان بناءً على بيانات التدريب. يتم استخدام جزء من البيانات للتحقق من الأداء على بيانات جديدة لم يتم رؤيتها أثناء التدريب.
7. تقييم النموذج
بعد الانتهاء من التدريب، يمكننا تقييم النموذج على بيانات الاختبار لقياس دقته. يمكننا أيضًا استخدام مقاييس أخرى مثل الدقة (precision) والاستدعاء (recall).
# تقييم النموذج على بيانات الاختبار
loss, accuracy = model.evaluate(x_test, y_test)
print(f'Accuracy: {accuracy * 100:.2f}%')
# حساب مقاييس أخرى مثل precision, recall
from sklearn.metrics import precision_score, recall_score
y_pred = (model.predict(x_test) > 0.5).astype("int32") # التنبؤ بالمشاعر
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
print(f'Precision: {precision:.2f}, Recall: {recall:.2f}')
يتم عرض الدقة بالإضافة إلى مقاييس أخرى مثل precision (الدقة) و recall (الاستدعاء)، وهي مفيدة في تقييم أداء النموذج بشكل أوسع من مجرد دقة التصنيف.
8. استخدام النموذج للتنبؤ بمراجعات جديدة
بعد تدريب النموذج، يمكننا استخدامه لتصنيف مراجعات جديدة. على سبيل المثال، إذا كانت لدينا مراجعة فيلم جديدة، يمكننا ترميزها بنفس الطريقة التي قمنا بها مع بيانات التدريب، ثم تمريرها إلى النموذج للحصول على التنبؤ.
# مراجعة جديدة
new_review = ["الفيلم كان رائعًا وممتعًا للغاية"]
new_sequence = tokenizer.texts_to_sequences(new_review)
new_padded_sequence = pad_sequences(new_sequence, maxlen=maxlen)
# التنبؤ
prediction = model.predict(new_padded_sequence)
sentiment = "إيجابي" if prediction > 0.5 else "سلبي"
print(f'التنبؤ بالمشاعر: {sentiment}')
9. الخاتمة
في هذا الدليل، تعلمنا كيفية استخدام Keras لبناء نموذج LSTM لتحليل المشاعر باستخدام بيانات IMDB. قمنا بتوضيح كيفية تجهيز البيانات النصية، بناء نموذج التعلم العميق، تدريب النموذج، وتقييم أدائه باستخدام مجموعة متنوعة من المقاييس. هذه الأساليب يمكن تطبيقها على مشاكل NLP أخرى مثل تصنيف النصوص أو الترجمة الآلية.
اترك تعليقاً