الحشو والتقليم
غالبًا ما تختلف مدخلات الدُفعات في الطول، لذا لا يمكن تحويلها إلى مصفوفات ذات حجم ثابت .يُعدّ الحشو والتقليم هما استراتيجيتان للتعامل مع هذه المشكلة، لإنشاء مصفوفات مستطيلة من مجموعات ذات أطوال مختلفة. ويضيف الحشو رمز حشو خاص لضمان أن يكون للتسلسلات الأقصر نفس طول أطول تسلسل في الدفعة أو الطول الأقصى الذي يقبله النموذج. ويعمل التقليم عكس ذلك بتقليم التسلسلات الطويلة.
في معظم الحالات، ييُعدّ حشو دُفعتك إلى طول أطول تسلسل فيها وتقليمها إلى الطول الأقصى المقبول من النموذج حلًا فعالًا. ومع ذلك، تدعم واجهة برمجة التطبيقات المزيد من الاستراتيجيات إذا كنت بحاجة إليها. هناك ثلاثة معامﻻت تحتاجها لفهم آلية العمل: padding
، وtruncation
، وmax_length
.
يحكم معامل padding
عملية الحشو. يمكن أن يكون قيمة منطقية أو نصية:
True
أو'longest'
: الحشو إلى أطول تسلسل في الدفعة (لا يتم تطبيق الحشو عند تقديم تسلسل واحد فقط).'max_length'
: الحشو إلى طول محدد بواسطة معاملmax_length
أو الطول الأقصى الذي يقبله النموذج إذا لم يتم توفيرmax_length
(max_length=None
). سيظل الحشو مطبقًا إذا قدمت تسلسلًا واحدًا فقط.False
أو'do_not_pad'
: لا يتم تطبيق أي حشو. هذا هو السلوك الافتراضي.
تحكم معامل truncation
عملية التقليم. يمكن أن يكون قيمة منطقية أو نصية:
-قيمة True
أو 'longest_first'
: تقليم التسلسلات إلى طول أقصى مُحدد بواسطة معامل max_length
، أو أقصى طول يقبله النموذج في حال عدم تحديد طول مُحدد من قبل المستخدم (max_length=None
). ستتم عملية التقليم إزالة رمز تلو الآخر، بدءًا من أطول تسلسل في الزوج، إلى أن يصل الطول إلى القيمة المُحددة.
-قيمة 'only_second'
: اقطع إلى طول أقصى محدد بواسطة معامل max_length
أو أقصى طول يقبله النموذج إذا لم يتم توفير max_length
(max_length=None
). هذا سيقلم فقط الجملة الثانية من الزوج إذا تم توفير زوج من التسلسلات (أو دُفعة من أزواج التسلسلات).
-قيمة 'only_first'
: تقليم الجملة الأولى فقط من الزوج عند تقديم زوج من التسلسلات (أو دُفعة من أزواج التسلسلات) إلى طول أقصى مُحدد بواسطة حجة max_length
، أو أقصى طول يقبله النموذج في حال عدم تحديد طول مُحدد من قبل المستخدم (max_length=None
).
-قيمة False
أو 'do_not_truncate'
: لا يتم تطبيق أي تقليم. هذا هو السلوك الافتراضي.
“
يحكم معامل max_length
طول الحشو والتقليم. يمكن أن يكون عدد صحيح أو None
، وعندها يُحدد افتراضيًا إلى الطول الأقصى الذي يمكن أن يقبله النموذج. إذا لم يكن للنموذج طول إدخال أقصى محدد، يتم إلغاء تنشيط التقليم أو الحشو إلى max_length
.
يلخّص الجدول التالي الطريقة المُوصى بها لإعداد الحشو والتقليم. إذا كنت تستخدم أزواج تسلسلات الإدخال في أي من الأمثلة التالية، فيمكنك استبدال truncation=True
بـ STRATEGY
المحدد في ['only_first'، 'only_second'، 'longest_first']
، أي truncation='only_second'
أو truncation='longest_first'
للتحكم في كيفية تقليم كلا التسلسلين في الزوج كما هو موضّح سابقًا.
حيل الترميز
هناك العديد من الاستراتيجيات لترميز دفعات الجمل. فيما يلي بعض الأمثلة على ذلك.
الترميز | الحشو | التعليمات |
---|---|---|
لا ترميز | لا حشو | tokenizer(batch_sentences) |
الحشو إلى الحد الأقصى للتسلسل في الدفعة | tokenizer(batch_sentences, padding=True) أو | |
tokenizer(batch_sentences, padding='longest') | ||
الحشو إلى الحد الأقصى لطول إدخال النموذج | tokenizer(batch_sentences, padding='max_length') | |
الحشو إلى طول محدد | tokenizer(batch_sentences, padding='max_length', max_length=42) | |
الحشو إلى مضاعف لقيمة معينة | tokenizer(batch_sentences, padding=True, pad_to_multiple_of=8) | |
الترميز إلى الحد الأقصى لطول إدخال النموذج | لا حشو | tokenizer(batch_sentences, truncation=True) أو |
tokenizer(batch_sentences, truncation=STRATEGY) | ||
الحشو إلى الحد الأقصى للتسلسل في الدفعة | tokenizer(batch_sentences, padding=True, truncation=True) أو | |
tokenizer(batch_sentences, padding=True, truncation=STRATEGY) | ||
الحشو إلى الحد الأقصى لطول إدخال النموذج | tokenizer(batch_sentences, padding='max_length', truncation=True) أو | |
tokenizer(batch_sentences, padding='max_length', truncation=STRATEGY) | ||
الحشو إلى طول محدد | غير ممكن | |
الترميز إلى طول محدد | لا حشو | tokenizer(batch_sentences, truncation=True, max_length=42) أو |
tokenizer(batch_sentences, truncation=STRATEGY, max_length=42) | ||
الحشو إلى الحد الأقصى للتسلسل في الدفعة | tokenizer(batch_sentences, padding=True, truncation=True, max_length=42) أو | |
tokenizer(batch_sentences, padding=True, truncation=STRATEGY, max_length=42) | ||
الحشو إلى الحد الأقصى لطول إدخال النموذج | غير ممكن | |
الحشو إلى طول محدد | tokenizer(batch_sentences, padding='max_length', truncation=True, max_length=42) أو | |
tokenizer(batch_sentences, padding='max_length', truncation=STRATEGY, max_length=42) |