Path: blob/main/transformers_doc/ar/pytorch/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)
إذا لم تكن معتادًا على ضبط نموذج باستخدام Trainer
، فألق نظرة على البرنامج التعليمي الأساسي هنا!
أنت جاهز لبدء تدريب نموذجك الآن! قم بتحميل T5 باستخدام AutoModelForSeq2SeqLM
:
في هذه المرحلة، لم يتبق سوى ثلاث خطوات:
حدد مُعامِلات التدريب الخاصة بك في
Seq2SeqTrainingArguments
. المعامل الوحيد المطلوب هوoutput_dir
الذي يُحدد مكان حفظ نموذجك. ستدفع هذا النموذج إلى Hub عن طريق تعيينpush_to_hub=True
(تحتاج إلى تسجيل الدخول إلى Hugging Face لتحميل نموذجك). في نهاية كل حقبة، سيقومTrainer
بتقييم مقياس ROUGE وحفظ نقطة تفتيش التدريب.مرر مُعامِلات التدريب إلى
Seq2SeqTrainer
جنبًا إلى جنب مع النموذج ومجموعة البيانات والمُحلِّل اللغوي وجامع البيانات ودالةcompute_metrics
.استدعِ
train()
لضبط نموذجك.
بمجرد اكتمال التدريب، شارك نموذجك مع Hub باستخدام طريقة push_to_hub()
حتى يتمكن الجميع من استخدام نموذجك:
للحصول على مثال أكثر تعمقًا حول كيفية ضبط نموذج للتجميع، ألقِ نظرة على دفتر ملاحظات PyTorch أو دفتر ملاحظات TensorFlow المقابل.
الاستدلال (Inference)
رائع، الآن بعد أن قمت بضبط نموذج، يمكنك استخدامه للاستدلال!
خدد بعض النصوص الذي ترغب في تلخيصها. بالنسبة لـ T5، تحتاج إلى إضافة بادئة إلى مُدخلاتك اعتمادًا على المهمة التي تعمل عليها. بالنسبة التلخيص، يجب عليك إضافة بادئة إلى مُدخلاتك كما هو موضح أدناه:
أبسط طريقة لتجربة نموذجك المضبوط للاستدلال هي استخدامه في pipeline()
. استخدم pipeline
للتلخيص باستخدام نموذجك، ومرر نصك إليه:
يمكنك أيضًا تكرار نتائج pipeline
يدويًا إذا أردت:
قسم النص وإرجع input_ids
كتنسورات PyTorch:
استخدم طريقة generate()
لإنشاء التلخيص. لمزيد من التفاصيل حول استراتيجيات توليد النص المختلفة والمعلمات للتحكم في التوليد، راجع واجهة برمجة تطبيقات توليد النص.
فك تشفير معرفات الرموز المولدة مرة أخرى إلى نص: