Path: blob/main/transformers_doc/ar/tensorflow/summarization.ipynb
4542 views
التلخيص (Summarization)
يقوم التلخيص بإنشاء نسخة مختصرة من مستند أو مقال، حيث يلتقط جميع المعلومات المهمة. بالإضافة إلى الترجمة، يعتبر التلخيص مثالاً آخر على مهمة يمكن صياغتها كتسلسل إلى تسلسل. يمكن أن يكون التلخيص:
استخراجي: استخراج أهم المعلومات من مستند.
تجريدي: إنشاء نص جديد يلخص أهم المعلومات.
سيوضح لك هذا الدليل كيفية:
ضبط دقيق T5 على مجموعة فرعية من مشاريع قوانين ولاية كاليفورنيا من مجموعة بيانات BillSum للتلخيص التجريدي.
استخدام النموذج المضبوط بدقة للتنبؤ.
لمشاهدة جميع البنى ونقاط التفتيش المتوافقة مع هذه المهمة، نوصي بالتحقق من صفحة المهمة
قبل البدء، تأكد من تثبيت جميع المكتبات الضرورية:
نشجعك على تسجيل الدخول إلى حساب Hugging Face الخاص بك حتى تتمكن من تحميل نموذجك ومشاركته مع المجتمع. عند المطالبة، أدخل الرمز المميز لتسجيل الدخول:
تحميل مجموعة بيانات BillSum
ابدأ بتحميل جزء صغير من بيانات مشاريع القوانين الخاصة بولاية كاليفورنيا من مجموعة بيانات BillSum في مكتبة 🤗 Datasets:
قسّم مجموعة البيانات إلى مجموعتي تدريب واختبار باستخدام الدالة train_test_split
:
ثم ألقِ نظرة على مثال:
هناك مُدخلان سترغب في استخدامهما:
text
: نص القانون الذي سيكون مُدخلًا للنموذج.summary
: نسخة مُختصرة منtext
والتي ستكون هدف النموذج.
المعالجة المسبقة (Preprocess)
الخطوة التالية هي تحميل مجزء النصوص T5 لمعالجة text
و summary
:
وظيفة المعالجة المسبقة التي تريد إنشاءها تحتاج إلى:
إضافة بادئة للمُدخل باستخدام توجيه حتى يعرف T5 أن هذه مهمة تلخيص. تتطلب بعض النماذج القادرة على مهام البرمجة اللغوية العصبية المتعددة توجيهات لمهام مُحددة.
استخدام مُعامل الكلمة الرئيسية
text_target
عند ترميز التصنيفات.قصّ التسلسلات بحيث لا يزيد طولها عن الحد الأقصى الذي تم تعيينه بواسطة مُعامل
max_length
.
لتطبيق دالة المعالجة المسبقة على مجموعة البيانات بأكملها، استخدم طريقة map
الخاصة بـ 🤗 Datasets. يمكنك تسريع دالة map
عن طريق تعيين batched=True
لمعالجة عناصر متعددة من مجموعة البيانات في وقت واحد:
الآن قم بإنشاء دفعة من الأمثلة باستخدام DataCollatorForSeq2Seq
. الأكثر كفاءة الحشو الديناميكي للجمل إلى أطول طول في دفعة أثناء عملية التجميع، بدلاً من حشو مجموعة البيانات بأكملها إلى الحد الأقصى للطول.
التقييم (Evaluate)
يُعد تضمين مقياس أثناء التدريب مفيدًا غالبًا لتقييم أداء نموذجك. يمكنك تحميل طريقة تقييم بسرعة باستخدام مكتبة 🤗 Evaluate. لهذه المهمة، قم بتحميل مقياس ROUGE (راجع الجولة السريعة الخاصة بـ 🤗 Evaluate لمعرفة المزيد حول كيفية تحميل وحساب مقياس):
ثم قم بإنشاء دالة تُمرر تنبؤاتك وتصنيفاتك إلى compute
لحساب مقياس ROUGE:
دالة compute_metrics
الخاصة بك جاهزة الآن، وستعود إليها عند إعداد التدريب الخاص بك.
التدريب (Train)
إذا لم تكن معتادًا على ضبط نموذج باستخدام Keras، فألق نظرة على البرنامج التعليمي الأساسي هنا!
ثم يمكنك تحميل T5 باستخدام TFAutoModelForSeq2SeqLM
:
حوّل مجموعات البيانات الخاصة بك إلى تنسيق tf.data.Dataset
باستخدام prepare_tf_dataset()
:
قم بتكوين النموذج للتدريب باستخدام compile
. لاحظ أن جميع نماذج Transformers لديها دالة خسارة ذات صلة بالمهمة افتراضيًا، لذلك لست بحاجة إلى تحديد واحدة ما لم تكن ترغب في ذلك:
آخر شيئين يجب إعدادهما قبل بدء التدريب هما حساب درجة ROUGE من التنبؤات، وتوفير طريقة لدفع نموذجك إلى Hub. يتم كلاهما باستخدام استدعاءات Keras.
مرر دالة compute_metrics
الخاصة بك إلى KerasMetricCallback
:
حدد مكان دفع نموذجك ومُحلِّلك اللغوي في PushToHubCallback
:
ثم اجمع استدعاءاتك معًا:
أخيرًا، أنت جاهز لبدء تدريب نموذجك! اتصل بـ fit
مع مجموعات بيانات التدريب والتحقق من الصحة وعدد الحقب واستدعاءاتك لضبط النموذج:
بمجرد اكتمال التدريب، يتم تحميل نموذجك تلقائيًا إلى Hub حتى يتمكن الجميع من استخدامه!
للحصول على مثال أكثر تعمقًا حول كيفية ضبط نموذج للتجميع، ألقِ نظرة على دفتر ملاحظات PyTorch أو دفتر ملاحظات TensorFlow المقابل.
الاستدلال (Inference)
رائع، الآن بعد أن قمت بضبط نموذج، يمكنك استخدامه للاستدلال!
خدد بعض النصوص الذي ترغب في تلخيصها. بالنسبة لـ T5، تحتاج إلى إضافة بادئة إلى مُدخلاتك اعتمادًا على المهمة التي تعمل عليها. بالنسبة التلخيص، يجب عليك إضافة بادئة إلى مُدخلاتك كما هو موضح أدناه:
أبسط طريقة لتجربة نموذجك المضبوط للاستدلال هي استخدامه في pipeline()
. استخدم pipeline
للتلخيص باستخدام نموذجك، ومرر نصك إليه:
يمكنك أيضًا تكرار نتائج pipeline
يدويًا إذا أردت:
قسم النص وإرجع input_ids
كتنسورات TensorFlow:
استخدم طريقة ~transformers.generation_tf_utils.TFGenerationMixin.generate
لإنشاء التلخيص. لمزيد من التفاصيل حول استراتيجيات توليد النص المختلفة والمعلمات للتحكم في التوليد، راجع واجهة برمجة تطبيقات توليد النص.
فك تشفير معرفات الرموز المولدة مرة أخرى إلى نص: