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