المزيد من مشاريع التعلم العميق......مشاريع التعلم العميق

مشروع 18: تصنيف النص باستخدام TensorFlow في التعلم العميق

اقرأ في هذا المقال
  • تصنيف النص باستخدام TensorFlow
  • استكشاف البيانات
  • بناء نموذج تصنيف النص
  • تجميع النموذج
  • تدريب نموذج تصنيف النص
  • تقييم النموذج

 

في هذه المقالة، سأقدم لك نموذج تصنيف النص باستخدام TensorFlow في مراجعات الأفلام على أنها إيجابية أو سلبية باستخدام نص المراجعات. هذه مشكلة تصنيف ثنائي، وهي نوع مهم وقابل للتطبيق على نطاق واسع من مشاكل التعلم الآلي.

تصنيف النص باستخدام TensorFlow

سأوجهك عبر التطبيق الأساسي لنقل التعلم باستخدام TensorFlow Hub وKeras. سأستخدم مجموعة بيانات IMDB التي تحتوي على نصوص 50،000 فيلم من قاعدة بيانات الأفلام على الإنترنت. وهي مقسمة إلى 25000 تقييم للتدريب و25000 تقييم للاختبار. يتم موازنة مجموعات التدريب والاختبار بطريقة تحتوي على عدد متساوٍ من المراجعات الإيجابية والسلبية.

الآن، لنبدأ بهذه المهمة الخاصة بتصنيف النص باستخدام TensorFlow عن طريق استيراد بعض المكتبات الضرورية:

import numpy as np

import tensorflow as tf

!pip install tensorflow-hub
!pip install tensorflow-datasets
import tensorflow_hub as hub
import tensorflow_datasets as tfds

print("Version: ", tf.__version__)
print("Eager mode: ", tf.executing_eagerly())
print("Hub version: ", hub.__version__)
print("GPU is", "available" if tf.config.experimental.list_physical_devices("GPU") else "NOT AVAILABLE")

على الرغم من أن مجموعة البيانات التي أستخدمها هنا متاحة للتنزيل عبر الإنترنت، إلا أنني سأقوم ببساطة بتحميل البيانات باستخدام TensorFlow. هذا يعني أنك لست بحاجة إلى تنزيل مجموعة البيانات من أي مصادر خارجية. الآن، سأقوم ببساطة بتحميل البيانات وتقسيمها إلى مجموعات تدريب واختبار:

# Split the training set into 60% and 40%, so we'll end up with 15,000 examples
# for training, 10,000 examples for validation and 25,000 examples for testing.
train_data, validation_data, test_data = tfds.load(
    name="imdb_reviews", 
    split=('train[:60%]', 'train[60%:]', 'test'),
    as_supervised=True)

استكشاف البيانات

دعونا نلقي نظرة على البيانات لمعرفة ما سنعمل معه. سأقوم ببساطة بطباعة أول 10 عينات من مجموعة البيانات:

train_examples_batch, train_labels_batch = next(iter(train_data.batch(10)))
train_examples_batch

الآن، دعنا نطبع أول 10 تسميات من مجموعة البيانات:

بناء نموذج تصنيف النص

لبناء نموذج لمهمة تصنيف النص باستخدام TensorFlow، سأستخدم نموذجًا تم تدريبه مسبقًا مقدمًا من TensorFlow والذي يُعرف باسم TensorFlow Hub. دعنا أولاً ننشئ طبقة Keras تستخدم نموذج TensorFlow Hub في الجمل المضمنة، ونجربها في بعض نماذج الإدخال:

embedding = "https://tfhub.dev/google/tf2-preview/gnews-swivel-20dim/1"
hub_layer = hub.KerasLayer(embedding, input_shape=[], 
                           dtype=tf.string, trainable=True)
hub_layer(train_examples_batch[:3])

الآن قم ببناء النموذج على مجموعة البيانات الكاملة:

model = tf.keras.Sequential()
model.add(hub_layer)
model.add(tf.keras.layers.Dense(16, activation='relu'))
model.add(tf.keras.layers.Dense(1))
model.summary()  

تجميع النموذج

الآن، سأقوم بتجميع compile النموذج باستخدام دالة الخسارة ومحسن آدم:

model.compile(optimizer='adam',
              loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
              metrics=['accuracy'])

تدريب نموذج تصنيف النص

تدريب النموذج لمدة 20 حقبة في مجموعات صغيرة من 512 عينة. هذه 20 تكرارًا على جميع عينات الموتر x_train و y_train. أثناء التدريب، راقب خطأ النموذج ودقته على 10000 عينة في مجموعة التحقق من الصحة:

history = model.fit(train_data.shuffle(10000).batch(512),
                    epochs=20,
                    validation_data=validation_data.batch(512),
                    verbose=1)

تقييم النموذج

ودعونا نرى كيف يعمل نموذج تصنيف النص. سيتم إرجاع قيمتين. معدل الخسارة والدقة:

results = model.evaluate(test_data.batch(512), verbose=2)

for name, value in zip(model.metrics_names, results):
  print("%s: %.3f" % (name, value))

49/49 - 3s - loss: 0.3217 - accuracy: 0.8553
loss: 0.322
accuracy: 0.855

لذلك حقق نموذج تصنيف النص لدينا معدل دقة بنسبة 85 في المائة وهو موضع تقدير بشكل عام. أتمنى أن تكون قد أحببت هذا المقال حول نموذج تصنيف النص باستخدام TensorFlow.

المصدر
Text Classification with TensorFlow in Machine Learning

د. علاء طعيمة

كلية علوم الحاسوب وتكنولوجيا المعلومات / جامعة القادسية / العراق

مقالات ذات صلة

تعليق واحد

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى