Transformers documentation
مُجزِّئ
مُجزِّئ
يتولى مُجزِّئ الرموز (tokenizer) مسؤولية تجهيز المدخلات للنموذج. يحتوي المكتبة على مُجزِّئات رموز لجميع النماذج. معظم مُجزِّئات الرموز متاحة بنوعين: تطبيق كامل بلغة بايثون، وتطبيق "سريع" (Fast) يعتمد على مكتبة Rust 🤗 Tokenizers. تتيح التطبيقات "السريعة":
- تسريع كبير، لا سيما عند تنفيذ الترميز الدفري
- طرق إضافية للربط بين النص الأصلي (الأحرف والكلمات) ومساحة الرموز (مثل الحصول على فهرس الرمز الذي يتكون منه حرف معين، أو نطاق الأحرف المقابل لرمز معين).
تُنفّذ الفئات الأساسية PreTrainedTokenizer وPreTrainedTokenizerFast الطرق المشتركة لتشفير مدخلات النص في مدخلات النموذج (انظر أدناه) ولإنشاء/حفظ مُجزّئات Python و"Fast" سواءً من ملف أو مجلد محلي أو من مُجزّئ مُدرَّب مسبقًا توفره المكتبة (يتم تنزيله من مستودع AWS S3 الخاص بـ HuggingFace). وتعتمد كلاهما على PreTrainedTokenizerBase التي تحتوي على الطرق المشتركة.
تُنفّذ PreTrainedTokenizer وPreTrainedTokenizerFast بالتالي الطرق الرئيسية لاستخدام جميع المرمّزات:
- تجزئة (تقسيم السلاسل إلى رموز فرعية)، وتحويل سلاسل الرموز إلى معرّفات والعكس، والتشفير/فك التشفير (أي التجزئة والتحويل إلى أرقام صحيحة).
- إضافة رموز جديدة إلى المفردات بطريقة مستقلة عن البنية الأساسية (BPE، SentencePiece…).
- إدارة الرموز الخاصة (مثل رمز القناع، ورمز بداية الجملة، وغيرها): إضافتها، وتعيينها إلى سمات في لسهولة الوصول إليها، والتأكد من عدم تقسيمها أثناء عملية الترميز.
يحتوي BatchEncoding على مخرجات طرق الترميز الخاصة بـ PreTrainedTokenizerBase (__call__ وencode_plus وbatch_encode_plus) وهو مشتق من قاموس بايثون. عندما يكون المرمّز مرمّز بايثون خالص، يتصرف هذا الصنف تمامًا مثل قاموس بايثون قياسي ويحتوي على مدخلات النموذج المختلفة التي تحسبها هذه الطرق (input_ids، attention_mask…). عندما يكون المرمّز مرمّزًا "سريعًا" (أي مدعومًا بمكتبة tokenizers من HuggingFace)، يوفر هذا الصنف بالإضافة إلى ذلك عدة طرق محاذاة متقدمة يمكن استخدامها للربط بين النص الأصلي (الأحرف والكلمات) ومساحة الرموز (مثلًا، الحصول على فهرس الرمز الذي يتكون منه حرف معين أو نطاق الأحرف المقابل لرمز معين).
مُجزِّئ متعدد الوسائط
علاوة على ذلك، يمكن أن يكون كل مُجزِّئ (tokenizer) مُجزِّئًا «متعدد الوسائط»، مما يعني أن المُجزِّئ سيحتفظ بجميع الرموز الخاصة ذات الصلة كجزء من سمات المُجزِّئ لتسهيل الوصول إليها. على سبيل المثال، إذا تم تحميل المُجزِّئ من نموذج لغوي بصري مثل LLaVA، فستتمكن من الوصول إلى tokenizer.image_token_id للحصول على الرمز الخاص بالصورة المستخدم كعنصر نائب.
لتفعيل رموز خاصة إضافية لأي نوع من مُجزّئات النص، يجب عليك إضافة الأسطر التالية وحفظ مُجزّئ النص. لا يتعين أن تكون الرموز الخاصة الإضافية مرتبطة بنوع البيانات، بل يمكن أن تكون أي شيء يحتاج النموذج إلى الوصول إليه بشكل متكرر. في الكود أدناه، سيحصل مُجزّئ النص الموجود في output_dir على وصول مباشر إلى ثلاثة رموز خاصة إضافية.
vision_tokenizer = AutoTokenizer.from_pretrained(
"llava-hf/llava-1.5-7b-hf",
extra_special_tokens={"image_token": "<image>", "boi_token": "<image_start>", "eoi_token": "<image_end>"}
)
print(vision_tokenizer.image_token, vision_tokenizer.image_token_id)
("<image>", 32000)PreTrainedTokenizer
فئة transformers.PythonBackend
< source >( **kwargs )
المعاملات
- model_max_length (
int, اختياري) — الحد الأقصى للطول (بعدد الرموز) للمدخلات إلى نموذج التحويل. عند تحميل مُجزّئ الرموز باستخدام from_pretrained()، سيتم تعيينه إلى القيمة المخزنة للنموذج المرتبط به فيmax_model_input_sizes(انظر أعلاه). إذا لم يتم تقديم قيمة، فسيكون الافتراضي VERY_LARGE_INTEGER (int(1e30)). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - truncation_side (
str، اختياري) — الجهة التي يجب تطبيق القص عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - chat_template (
str، اختياري) — نص قالب Jinja يُستخدم لتنسيق قوائم رسائل الدردشة. راجع https://huggingface.co/docs/transformers/chat_templating للحصول على وصف كامل. - model_input_names (
list[string]، اختياري) — قائمة المدخلات التي يقبلها المسار الأمامي للنموذج (مثل"token_type_ids"أو"attention_mask"). القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - bos_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل بداية الجملة. - eos_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل نهاية الجملة. - unk_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل رمزًا خارج نطاق المفردات. - sep_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يفصل بين جملتين مختلفتين في نفس المدخل (يُستخدم في BERT على سبيل المثال). - pad_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يُستخدم لجعل مصفوفات الرموز متساوية الحجم لأغراض الدفع (batching). ثم يتم تجاهله من قبل آليات الانتباه أو حساب الخسارة. - cls_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل فئة الإدخال (يُستخدم في BERT على سبيل المثال). - mask_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل الرمز المقنّع (يُستخدم في أهداف ما قبل التدريب لنمذجة اللغة المقنّعة، مثل BERT). سيُربط بـself.mask_tokenوself.mask_token_id. - extra_special_tokens (قائمة من
strأوtokenizers.AddedToken، اختياري) — قائمة من الرموز الخاصة الإضافية المحددة للنموذج. أضفها هنا للتأكد من تجاوزها عند فك الترميز عندما يكونskip_special_tokensمضبوطاً على True. إذا لم تكن جزءاً من المفردات، فسيتم إضافتها في نهاية المفردات. - split_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب تقسيم الرموز الخاصة أثناء عملية الترميز. تمرير القيمة سيؤثر على الحالة الداخلية للمرمِّز. السلوك الافتراضي هو عدم تقسيم الرموز الخاصة. وهذا يعني أنه إذا كان<s>هوbos_token، فإنtokenizer.tokenize("<s>") = ['<s>]. وإلا، إذا كانsplit_special_tokens=True، فإنtokenizer.tokenize("<s>")سيعطي['<','s', '>'].
الفئة الأساسية لجميع المرمّزات البطيئة.
يرث من PreTrainedTokenizerBase.
التعامل مع جميع الطرق المشتركة للتجزئة والرموز الخاصة، وكذلك الطرق الخاصة بتنزيل/تخزين/تحميل المجزئات المُدرَّبة مسبقًا، بالإضافة إلى إضافة رموز إلى المفردات.
تحتوي هذه الفئة أيضًا على الرموز المضافة بطريقة موحّدة فوق جميع مُجزّئات الرموز، حتى لا نضطر إلى التعامل مع طرق توسيع المفردات المحددة للهياكل القاموسية الأساسية المختلفة (BPE، sentencepiece…).
خصائص الفئة (المُعاد تعريفها في الفئات المشتقة)
- vocab_files_names (
dict[str, str]) — قاموس تكون مفاتيحه أسماء كلمات المفتاح__init__لكل ملف مفردات مطلوب من النموذج، وقيمته المرتبطة هي اسم الملف لحفظ الملف المرتبط (نص). - pretrained_vocab_files_map (
dict[str, dict[str, str]]) — قاموس من القواميس، حيث تكون المفاتيح العليا هي اسم كلمة المفتاح__init__لكل ملف مفردات مطلوب من النموذج، والمفاتيح الدنيا هيshort-cut-namesللنماذج المُدرَّبة مسبقاً، مع قيم مرتبطة بها هيurlلملف المفردات المُدرَّب مسبقاً المرتبط. - model_input_names (
list[str]) — قائمة بالمُدخلات المتوقعة في مسار الأمامي (forward pass) للنموذج. - padding_side (
str) — القيمة الافتراضية للجهة التي يجب تطبيق الحشو عليها في النموذج. يجب أن تكون'right'أو'left'. - truncation_side (
str) — القيمة الافتراضية للجهة التي يجب تطبيق القص عليها في النموذج. يجب أن تكون'right'أو'left'.
__call__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
المعاملات
- text (
str،list[str]،list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نصوص مُقسّمة مسبقًا إلى رموز). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسّمة مسبقًا)، فيجب تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - text_pair (
str،list[str]،list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نصوص مُقسّمة مسبقًا إلى رموز). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسّمة مسبقًا)، فيجب تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - text_target (
str،list[str]،list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات التي سيتم ترميزها كنصوص هدف. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُقسَّم مسبقًا إلى وحدات). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مُقسَّمة مسبقًا)، فيجب عليك تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - text_pair_target (
str،list[str]،list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات التي سيتم ترميزها كنصوص هدف. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُقسَّم مسبقًا إلى وحدات). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مُقسَّمة مسبقًا)، فيجب عليك تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - tokenizer_kwargs (
dict[str, Any], اختياري) — معاملات إضافية (kwargs) تُمرَّر إلى مُجزِّئ النص (tokenizer). سيتم دمج هذه المعاملات مع المعاملات الصريحة ومعاملات أخرى، مع إعطاء الأولوية للمعاملات الصريحة. - add_special_tokens (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إضافة الرموز الخاصة عند ترميز التسلسلات أم لا. سيستخدم هذا الدالة الأساسيةPretrainedTokenizerBase.build_inputs_with_special_tokens، التي تحدد الرموز التي تُضاف تلقائيًا إلى معرّفات الإدخال. يكون هذا مفيدًا إذا كنت ترغب في إضافة رموزbosأوeosتلقائيًا. - padding (
bool,strأو PaddingStrategy, اختياري, الافتراضي هوFalse) — يُفعّل التحكم في الحشو. يقبل القيم التالية:Trueأو'longest': يتم ملء التسلسلات حتى أطول تسلسل في الدفعة (أو لا يتم أي ملء إذا تم تقديم تسلسل واحد فقط).'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجةmax_lengthأو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.Falseأو'do_not_pad'(الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
- truncation (
bool,strأو TruncationStrategy, اختياري, الافتراضي هوFalse) — تفعيل التحكم في القص. يقبل القيم التالية:Trueأو'longest_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. يتم هذا القص رمزًا تلو الآخر، حيث يُزال رمز من أطول تسلسل في الزوج إذا كان قد قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).'only_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يُقصّ هذا الخيار سوى التسلسل الأول من الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).'only_second': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يتم قصّ النص الثاني من الزوج إلا إذا قُدِّم زوج من النصوص (أو دفعة من الأزواج).Falseأو'do_not_truncate'(الافتراضي): لا يوجد اقتطاع (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال في النموذج).
- max_length (
int, اختياري) — يتحكم في الحد الأقصى للطول الذي ستستخدمه إحدى معاملات القص/الحشو.إذا تُرك غير مُعيَّن أو عُدِّل إلى
None، فسيتم استخدام الطول الأقصى المُعرَّف مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب طولًا أقصى. وإذا لم يكن للنموذج طول إدخال أقصى محدد (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى طول أقصى. - stride (
int، اختياري، القيمة الافتراضية 0) — إذا تم تعيينه إلى رقم معmax_length، فستحتوي الرموز الزائدة المُعاد عندreturn_overflowing_tokens=Trueعلى بعض الرموز من نهاية التسلسل المُقتطع المُعاد، لتوفير بعض التداخل بين التسلسلات المُقتطعة والتسلسلات الزائدة. تحدد قيمة هذا الحجة عدد الرموز المتداخلة. - is_split_into_words (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان المدخل مُجزَّأً مسبقاً (على سبيل المثال، مقسَّماً إلى كلمات). إذا تم ضبطه علىTrue، يفترض المُجزِّئ أن المدخل مقسَّم بالفعل إلى كلمات (على سبيل المثال، عن طريق تقسيمه على المسافات) وسيُجزِّئها. هذا مفيد لتصنيف الكيانات الاسمية أو تصنيف الرموز. - pad_to_multiple_of (
int, اختياري) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المقدمة. يتطلب تفعيلpadding. هذا مفيد بشكل خاص لتمكين استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية حساب>= 7.5(Volta). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات بدلاً من قائمة من الأعداد الصحيحة في Python. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن نوع Numpy.
- return_token_type_ids (
bool, اختياري) — ما إذا كان يجب إرجاع معرّفات أنواع الرموز. إذا تُركت القيمة الافتراضية، فسيتم إرجاع معرّفات أنواع الرموز وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما تحددها خاصيةreturn_outputs. - return_attention_mask (
bool, اختياري) — ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما هو معرّف بواسطةreturn_outputsالخاصية. - return_overflowing_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم إرجاع تسلسلات الرموز الزائدة أم لا. إذا تم تقديم زوج من تسلسلات معرفات الإدخال (أو دفعة من الأزواج) معtruncation_strategy = longest_firstأوTrue، فسيتم رفع خطأ بدلاً من إرجاع الرموز الزائدة. - return_special_tokens_mask (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع معلومات قناع الرموز الخاصة أم لا. - return_offsets_mapping (
bool, اختياري, الافتراضي هوFalse) — ما إذا كان يجب إرجاع(char_start, char_end)لكل رمز.يتوفر هذا فقط على مُرمّزيات سريعة ترث من PreTrainedTokenizerFast، فإذا كنت تستخدم مُرمّزي Python، فسيُطلق هذا الدالة
NotImplementedError. - return_length (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع أطوال المدخلات المُرمّزة أم لا. - verbose (
bool، اختياري، الافتراضيTrue) — ما إذا كان يجب طباعة مزيد من المعلومات والتحذيرات أم لا. - **kwargs — تُمرَّر إلى طريقة
self.tokenize()
يعيد
BatchEncoding يحتوي على الحقول التالية:
-
input_ids — قائمة معرّفات الرموز التي تُغذّى بها النموذج.
-
token_type_ids — قائمة معرّفات أنواع الرموز التي تُمرَّر إلى النموذج (عندما يكون
return_token_type_ids=Trueأو إذا كان “token_type_ids” ضمنself.model_input_names). -
attention_mask — قائمة بالفهارس تحدد الرموز التي ينبغي للنموذج الانتباه إليها (عندما يكون
return_attention_mask=Trueأو إذا كان “attention_mask” ضمنself.model_input_names). -
overflowing_tokens — قائمة تسلسلات الرموز المتجاوزة (عند تحديد
max_lengthوreturn_overflowing_tokens=True). -
num_truncated_tokens — عدد الرموز المقصوصة (عند تحديد
max_lengthوreturn_overflowing_tokens=True). -
special_tokens_mask — قائمة من الأصفار والواحدات، حيث تشير الواحدة إلى الرموز الخاصة المضافة وتصفّر إلى رموز التسلسل العادية (عندما يكون
add_special_tokens=Trueوreturn_special_tokens_mask=True). -
length — طول المدخلات (عندما يكون
return_length=True)
الطريقة الرئيسية لتجزئة (tokenization) وتجهيز تسلسل واحد أو عدة تسلسلات، أو زوج واحد أو عدة أزواج من التسلسلات، للنموذج.
add_tokens
< source >( new_tokens: str | AddedToken | Sequence[str | AddedToken]special_tokens: bool = False ) → int
المعاملات
- new_tokens (
strأوtokenizers.AddedTokenأو تسلسل من str أوtokenizers.AddedToken) — تُضاف الرموز فقط إذا لم تكن موجودة مسبقًا في المفردات. يغلّفtokenizers.AddedTokenرمزًا نصيًا ليتيح لك تخصيص سلوكه: ما إذا كان يجب أن يطابق هذا الرمز كلمة واحدة فقط، وما إذا كان يجب أن يزيل جميع المسافات المحتملة على الجانب الأيسر، وما إذا كان يجب أن يزيل جميع المسافات المحتملة على الجانب الأيمن، وما إلى ذلك. - special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — يحدد ما إذا كان الرمز خاصًا. يغيّر هذا بشكل رئيسي سلوك التطبيع. راجع التفاصيل الخاصة بـtokenizers.AddedTokenفي مكتبة HuggingFace tokenizers.
يعيد
int
عدد الرموز المضافة إلى المفردات.
#TODO احذف هذا من هنا! يجب أن يكون PreTrainedTokenizerBase غير مرتبط بـ AddedToken.
أضف قائمةً برموز جديدة. إذا لم تكن الرموز الجديدة موجودةً في قاموس الكلمات، فستُضاف إلى نهايته. وبالتالي، لا يُعامل الرمز المضاف والرموز المستمدة من قاموس خوارزمية التقطيع بنفس الطريقة.
تضيف مُقسِّمات الرموز السريعة التي تستخدم مُقسِّمًا مسبقًا من نوع
Metaspaceمعprepend_scheme="always"(مثل NLLB) الرمز"▁"إلى النص الذي يلي الرمز المضاف. بعد تنفيذtokenizer.add_tokens(["abcd"])، يتم تقسيم"abcdgym"إلى["abcd", "▁gym"]ويُفكّك إلى"abcd gym". إذا كان بإمكان الرموز المضافة أن تظهر داخل الكلمات، فبدّل المُقسِّم المسبقإلى
prepend_scheme="first"بحيث يُضاف البادئة إلى بداية الإدخال فقط:from tokenizers import pre_tokenizers pre_tokenizer = tokenizer.backend_tokenizer.pre_tokenizer tokenizer.backend_tokenizer.pre_tokenizer = pre_tokenizers.Metaspace( replacement=pre_tokenizer.replacement, prepend_scheme="first", split=pre_tokenizer.split )
أمثلة:
# Let's see how to increase the vocabulary of Bert model and tokenizer
tokenizer = BertTokenizerFast.from_pretrained("google-bert/bert-base-uncased")
model = BertModel.from_pretrained("google-bert/bert-base-uncased")
num_added_toks = tokenizer.add_tokens(["new_tok1", "my_new-tok2"])
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))add_special_tokens
< source >( special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]]replace_extra_special_tokens = True ) → int
المعاملات
- special_tokens_dict (قاموس نص إلى نص,
tokenizers.AddedToken, أوSequence[Union[str, AddedToken]]) — يجب أن تكون المفاتيح ضمن قائمة السمات الخاصة المحددة مسبقًا: [bos_token,eos_token,unk_token,sep_token,pad_token,cls_token,mask_token,extra_special_tokens].تُضاف الرموز فقط إذا لم تكن موجودة مسبقاً في قاموس الكلمات (يتم التحقق من ذلك بفحص ما إذا كان مُجزّئ النص يُسند إليها فهرس
unk_token). - replace_extra_special_tokens (
bool، اختياري، القيمة الافتراضيةTrue) — إذا كانتTrue، فسيتم استبدال القائمة الحالية للرموز الخاصة الإضافية بالقائمة المقدمة فيspecial_tokens_dict. وإلا، فسيتم توسيعextra_special_tokens. في الحالة الأولى، لن يتم حذف الرموز من المفردات الكاملة لمحلل الرموز - بل يتم فقط تصنيفها كرموز غير خاصة. تذكّر، هذا يؤثر فقط على الرموز التي يتم تجاوزها أثناء فك الترميز، وليس علىadded_tokens_encoderوadded_tokens_decoder. وهذا يعني أنextra_special_tokensالسابقة لا تزال رموزاً مضافة، ولن يتم تقسيمها بواسطة النموذج.
يعيد
int
عدد الرموز المضافة إلى المفردات.
أضف قاموسًا للرموز الخاصة (eos، pad، cls، إلخ) إلى المُشفِّر واربطها بخصائص الفئة. إذا لم تكن الرموز الخاصة موجودة في قاموس الكلمات، تُضاف إليه (مُرقّمةً بدءًا من آخر فهرس في قاموس الكلمات الحالي).
عند إضافة رموز جديدة إلى المفردات، يجب التأكد من تغيير حجم مصفوفة تضمين الرموز في النموذج بحيث تتطابق مصفوفة التضمين مع مُجزّئ الرموز.
للقيام بذلك، يرجى استخدام طريقة resize_token_embeddings().
يضمن استخدام add_special_tokens إمكانية استخدام الرموز الخاصة بعدة طرق:
- يمكن تخطي الرموز الخاصة عند فك الترميز باستخدام
skip_special_tokens = True. - تُعالَج الرموز الخاصة بعناية من قِبل مُجزّئ النص (فلا يتم تقسيمها أبداً)، على غرار
AddedTokens. - يمكنك بسهولة الإشارة إلى الرموز الخاصة باستخدام سمات فئة المُجزِّئ مثل
tokenizer.cls_token. وهذا يسهّل تطوير سكربتات تدريب وضبط دقيق لا تعتمد على نموذج محدد.
عندما يكون ذلك ممكناً، تكون الرموز الخاصة مسجّلة مسبقاً للنماذج المُدرَّبة مسبقاً المُقدَّمة (على سبيل المثال، BertTokenizer cls_token مسجّل مسبقاً ليكون '[CLS]'، وكذلك رمز XLM مسجّل ليكون '</s>').
أمثلة:
# Let's see how to add a new classification token to GPT-2
tokenizer = GPT2Tokenizer.from_pretrained("openai-community/gpt2")
model = GPT2Model.from_pretrained("openai-community/gpt2")
special_tokens_dict = {"cls_token": "<CLS>"}
num_added_toks = tokenizer.add_special_tokens(special_tokens_dict)
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))
assert tokenizer.cls_token == "<CLS>"apply_chat_template
< source >( conversation: list[dict[str, str]] | list[list[dict[str, str]]]tools: list[dict | Callable] | None = Nonedocuments: list[dict[str, str]] | None = Nonechat_template: str | None = Noneadd_generation_prompt: bool = Falsecontinue_final_message: bool | str = Falsetokenize: bool = Truesanitize_control_tokens: bool = Falsepadding: bool | str | PaddingStrategy = Falsetruncation: bool = Falsemax_length: int | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_dict: bool = Truereturn_assistant_tokens_mask: bool = Falsetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → Union[list[int], Dict]
المعاملات
- conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) — قائمة من القواميس (dicts) تحتوي على مفاتيح “role” و “content” وتمثل سجل المحادثة حتى الآن.
- tools (
list[Union[Dict, Callable]]، اختياري) — قائمة بالأدوات (دوال قابلة للاستدعاء) التي ستكون متاحة للنموذج. إذا لم يدعم القالب استدعاء الدوال، فلن يكون لهذا الحجة أي تأثير. يجب تمرير كل أداة كمخطط JSON Schema، مع تحديد اسم الأداة ووصفها وأنواع الحجج الخاصة بها. راجد دليلنا حول استخدام الأدوات لمزيد من المعلومات. - documents (
list[dict[str, str]]، اختياري) — قائمة من القواميس (dicts) تمثل مستندات ستكون متاحة للنموذج إذا كان يقوم بتوليد معزز بالاسترجاع (RAG). إذا لم يدعم القالب (template) تقنية RAG، فلن يكون لهذا الحجة أي تأثير. ننصح بأن يكون كل مستند قاموسًا يحتوي على مفتاحي “title” و “text”. - chat_template (
str، اختياري) — قالب Jinja يُستخدم لهذا التحويل. عادةً لا يكون من الضروري تمرير أي شيء إلى هذا الحجة، إذ يُستخدم قالب النموذج افتراضيًا. - add_generation_prompt (bool، اختياري) — إذا تم تعيين هذا، فسيتم إرفاق موجه يحتوي على الرمز (أو الرموز) التي تشير إلى بداية رسالة المساعد في المخرجات المنسّقة. وهذا مفيد عندما تريد توليد رد من النموذج. لاحظ أن هذا الحُجج سيُمرَّر إلى قالب المحادثة، وبالتالي يجب أن يدعمه القالب حتى يكون لهذا الحُجج أي تأثير.
- continue_final_message (bool or str، اختياري) —
إذا تم تعيين هذا، فسيتم تنسيق المحادثة بحيث تكون الرسالة الأخيرة في المحادثة مفتوحة النهاية، دون أي رموز EOS. سيواصل النموذج هذه الرسالة بدلاً من بدء رسالة جديدة. يتيح لك ذلك “تعبئة مسبقة” لجزء من استجابة النموذج. إذا تم تمرير نص، فسيتم استخدامه كمفتاح للحقل الذي يجب استمراره (مثل “reasoning_content”). لا يمكن استخدامه في الوقت نفسه مع
add_generation_prompt. - tokenize (
bool، القيمة الافتراضيةTrue) — ما إذا كان سيتم ترميز المخرجات. إذا كانتFalse، فستكون المخرجات نصًا. - sanitize_control_tokens (
bool)، القيمة الافتراضيةFalse— إذا تم ضبطه، تُرمَّز رموز التحكم التي تظهر في الرسائل أو الأدوات أو المستندات كنص عادي، بحيث تُرمَّز فقط رموز التحكم المكتوبة بواسطة قالب المحادثة نفسه كرموز. رموز التحكم هي الرموز الخاصة لمجزّئ النص، بالإضافة إلى الرموز المضافة فيtokenizer.chat_control_tokens. إذا لم يتم ضبط ذلك المتغير، تُستنتج رموز التحكم من الرموز المضافة التي تظهر في نص قالب المحادثة والسلاسل النصية. يتم تعقيم رموز التحكم الكاملة فقط، لذا إذا كان القالب يجمع سلاسل من الإدخال لتكوين رموز تحكم (مثل'<|' + message['role'] + '|>')، يجب التحقق من صحة تلك السلاسل على حدة. مفاتيح القواميس لا يتم تعقيمها أيضًا. - padding (
bool,strأو PaddingStrategy, اختياري, الافتراضي هوFalse) — اختر استراتيجية لإضافة الحشو إلى التسلسلات المُعادَة (وفقًا لجانب الحشو وفهرس الحشو الخاص بالنموذج) من بين الخيارات التالية:Trueأو'longest': يتم ملء التسلسلات حتى أطول تسلسل في الدفعة (أو لا يتم أي ملء إذا تم تقديم تسلسل واحد فقط).'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجةmax_lengthأو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.Falseأو'do_not_pad'(الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
- truncation (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم تقصير التسلسلات عند الحد الأقصى للطول. لا يؤثر إذا كان tokenize هوFalse. - max_length (
int, اختياري) — الحد الأقصى للطول (بالرموز) المستخدم للتعبئة أو الاقتطاع. لا يؤثر إذا كان tokenize هوFalse. إذا لم يُحدد، فسيتم استخدام خاصيةmax_lengthلمُقسّم النص كقيمة افتراضية. - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُرجع تينسورات لإطار عمل معين. لا يؤثر إذا كان tokenize هوFalse. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن NumPy.
- return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع قاموس بمخرجات مُسماة. لا يؤثر إذا كان tokenize هوFalse. - tokenizer_kwargs (
dict[str -- Any]، اختياري): معاملات إضافية لإيصالها إلى مُجزّئ النص. - return_assistant_tokens_mask (
bool، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع قناع (mask) للرموز التي ولّدها المساعد. بالنسبة للرموز التي ولّدها المساعد، سيحتوي القناع على القيمة 1. أما بالنسبة لرموز المستخدم والنظام، فسيحتوي القناع على القيمة 0. هذه الميزة متاحة فقط للقوالب الدردشة التي تدعمها عبر الكلمة المفتاحية{% generation %}. - **kwargs — معاملات إضافية تُمرَّر إلى مُصيِّر القالب. ستكون متاحة لقالب المحادثة.
يعيد
Union[list[int], Dict]
قائمة من معرّفات الرموز (token ids) تمثل المحادثة المُرمَّزة حتى الآن، بما في ذلك رموز التحكم. هذا المخرج جاهز للتقديم إلى النموذج، إما مباشرةً أو عبر طرق مثل generate(). إذا تم تعيين return_dict، فسيُعاد قاموس (dict) لمخرجات المُرمِّز بدلاً من ذلك.
يحوّل قائمة من القواميس التي تحتوي على المفاتيح "role" و"content" إلى قائمة من معرّفات الرموز. صُمِّم هذا الأسلوب للاستخدام مع نماذج المحادثة، حيث يقرأ خاصية chat_template في مُجزّئ الرموز لتحديد التنسيق ورموز التحكم التي يجب استخدامها أثناء التحويل.
batch_decode
< source >( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]
المعاملات
- sequences (
Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — قائمة من معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة__call__. - skip_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا. - clean_up_tokenization_spaces (
bool, اختياري) — ما إذا كان سيتم تنظيف مسافات الترميز أم لا. إذا كانتNone، فسيتم افتراضself.clean_up_tokenization_spaces. - kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — سيتم تمريرها إلى طريقة فك الترميز المحددة للنموذج الأساسي.
يعيد
list[str]
قائمة الجمل المُفكَّكة.
تحويل قائمة من قوائم معرّفات الرموز إلى قائمة من النصوص عن طريق استدعاء decode.
يُوفَّر هذا الأسلوب من أجل التوافق مع الإصدارات السابقة. يتعامل أسلوب decode الآن مع المدخلات المجمعة بشكل أصلي،
لذا يمكنك استخدام decode مباشرة بدلاً من batch_decode.
decode
< source >( token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = False**kwargs ) → Union[str, list[str]]
المعاملات
- token_ids (
Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]) — تسلسل واحد أو دفعة (قائمة من التسلسلات) من معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة__call__. - skip_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا. - kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — سيتم تمريرها إلى طريقة فك الترميز المحددة للنموذج الأساسي.
يعيد
Union[str, list[str]]
النص المُفكَّك تسلسل واحد، أو قائمة من النصوص المُفكَّكة لدفعة من التسلسلات.
يحوّل تسلسلًا من المعرّفات إلى نص، أو قائمة من التسلسلات إلى قائمة من النصوص، باستخدام مُجزّئ الرموز (tokenizer) وقاموس الرموز (vocabulary)، مع خيارات لإزالة الرموز الخاصة وتنظيف مسافات تجزئة الرموز.
يشبه ذلك القيام بـ self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).
encode
< source >( text: TextInput | PreTokenizedInput | EncodedInputtext_pair: TextInput | PreTokenizedInput | EncodedInput | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0padding_side: str | None = Nonereturn_tensors: str | TensorType | None = None**kwargs ) → list[int], torch.Tensor, or np.ndarray
المعاملات
- text (
strأوlist[str]أوlist[int]) — التسلسل الأول الذي سيتم ترميزه. يمكن أن يكون نصًا، أو قائمة من النصوص (نص مُرمَّز باستخدام طريقةtokenize)، أو قائمة من الأعداد الصحيحة (معرّفات النصوص المُرمَّزة باستخدام طريقةconvert_tokens_to_ids). - text_pair (
strأوlist[str]أوlist[int]، اختياري) — التسلسل الثاني الاختياري الذي سيتم ترميزه. يمكن أن يكون نصًا، أو قائمة من النصوص (نص مُرمَّز باستخدام طريقةtokenize)، أو قائمة من الأعداد الصحيحة (معرّفات النصوص المُرمَّزة باستخدام طريقةconvert_tokens_to_ids). - add_special_tokens (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إضافة الرموز الخاصة عند ترميز التسلسلات أم لا. سيستخدم هذا الدالة الأساسيةPretrainedTokenizerBase.build_inputs_with_special_tokens، التي تحدد الرموز التي تُضاف تلقائيًا إلى معرّفات الإدخال. يكون هذا مفيدًا إذا كنت ترغب في إضافة رموزbosأوeosتلقائيًا. - padding (
bool,strأو PaddingStrategy, اختياري, الافتراضي هوFalse) — يُفعّل التحكم في الحشو. يقبل القيم التالية:Trueأو'longest': يتم ملء التسلسلات حتى أطول تسلسل في الدفعة (أو لا يتم أي ملء إذا تم تقديم تسلسل واحد فقط).'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجةmax_lengthأو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.Falseأو'do_not_pad'(الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
- truncation (
bool,strأو TruncationStrategy, اختياري, الافتراضي هوFalse) — تفعيل التحكم في القص. يقبل القيم التالية:Trueأو'longest_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. يتم هذا القص رمزًا تلو الآخر، حيث يُزال رمز من أطول تسلسل في الزوج إذا كان قد قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).'only_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يُقصّ هذا الخيار سوى التسلسل الأول من الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).'only_second': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يتم قصّ النص الثاني من الزوج إلا إذا قُدِّم زوج من النصوص (أو دفعة من الأزواج).Falseأو'do_not_truncate'(الافتراضي): لا يوجد اقتطاع (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال في النموذج).
- max_length (
int, اختياري) — يتحكم في الحد الأقصى للطول الذي ستستخدمه إحدى معاملات القص/الحشو.إذا تُرك غير مُعيَّن أو عُدِّل إلى
None، فسيتم استخدام الطول الأقصى المُعرَّف مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب طولًا أقصى. وإذا لم يكن للنموذج طول إدخال أقصى محدد (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى طول أقصى. - stride (
int، اختياري، القيمة الافتراضية 0) — إذا تم تعيينه إلى رقم معmax_length، فستحتوي الرموز الزائدة المُعاد عندreturn_overflowing_tokens=Trueعلى بعض الرموز من نهاية التسلسل المُقتطع المُعاد، لتوفير بعض التداخل بين التسلسلات المُقتطعة والتسلسلات الزائدة. تحدد قيمة هذا الحجة عدد الرموز المتداخلة. - is_split_into_words (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان المدخل مُجزَّأً مسبقاً (على سبيل المثال، مقسَّماً إلى كلمات). إذا تم ضبطه علىTrue، يفترض المُجزِّئ أن المدخل مقسَّم بالفعل إلى كلمات (على سبيل المثال، عن طريق تقسيمه على المسافات) وسيُجزِّئها. هذا مفيد لتصنيف الكيانات الاسمية أو تصنيف الرموز. - pad_to_multiple_of (
int, اختياري) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المقدمة. يتطلب تفعيلpadding. هذا مفيد بشكل خاص لتمكين استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية حساب>= 7.5(Volta). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات بدلاً من قائمة من الأعداد الصحيحة في Python. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن نوع Numpy.
- **kwargs — تُمرَّر إلى طريقة
.tokenize().
يعيد
list[int] أو torch.Tensor أو np.ndarray
المعرّفات المُرمّزة للنص.
يحوّل نصًا إلى تسلسل من المعرّفات (أعداد صحيحة)، باستخدام مُجزّئ النص (tokenizer) والمفردات (vocabulary).
نفس ما يتم عند تنفيذ self.convert_tokens_to_ids(self.tokenize(text)).
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
المعاملات
- repo_id (
str) — اسم المستودع الذي تريد دفع مُجزّئك (tokenizer) إليه. يجب أن يحتوي على اسم مؤسستك عند الدفع إلى مؤسسة محددة. - commit_message (
str، اختياري) — الرسالة التي سيتم الالتزام بها أثناء الدفع. ستكون الافتراضية"Upload tokenizer". - commit_description (
str, اختياري) — وصف الالتزام الذي سيتم إنشاؤه - private (
bool، اختياري) — ما إذا كان سيتم جعل المستودع خاصًا. إذا كانNone(الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي للمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا بالفعل. - token (
boolأوstr، اختياري) — الرمز الذي يُستخدم كتفويض حامل HTTP للملفات البعيدة. إذا كانTrue(الافتراضي)، فسيتم استخدام الرمز الذي تم إنشاؤه عند تشغيلhf auth login(المخزَّن في~/.huggingface). - revision (
str، اختياري) — الفرع الذي سيتم دفع الملفات المرفوعة إليه. - create_pr (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم إنشاء طلب سحب (PR) بالملفات المرفوعة أم الالتزام مباشرة. - max_shard_size (
intأوstr، اختياري، القيمة الافتراضية"50GB") — ينطبق على النماذج فقط. الحد الأقصى لحجم نقطة التفتيش قبل تقسيمها إلى أجزاء. ستكون نقاط التفتيش المقسمة كل منها بحجم أقل من هذا الحجم. إذا تم التعبير عنه كنص، فيجب أن يتكون من أرقام تليها وحدة (مثل"5MB"). - tags (
list[str]، اختياري) — قائمة بالوسوم التي سيتم دفعها إلى Hub.
ارفع ملفات مُجزّئ الرموز إلى 🤗 Model Hub.
أمثلة:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")
# Push the tokenizer to your namespace with the name "my-finetuned-bert".
tokenizer.push_to_hub("my-finetuned-bert")
# Push the tokenizer to an organization with the name "my-finetuned-bert".
tokenizer.push_to_hub("huggingface/my-finetuned-bert")build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
أنشئ مدخلات النموذج من تسلسل أو زوج من التسلسلات عن طريق إضافة الرموز الخاصة.
يبني هذا الأسلوب المدخلات ديناميكياً بناءً على special_tokens_pattern الخاص بمجزّئ الرموز:
"none": لا توجد رموز خاصة"cls_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] seq1 [SEP]"eos": seq0 [EOS] أو seq0 [EOS] seq1 [EOS]"bos": [BOS] seq0 أو [BOS] seq0 [BOS] seq1"bos_eos": [BOS] seq0 [EOS] أو [BOS] seq0 [EOS] seq1 [EOS]"cls_double_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] [SEP] seq1 [SEP]"prefix_suffix":<prefix_tokens> seq0 [seq1] <suffix_tokens>(بادئة/لاحقة مخصصة مخزنة على مُجزّئ الرموز)
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
أنشئ قناعًا من التسلسلين المُمرَّرين لاستخدامه في مهمة تصنيف أزواج التسلسلات.
تُبنى معرّفات أنواع الرموز ديناميكيًا بواسطة هذه الطريقة بناءً على سمات إعدادات مُجزّئ الرموز:
token_type_ids_pattern: النمط المستخدم (“all_zeros” أو “bert_style”)token_type_ids_include_special_tokens: ما إذا كان يجب أخذ الرموز الخاصة في الاعتبار عند حساب الطول
أمثلة:
# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences
# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairsيعيد الرموز المضافة في المفردات على شكل قاموس يربط كل رمز بمؤشره. قد تختلف النتائج عن استدعاء fast لأننا نضيف الرموز دائمًا حتى لو كانت موجودة مسبقًا في المفردات. وهذا أمر ينبغي تغييره.
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
المعاملات
- token_ids_0 (
list[int]) — قائمة معرّفات (ids) التسلسل الأول. - token_ids_1 (
list[int]، اختياري) — قائمة معرّفات (ids) للتسلسل الثاني. - already_has_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كانت قائمة الرموز (tokens) منسّقة مسبقًا برموز خاصة للنموذج أم لا.
يعيد
قائمة من الأعداد الصحيحة في المدى [0, 1]
1 لرمز خاص، 0 لرمز التسلسل.
يسترجع معرّفات التسلسلات من قائمة الرموز التي لم تُضف إليها رموز خاصة. يُستدعى هذا الأسلوب عند إضافة الرموز الخاصة باستخدام أساليب prepare_for_model أو encode_plus في المُرمِّز.
تُبنى قناع الرموز الخاصة ديناميكيًا بواسطة هذه الطريقة بناءً على special_tokens_pattern الخاص بمجزّئ الرموز:
"none": لا توجد رموز خاصة (الافتراضي، يعيد جميع القيم 0)"cls_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] seq1 [SEP]"eos": seq0 [EOS] أو seq0 [EOS] seq1 [EOS]"bos": [BOS] seq0 أو [BOS] seq0 [BOS] seq1"bos_eos": [BOS] seq0 [EOS] أو [BOS] seq0 [EOS] seq1 [EOS]"cls_double_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] [SEP] seq1 [SEP]"prefix_suffix":<prefix_tokens> seq0 [seq1] <suffix_tokens>
num_special_tokens_to_add
< source >( pair: bool = False ) → int
يعيد عدد الرموز المضافة عند ترميز تسلسل مع الرموز الخاصة.
يقوم هذا بتشفير مدخل وهمي والتحقق من عدد الرموز المضافة، وبالتالي فهو غير فعّال. لا تضع هذا داخل حلقة التدريب الخاصة بك.
prepare_for_model
< source >( ids: listpair_ids: list[int] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Falsemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_length: bool = Falseverbose: bool = Trueprepend_batch_axis: bool = False**kwargs )
يُعدّ تسلسلًا من معرّفات الإدخال بحيث يمكن استخدامُه من قِبَل النموذج. يضيف الرموز الخاصة، ويقصّ التسلسل، ويملأ الفراغات.
prepare_for_tokenization
< source >( text: stris_split_into_words: bool = False**kwargs ) → tuple[str, dict[str, Any]]
المعاملات
- text (
str) — النص الذي يجب تجهيزه. - is_split_into_words (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان المدخل مُجزَّأً مسبقاً (على سبيل المثال، مقسَّماً إلى كلمات). إذا تم ضبطه علىTrue، يفترض المُجزِّئ أن المدخل مقسَّم بالفعل إلى كلمات (على سبيل المثال، عن طريق تقسيمه على المسافات) وسيُجزِّئها. هذا مفيد لتصنيف الكيانات الاسمية أو تصنيف الرموز. - kwargs (
dict[str, Any], اختياري) — حجج الكلمات المفتاحية المستخدمة لعملية الترميز.
يعيد
tuple[str, dict[str, Any]]
النص المُعدّ وkwarg غير المستخدمة.
يُنفّذ أي تحويلات ضرورية قبل الترميز.
يجب أن تستخرج هذه الطريقة الحُجج من kwargs وتعيد المتبقي منها أيضاً. نقوم بفحص kwargs في نهاية عملية الترميز للتأكد من أن جميع الحُجج قد استُخدمت.
save_vocabulary
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple[str, ...]
التنفيذ الافتراضي لأنماط حفظ المفردات الشائعة. يحفظ self.encoder/self.vocab بصيغة JSON، مع إمكانية تضمين self.bpe_ranks كعمليات دمج. يعيد مجموعة فارغة (tuple) إذا لم توجد مفردات.
إذا كان مُجزّئ الكلمات الخاص بك يحتاج إلى منطق حفظ مخصص (مثل نماذج SentencePiece، أو ملفات مفردات متعددة، أو صيغ ملفات خاصة)، فقم بتجاوز هذه الطريقة.
tokenize
< source >( text: str**kwargs )
يحوّل سلسلة نصية إلى تسلسل من الرموز، باستخدام مُجزّئ الرموز.
truncate_sequences
< source >( ids: listpair_ids: list[int] | None = Nonenum_tokens_to_remove: int = 0truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first'stride: int = 0 )
يقوم بقصّ التسلسلات وفقاً للاستراتيجية المحددة.
PreTrainedTokenizerFast
يعتمد PreTrainedTokenizerFast على مكتبة tokenizers. يمكن تحميل المرمّزات (tokenizers) المستمدة من مكتبة 🤗 tokenizers بسهولة كبيرة إلى 🤗 transformers. اطّلع على صفحة استخدام المرمّزات من 🤗 tokenizers لفهم كيفية القيام بذلك.
فئة transformers.TokenizersBackend
< source >( *args**kwargs )
المعاملات
- model_max_length (
int, اختياري) — الحد الأقصى للطول (بعدد الرموز) للمدخلات إلى نموذج التحويل. عند تحميل مُجزّئ الرموز باستخدام from_pretrained()، سيتم تعيينه إلى القيمة المخزنة للنموذج المرتبط به فيmax_model_input_sizes(انظر أعلاه). إذا لم يتم تقديم قيمة، فسيكون الافتراضي VERY_LARGE_INTEGER (int(1e30)). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - truncation_side (
str، اختياري) — الجهة التي يجب تطبيق القص عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - chat_template (
str، اختياري) — نص قالب Jinja يُستخدم لتنسيق قوائم رسائل الدردشة. راجع https://huggingface.co/docs/transformers/chat_templating للحصول على وصف كامل. - model_input_names (
list[string]، اختياري) — قائمة المدخلات التي يقبلها المسار الأمامي للنموذج (مثل"token_type_ids"أو"attention_mask"). القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - bos_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل بداية الجملة. - eos_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل نهاية الجملة. - unk_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل رمزًا خارج نطاق المفردات. - sep_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يفصل بين جملتين مختلفتين في نفس المدخل (يُستخدم في BERT على سبيل المثال). - pad_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يُستخدم لجعل مصفوفات الرموز متساوية الحجم لأغراض الدفع (batching). ثم يتم تجاهله من قبل آليات الانتباه أو حساب الخسارة. - cls_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل فئة الإدخال (يُستخدم في BERT على سبيل المثال). - mask_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل الرمز المقنّع (يُستخدم في أهداف ما قبل التدريب لنمذجة اللغة المقنّعة، مثل BERT). سيُربط بـself.mask_tokenوself.mask_token_id. - extra_special_tokens (قائمة من
strأوtokenizers.AddedToken، اختياري) — قائمة من الرموز الخاصة الإضافية المحددة للنموذج. أضفها هنا للتأكد من تجاوزها عند فك الترميز عندما يكونskip_special_tokensمضبوطاً على True. إذا لم تكن جزءاً من المفردات، فسيتم إضافتها في نهاية المفردات. - split_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب تقسيم الرموز الخاصة أثناء عملية الترميز. تمرير القيمة سيؤثر على الحالة الداخلية للمرمِّز. السلوك الافتراضي هو عدم تقسيم الرموز الخاصة. وهذا يعني أنه إذا كان<s>هوbos_token، فإنtokenizer.tokenize("<s>") = ['<s>]. وإلا، إذا كانsplit_special_tokens=True، فإنtokenizer.tokenize("<s>")سيعطي['<','s', '>']. - tokenizer_object (
tokenizers.Tokenizer) — كائنtokenizers.Tokenizerمن 🤗 tokenizers يُستخدم للتشغيل. راجع استخدام tokenizers من 🤗 tokenizers لمزيد من المعلومات. - tokenizer_file (
str) — مسار إلى ملف JSON محلي يمثل كائنtokenizers.Tokenizerسبق تسلسله من 🤗 tokenizers.
الفئة الأساسية لجميع المرمّزات السريعة (تغلّف مكتبة HuggingFace tokenizers).
يرث من PreTrainedTokenizerBase.
يتولى معالجة جميع الطرق المشتركة الخاصة بالتجزئة والرموز الخاصة، فضلاً عن الطرق الخاصة بتنزيل/تخزين/تحميل المجزئات المُدرَّبة مسبقاً، وكذلك إضافة رموز إلى المفردات.
تحتوي هذه الفئة أيضًا على الرموز المضافة بطريقة موحدة فوق جميع مُجزّئات الرموز، حتى لا نضطر إلى التعامل مع طرق توسيع المفردات المحددة للبنى القاموسية الأساسية المختلفة (BPE، sentencepiece…).
خصائص الفئة (المُعاد تعريفها في الفئات المشتقة)
- vocab_files_names (
dict[str, str]) — قاموس تكون مفاتيحه أسماء كلمات المفتاح__init__لكل ملف مفردات مطلوب من النموذج، وقيمته المرتبطة هي اسم الملف لحفظ الملف المرتبط (نص). - pretrained_vocab_files_map (
dict[str, dict[str, str]]) — قاموس من القواميس، حيث تكون المفاتيح العليا هي اسم كلمة المفتاح__init__لكل ملف مفردات مطلوب من النموذج، والمفاتيح الدنيا هيshort-cut-namesللنماذج المُدرَّبة مسبقاً، مع قيم مرتبطة بها هيurlلملف المفردات المُدرَّب مسبقاً المرتبط. - model_input_names (
list[str]) — قائمة بالمُدخلات المتوقعة في مسار الأمامي (forward pass) للنموذج. - padding_side (
str) — القيمة الافتراضية للجهة التي يجب تطبيق الحشو عليها في النموذج. يجب أن تكون'right'أو'left'. - truncation_side (
str) — القيمة الافتراضية للجهة التي يجب تطبيق القص عليها في النموذج. يجب أن تكون'right'أو'left'.
__call__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
المعاملات
- text (
str،list[str]،list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نصوص مُقسّمة مسبقًا إلى رموز). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسّمة مسبقًا)، فيجب تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - text_pair (
str،list[str]،list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نصوص مُقسّمة مسبقًا إلى رموز). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسّمة مسبقًا)، فيجب تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - text_target (
str،list[str]،list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات التي سيتم ترميزها كنصوص هدف. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُقسَّم مسبقًا إلى وحدات). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مُقسَّمة مسبقًا)، فيجب عليك تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - text_pair_target (
str،list[str]،list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات التي سيتم ترميزها كنصوص هدف. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُقسَّم مسبقًا إلى وحدات). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مُقسَّمة مسبقًا)، فيجب عليك تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - tokenizer_kwargs (
dict[str, Any], اختياري) — معاملات إضافية (kwargs) تُمرَّر إلى مُجزِّئ النص (tokenizer). سيتم دمج هذه المعاملات مع المعاملات الصريحة ومعاملات أخرى، مع إعطاء الأولوية للمعاملات الصريحة. - add_special_tokens (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إضافة الرموز الخاصة عند ترميز التسلسلات أم لا. سيستخدم هذا الدالة الأساسيةPretrainedTokenizerBase.build_inputs_with_special_tokens، التي تحدد الرموز التي تُضاف تلقائيًا إلى معرّفات الإدخال. يكون هذا مفيدًا إذا كنت ترغب في إضافة رموزbosأوeosتلقائيًا. - padding (
bool,strأو PaddingStrategy, اختياري, الافتراضي هوFalse) — يُفعّل التحكم في الحشو. يقبل القيم التالية:Trueأو'longest': يتم ملء التسلسلات حتى أطول تسلسل في الدفعة (أو لا يتم أي ملء إذا تم تقديم تسلسل واحد فقط).'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجةmax_lengthأو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.Falseأو'do_not_pad'(الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
- truncation (
bool,strأو TruncationStrategy, اختياري, الافتراضي هوFalse) — تفعيل التحكم في القص. يقبل القيم التالية:Trueأو'longest_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. يتم هذا القص رمزًا تلو الآخر، حيث يُزال رمز من أطول تسلسل في الزوج إذا كان قد قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).'only_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يُقصّ هذا الخيار سوى التسلسل الأول من الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).'only_second': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يتم قصّ النص الثاني من الزوج إلا إذا قُدِّم زوج من النصوص (أو دفعة من الأزواج).Falseأو'do_not_truncate'(الافتراضي): لا يوجد اقتطاع (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال في النموذج).
- max_length (
int, اختياري) — يتحكم في الحد الأقصى للطول الذي ستستخدمه إحدى معاملات القص/الحشو.إذا تُرك غير مُعيَّن أو عُدِّل إلى
None، فسيتم استخدام الطول الأقصى المُعرَّف مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب طولًا أقصى. وإذا لم يكن للنموذج طول إدخال أقصى محدد (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى طول أقصى. - stride (
int، اختياري، القيمة الافتراضية 0) — إذا تم تعيينه إلى رقم معmax_length، فستحتوي الرموز الزائدة المُعاد عندreturn_overflowing_tokens=Trueعلى بعض الرموز من نهاية التسلسل المُقتطع المُعاد، لتوفير بعض التداخل بين التسلسلات المُقتطعة والتسلسلات الزائدة. تحدد قيمة هذا الحجة عدد الرموز المتداخلة. - is_split_into_words (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان المدخل مُجزَّأً مسبقاً (على سبيل المثال، مقسَّماً إلى كلمات). إذا تم ضبطه علىTrue، يفترض المُجزِّئ أن المدخل مقسَّم بالفعل إلى كلمات (على سبيل المثال، عن طريق تقسيمه على المسافات) وسيُجزِّئها. هذا مفيد لتصنيف الكيانات الاسمية أو تصنيف الرموز. - pad_to_multiple_of (
int, اختياري) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المقدمة. يتطلب تفعيلpadding. هذا مفيد بشكل خاص لتمكين استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية حساب>= 7.5(Volta). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات بدلاً من قائمة من الأعداد الصحيحة في Python. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن نوع Numpy.
- return_token_type_ids (
bool, اختياري) — ما إذا كان يجب إرجاع معرّفات أنواع الرموز. إذا تُركت القيمة الافتراضية، فسيتم إرجاع معرّفات أنواع الرموز وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما تحددها خاصيةreturn_outputs. - return_attention_mask (
bool, اختياري) — ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما هو معرّف بواسطةreturn_outputsالخاصية. - return_overflowing_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم إرجاع تسلسلات الرموز الزائدة أم لا. إذا تم تقديم زوج من تسلسلات معرفات الإدخال (أو دفعة من الأزواج) معtruncation_strategy = longest_firstأوTrue، فسيتم رفع خطأ بدلاً من إرجاع الرموز الزائدة. - return_special_tokens_mask (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع معلومات قناع الرموز الخاصة أم لا. - return_offsets_mapping (
bool, اختياري, الافتراضي هوFalse) — ما إذا كان يجب إرجاع(char_start, char_end)لكل رمز.يتوفر هذا فقط على مُرمّزيات سريعة ترث من PreTrainedTokenizerFast، فإذا كنت تستخدم مُرمّزي Python، فسيُطلق هذا الدالة
NotImplementedError. - return_length (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع أطوال المدخلات المُرمّزة أم لا. - verbose (
bool، اختياري، الافتراضيTrue) — ما إذا كان يجب طباعة مزيد من المعلومات والتحذيرات أم لا. - **kwargs — تُمرَّر إلى طريقة
self.tokenize()
يعيد
BatchEncoding يحتوي على الحقول التالية:
-
input_ids — قائمة معرّفات الرموز التي تُغذّى بها النموذج.
-
token_type_ids — قائمة معرّفات أنواع الرموز التي تُمرَّر إلى النموذج (عندما يكون
return_token_type_ids=Trueأو إذا كان “token_type_ids” ضمنself.model_input_names). -
attention_mask — قائمة بالفهارس تحدد الرموز التي ينبغي للنموذج الانتباه إليها (عندما يكون
return_attention_mask=Trueأو إذا كان “attention_mask” ضمنself.model_input_names). -
overflowing_tokens — قائمة تسلسلات الرموز المتجاوزة (عند تحديد
max_lengthوreturn_overflowing_tokens=True). -
num_truncated_tokens — عدد الرموز المقصوصة (عند تحديد
max_lengthوreturn_overflowing_tokens=True). -
special_tokens_mask — قائمة من الأصفار والواحدات، حيث تشير الواحدة إلى الرموز الخاصة المضافة وتصفّر إلى رموز التسلسل العادية (عندما يكون
add_special_tokens=Trueوreturn_special_tokens_mask=True). -
length — طول المدخلات (عندما يكون
return_length=True)
الطريقة الرئيسية لتجزئة (tokenization) وتجهيز تسلسل واحد أو عدة تسلسلات، أو زوج واحد أو عدة أزواج من التسلسلات، للنموذج.
add_tokens
< source >( new_tokens: str | AddedToken | Sequence[str | AddedToken]special_tokens: bool = False ) → int
المعاملات
- new_tokens (
strأوtokenizers.AddedTokenأو تسلسل من str أوtokenizers.AddedToken) — تُضاف الرموز فقط إذا لم تكن موجودة مسبقًا في المفردات. يغلّفtokenizers.AddedTokenرمزًا نصيًا ليتيح لك تخصيص سلوكه: ما إذا كان يجب أن يطابق هذا الرمز كلمة واحدة فقط، وما إذا كان يجب أن يزيل جميع المسافات المحتملة على الجانب الأيسر، وما إذا كان يجب أن يزيل جميع المسافات المحتملة على الجانب الأيمن، وما إلى ذلك. - special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — يحدد ما إذا كان الرمز خاصًا. يغيّر هذا بشكل رئيسي سلوك التطبيع. راجع التفاصيل الخاصة بـtokenizers.AddedTokenفي مكتبة HuggingFace tokenizers.
يعيد
int
عدد الرموز المضافة إلى المفردات.
#TODO احذف هذا من هنا! يجب أن يكون PreTrainedTokenizerBase غير مرتبط بـ AddedToken.
أضف قائمةً برموز جديدة. إذا لم تكن الرموز الجديدة موجودةً في قاموس الكلمات، فستُضاف إلى نهايته. وبالتالي، لا يُعامل الرمز المضاف والرموز المستمدة من قاموس خوارزمية التقطيع بنفس الطريقة.
تضيف مُقسِّمات الرموز السريعة التي تستخدم مُقسِّمًا مسبقًا من نوع
Metaspaceمعprepend_scheme="always"(مثل NLLB) الرمز"▁"إلى النص الذي يلي الرمز المضاف. بعد تنفيذtokenizer.add_tokens(["abcd"])، يتم تقسيم"abcdgym"إلى["abcd", "▁gym"]ويُفكّك إلى"abcd gym". إذا كان بإمكان الرموز المضافة أن تظهر داخل الكلمات، فبدّل المُقسِّم المسبقإلى
prepend_scheme="first"بحيث يُضاف البادئة إلى بداية الإدخال فقط:from tokenizers import pre_tokenizers pre_tokenizer = tokenizer.backend_tokenizer.pre_tokenizer tokenizer.backend_tokenizer.pre_tokenizer = pre_tokenizers.Metaspace( replacement=pre_tokenizer.replacement, prepend_scheme="first", split=pre_tokenizer.split )
أمثلة:
# Let's see how to increase the vocabulary of Bert model and tokenizer
tokenizer = BertTokenizerFast.from_pretrained("google-bert/bert-base-uncased")
model = BertModel.from_pretrained("google-bert/bert-base-uncased")
num_added_toks = tokenizer.add_tokens(["new_tok1", "my_new-tok2"])
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))add_special_tokens
< source >( special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]]replace_extra_special_tokens = True ) → int
المعاملات
- special_tokens_dict (قاموس نص إلى نص,
tokenizers.AddedToken, أوSequence[Union[str, AddedToken]]) — يجب أن تكون المفاتيح ضمن قائمة السمات الخاصة المحددة مسبقًا: [bos_token,eos_token,unk_token,sep_token,pad_token,cls_token,mask_token,extra_special_tokens].تُضاف الرموز فقط إذا لم تكن موجودة مسبقاً في قاموس الكلمات (يتم التحقق من ذلك بفحص ما إذا كان مُجزّئ النص يُسند إليها فهرس
unk_token). - replace_extra_special_tokens (
bool، اختياري، القيمة الافتراضيةTrue) — إذا كانتTrue، فسيتم استبدال القائمة الحالية للرموز الخاصة الإضافية بالقائمة المقدمة فيspecial_tokens_dict. وإلا، فسيتم توسيعextra_special_tokens. في الحالة الأولى، لن يتم حذف الرموز من المفردات الكاملة لمحلل الرموز - بل يتم فقط تصنيفها كرموز غير خاصة. تذكّر، هذا يؤثر فقط على الرموز التي يتم تجاوزها أثناء فك الترميز، وليس علىadded_tokens_encoderوadded_tokens_decoder. وهذا يعني أنextra_special_tokensالسابقة لا تزال رموزاً مضافة، ولن يتم تقسيمها بواسطة النموذج.
يعيد
int
عدد الرموز المضافة إلى المفردات.
أضف قاموسًا للرموز الخاصة (eos، pad، cls، إلخ) إلى المُشفِّر واربطها بخصائص الفئة. إذا لم تكن الرموز الخاصة موجودة في قاموس الكلمات، تُضاف إليه (مُرقّمةً بدءًا من آخر فهرس في قاموس الكلمات الحالي).
عند إضافة رموز جديدة إلى المفردات، يجب التأكد من تغيير حجم مصفوفة تضمين الرموز في النموذج بحيث تتطابق مصفوفة التضمين مع مُجزّئ الرموز.
للقيام بذلك، يرجى استخدام طريقة resize_token_embeddings().
يضمن استخدام add_special_tokens إمكانية استخدام الرموز الخاصة بعدة طرق:
- يمكن تخطي الرموز الخاصة عند فك الترميز باستخدام
skip_special_tokens = True. - تُعالَج الرموز الخاصة بعناية من قِبل مُجزّئ النص (فلا يتم تقسيمها أبداً)، على غرار
AddedTokens. - يمكنك بسهولة الإشارة إلى الرموز الخاصة باستخدام سمات فئة المُجزِّئ مثل
tokenizer.cls_token. وهذا يسهّل تطوير سكربتات تدريب وضبط دقيق لا تعتمد على نموذج محدد.
عندما يكون ذلك ممكناً، تكون الرموز الخاصة مسجّلة مسبقاً للنماذج المُدرَّبة مسبقاً المُقدَّمة (على سبيل المثال، BertTokenizer cls_token مسجّل مسبقاً ليكون '[CLS]'، وكذلك رمز XLM مسجّل ليكون '</s>').
أمثلة:
# Let's see how to add a new classification token to GPT-2
tokenizer = GPT2Tokenizer.from_pretrained("openai-community/gpt2")
model = GPT2Model.from_pretrained("openai-community/gpt2")
special_tokens_dict = {"cls_token": "<CLS>"}
num_added_toks = tokenizer.add_special_tokens(special_tokens_dict)
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))
assert tokenizer.cls_token == "<CLS>"apply_chat_template
< source >( conversation: list[dict[str, str]] | list[list[dict[str, str]]]tools: list[dict | Callable] | None = Nonedocuments: list[dict[str, str]] | None = Nonechat_template: str | None = Noneadd_generation_prompt: bool = Falsecontinue_final_message: bool | str = Falsetokenize: bool = Truesanitize_control_tokens: bool = Falsepadding: bool | str | PaddingStrategy = Falsetruncation: bool = Falsemax_length: int | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_dict: bool = Truereturn_assistant_tokens_mask: bool = Falsetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → Union[list[int], Dict]
المعاملات
- conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) — قائمة من القواميس (dicts) تحتوي على مفاتيح “role” و “content” وتمثل سجل المحادثة حتى الآن.
- tools (
list[Union[Dict, Callable]]، اختياري) — قائمة بالأدوات (دوال قابلة للاستدعاء) التي ستكون متاحة للنموذج. إذا لم يدعم القالب استدعاء الدوال، فلن يكون لهذا الحجة أي تأثير. يجب تمرير كل أداة كمخطط JSON Schema، مع تحديد اسم الأداة ووصفها وأنواع الحجج الخاصة بها. راجد دليلنا حول استخدام الأدوات لمزيد من المعلومات. - documents (
list[dict[str, str]]، اختياري) — قائمة من القواميس (dicts) تمثل مستندات ستكون متاحة للنموذج إذا كان يقوم بتوليد معزز بالاسترجاع (RAG). إذا لم يدعم القالب (template) تقنية RAG، فلن يكون لهذا الحجة أي تأثير. ننصح بأن يكون كل مستند قاموسًا يحتوي على مفتاحي “title” و “text”. - chat_template (
str، اختياري) — قالب Jinja يُستخدم لهذا التحويل. عادةً لا يكون من الضروري تمرير أي شيء إلى هذا الحجة، إذ يُستخدم قالب النموذج افتراضيًا. - add_generation_prompt (bool، اختياري) — إذا تم تعيين هذا، فسيتم إرفاق موجه يحتوي على الرمز (أو الرموز) التي تشير إلى بداية رسالة المساعد في المخرجات المنسّقة. وهذا مفيد عندما تريد توليد رد من النموذج. لاحظ أن هذا الحُجج سيُمرَّر إلى قالب المحادثة، وبالتالي يجب أن يدعمه القالب حتى يكون لهذا الحُجج أي تأثير.
- continue_final_message (bool or str، اختياري) —
إذا تم تعيين هذا، فسيتم تنسيق المحادثة بحيث تكون الرسالة الأخيرة في المحادثة مفتوحة النهاية، دون أي رموز EOS. سيواصل النموذج هذه الرسالة بدلاً من بدء رسالة جديدة. يتيح لك ذلك “تعبئة مسبقة” لجزء من استجابة النموذج. إذا تم تمرير نص، فسيتم استخدامه كمفتاح للحقل الذي يجب استمراره (مثل “reasoning_content”). لا يمكن استخدامه في الوقت نفسه مع
add_generation_prompt. - tokenize (
bool، القيمة الافتراضيةTrue) — ما إذا كان سيتم ترميز المخرجات. إذا كانتFalse، فستكون المخرجات نصًا. - sanitize_control_tokens (
bool)، القيمة الافتراضيةFalse— إذا تم ضبطه، تُرمَّز رموز التحكم التي تظهر في الرسائل أو الأدوات أو المستندات كنص عادي، بحيث تُرمَّز فقط رموز التحكم المكتوبة بواسطة قالب المحادثة نفسه كرموز. رموز التحكم هي الرموز الخاصة لمجزّئ النص، بالإضافة إلى الرموز المضافة فيtokenizer.chat_control_tokens. إذا لم يتم ضبط ذلك المتغير، تُستنتج رموز التحكم من الرموز المضافة التي تظهر في نص قالب المحادثة والسلاسل النصية. يتم تعقيم رموز التحكم الكاملة فقط، لذا إذا كان القالب يجمع سلاسل من الإدخال لتكوين رموز تحكم (مثل'<|' + message['role'] + '|>')، يجب التحقق من صحة تلك السلاسل على حدة. مفاتيح القواميس لا يتم تعقيمها أيضًا. - padding (
bool,strأو PaddingStrategy, اختياري, الافتراضي هوFalse) — اختر استراتيجية لإضافة الحشو إلى التسلسلات المُعادَة (وفقًا لجانب الحشو وفهرس الحشو الخاص بالنموذج) من بين الخيارات التالية:Trueأو'longest': يتم ملء التسلسلات حتى أطول تسلسل في الدفعة (أو لا يتم أي ملء إذا تم تقديم تسلسل واحد فقط).'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجةmax_lengthأو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.Falseأو'do_not_pad'(الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
- truncation (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم تقصير التسلسلات عند الحد الأقصى للطول. لا يؤثر إذا كان tokenize هوFalse. - max_length (
int, اختياري) — الحد الأقصى للطول (بالرموز) المستخدم للتعبئة أو الاقتطاع. لا يؤثر إذا كان tokenize هوFalse. إذا لم يُحدد، فسيتم استخدام خاصيةmax_lengthلمُقسّم النص كقيمة افتراضية. - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُرجع تينسورات لإطار عمل معين. لا يؤثر إذا كان tokenize هوFalse. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن NumPy.
- return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع قاموس بمخرجات مُسماة. لا يؤثر إذا كان tokenize هوFalse. - tokenizer_kwargs (
dict[str -- Any]، اختياري): معاملات إضافية لإيصالها إلى مُجزّئ النص. - return_assistant_tokens_mask (
bool، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع قناع (mask) للرموز التي ولّدها المساعد. بالنسبة للرموز التي ولّدها المساعد، سيحتوي القناع على القيمة 1. أما بالنسبة لرموز المستخدم والنظام، فسيحتوي القناع على القيمة 0. هذه الميزة متاحة فقط للقوالب الدردشة التي تدعمها عبر الكلمة المفتاحية{% generation %}. - **kwargs — معاملات إضافية تُمرَّر إلى مُصيِّر القالب. ستكون متاحة لقالب المحادثة.
يعيد
Union[list[int], Dict]
قائمة من معرّفات الرموز (token ids) تمثل المحادثة المُرمَّزة حتى الآن، بما في ذلك رموز التحكم. هذا المخرج جاهز للتقديم إلى النموذج، إما مباشرةً أو عبر طرق مثل generate(). إذا تم تعيين return_dict، فسيُعاد قاموس (dict) لمخرجات المُرمِّز بدلاً من ذلك.
يحوّل قائمة من القواميس التي تحتوي على المفاتيح "role" و"content" إلى قائمة من معرّفات الرموز. صُمِّم هذا الأسلوب للاستخدام مع نماذج المحادثة، حيث يقرأ خاصية chat_template في مُجزّئ الرموز لتحديد التنسيق ورموز التحكم التي يجب استخدامها أثناء التحويل.
batch_decode
< source >( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]
المعاملات
- sequences (
Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — قائمة من معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة__call__. - skip_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا. - clean_up_tokenization_spaces (
bool, اختياري) — ما إذا كان سيتم تنظيف مسافات الترميز أم لا. إذا كانتNone، فسيتم افتراضself.clean_up_tokenization_spaces. - kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — سيتم تمريرها إلى طريقة فك الترميز المحددة للنموذج الأساسي.
يعيد
list[str]
قائمة الجمل المُفكَّكة.
تحويل قائمة من قوائم معرّفات الرموز إلى قائمة من النصوص عن طريق استدعاء decode.
يُوفَّر هذا الأسلوب من أجل التوافق مع الإصدارات السابقة. يتعامل أسلوب decode الآن مع المدخلات المجمعة بشكل أصلي،
لذا يمكنك استخدام decode مباشرة بدلاً من batch_decode.
decode
< source >( token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = False**kwargs ) → Union[str, list[str]]
المعاملات
- token_ids (
Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]) — تسلسل واحد أو دفعة (قائمة من التسلسلات) من معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة__call__. - skip_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا. - kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — سيتم تمريرها إلى طريقة فك الترميز المحددة للنموذج الأساسي.
يعيد
Union[str, list[str]]
النص المُفكَّك تسلسل واحد، أو قائمة من النصوص المُفكَّكة لدفعة من التسلسلات.
يحوّل تسلسلًا من المعرّفات إلى نص، أو قائمة من التسلسلات إلى قائمة من النصوص، باستخدام مُجزّئ الرموز (tokenizer) وقاموس الرموز (vocabulary)، مع خيارات لإزالة الرموز الخاصة وتنظيف مسافات تجزئة الرموز.
يشبه ذلك القيام بـ self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).
encode
< source >( text: TextInput | PreTokenizedInput | EncodedInputtext_pair: TextInput | PreTokenizedInput | EncodedInput | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0padding_side: str | None = Nonereturn_tensors: str | TensorType | None = None**kwargs ) → list[int], torch.Tensor, or np.ndarray
المعاملات
- text (
strأوlist[str]أوlist[int]) — التسلسل الأول الذي سيتم ترميزه. يمكن أن يكون نصًا، أو قائمة من النصوص (نص مُرمَّز باستخدام طريقةtokenize)، أو قائمة من الأعداد الصحيحة (معرّفات النصوص المُرمَّزة باستخدام طريقةconvert_tokens_to_ids). - text_pair (
strأوlist[str]أوlist[int]، اختياري) — التسلسل الثاني الاختياري الذي سيتم ترميزه. يمكن أن يكون نصًا، أو قائمة من النصوص (نص مُرمَّز باستخدام طريقةtokenize)، أو قائمة من الأعداد الصحيحة (معرّفات النصوص المُرمَّزة باستخدام طريقةconvert_tokens_to_ids). - add_special_tokens (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إضافة الرموز الخاصة عند ترميز التسلسلات أم لا. سيستخدم هذا الدالة الأساسيةPretrainedTokenizerBase.build_inputs_with_special_tokens، التي تحدد الرموز التي تُضاف تلقائيًا إلى معرّفات الإدخال. يكون هذا مفيدًا إذا كنت ترغب في إضافة رموزbosأوeosتلقائيًا. - padding (
bool,strأو PaddingStrategy, اختياري, الافتراضي هوFalse) — يُفعّل التحكم في الحشو. يقبل القيم التالية:Trueأو'longest': يتم ملء التسلسلات حتى أطول تسلسل في الدفعة (أو لا يتم أي ملء إذا تم تقديم تسلسل واحد فقط).'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجةmax_lengthأو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.Falseأو'do_not_pad'(الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
- truncation (
bool,strأو TruncationStrategy, اختياري, الافتراضي هوFalse) — تفعيل التحكم في القص. يقبل القيم التالية:Trueأو'longest_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. يتم هذا القص رمزًا تلو الآخر، حيث يُزال رمز من أطول تسلسل في الزوج إذا كان قد قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).'only_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يُقصّ هذا الخيار سوى التسلسل الأول من الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).'only_second': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يتم قصّ النص الثاني من الزوج إلا إذا قُدِّم زوج من النصوص (أو دفعة من الأزواج).Falseأو'do_not_truncate'(الافتراضي): لا يوجد اقتطاع (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال في النموذج).
- max_length (
int, اختياري) — يتحكم في الحد الأقصى للطول الذي ستستخدمه إحدى معاملات القص/الحشو.إذا تُرك غير مُعيَّن أو عُدِّل إلى
None، فسيتم استخدام الطول الأقصى المُعرَّف مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب طولًا أقصى. وإذا لم يكن للنموذج طول إدخال أقصى محدد (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى طول أقصى. - stride (
int، اختياري، القيمة الافتراضية 0) — إذا تم تعيينه إلى رقم معmax_length، فستحتوي الرموز الزائدة المُعاد عندreturn_overflowing_tokens=Trueعلى بعض الرموز من نهاية التسلسل المُقتطع المُعاد، لتوفير بعض التداخل بين التسلسلات المُقتطعة والتسلسلات الزائدة. تحدد قيمة هذا الحجة عدد الرموز المتداخلة. - is_split_into_words (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان المدخل مُجزَّأً مسبقاً (على سبيل المثال، مقسَّماً إلى كلمات). إذا تم ضبطه علىTrue، يفترض المُجزِّئ أن المدخل مقسَّم بالفعل إلى كلمات (على سبيل المثال، عن طريق تقسيمه على المسافات) وسيُجزِّئها. هذا مفيد لتصنيف الكيانات الاسمية أو تصنيف الرموز. - pad_to_multiple_of (
int, اختياري) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المقدمة. يتطلب تفعيلpadding. هذا مفيد بشكل خاص لتمكين استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية حساب>= 7.5(Volta). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات بدلاً من قائمة من الأعداد الصحيحة في Python. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن نوع Numpy.
- **kwargs — تُمرَّر إلى طريقة
.tokenize().
يعيد
list[int] أو torch.Tensor أو np.ndarray
المعرّفات المُرمّزة للنص.
يحوّل نصًا إلى تسلسل من المعرّفات (أعداد صحيحة)، باستخدام مُجزّئ النص (tokenizer) والمفردات (vocabulary).
نفس ما يتم عند تنفيذ self.convert_tokens_to_ids(self.tokenize(text)).
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
المعاملات
- repo_id (
str) — اسم المستودع الذي تريد دفع مُجزّئك (tokenizer) إليه. يجب أن يحتوي على اسم مؤسستك عند الدفع إلى مؤسسة محددة. - commit_message (
str، اختياري) — الرسالة التي سيتم الالتزام بها أثناء الدفع. ستكون الافتراضية"Upload tokenizer". - commit_description (
str, اختياري) — وصف الالتزام الذي سيتم إنشاؤه - private (
bool، اختياري) — ما إذا كان سيتم جعل المستودع خاصًا. إذا كانNone(الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي للمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا بالفعل. - token (
boolأوstr، اختياري) — الرمز الذي يُستخدم كتفويض حامل HTTP للملفات البعيدة. إذا كانTrue(الافتراضي)، فسيتم استخدام الرمز الذي تم إنشاؤه عند تشغيلhf auth login(المخزَّن في~/.huggingface). - revision (
str، اختياري) — الفرع الذي سيتم دفع الملفات المرفوعة إليه. - create_pr (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم إنشاء طلب سحب (PR) بالملفات المرفوعة أم الالتزام مباشرة. - max_shard_size (
intأوstr، اختياري، القيمة الافتراضية"50GB") — ينطبق على النماذج فقط. الحد الأقصى لحجم نقطة التفتيش قبل تقسيمها إلى أجزاء. ستكون نقاط التفتيش المقسمة كل منها بحجم أقل من هذا الحجم. إذا تم التعبير عنه كنص، فيجب أن يتكون من أرقام تليها وحدة (مثل"5MB"). - tags (
list[str]، اختياري) — قائمة بالوسوم التي سيتم دفعها إلى Hub.
ارفع ملفات مُجزّئ الرموز إلى 🤗 Model Hub.
أمثلة:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")
# Push the tokenizer to your namespace with the name "my-finetuned-bert".
tokenizer.push_to_hub("my-finetuned-bert")
# Push the tokenizer to an organization with the name "my-finetuned-bert".
tokenizer.push_to_hub("huggingface/my-finetuned-bert")أنشئ واجهة خلفية tokenizers.Tokenizer من ملفات التسلسل المتاحة (tokenizer.json، نماذج sentencepiece، tekken.json، vocab/merges).
يعيد الرموز المضافة في المفردات على شكل قاموس يربط كل رمز بمؤشره.
num_special_tokens_to_add
< source >( pair: bool = False ) → int
يعيد عدد الرموز المضافة عند ترميز تسلسل مع الرموز الخاصة.
يقوم هذا بتشفير مدخل وهمي والتحقق من عدد الرموز المضافة، وبالتالي فهو غير فعّال. لا تضع هذا داخل حلقة التدريب الخاصة بك.
save_pretrained
< source >( save_directory: str | os.PathLikelegacy_format: bool | None = Nonefilename_prefix: str | None = Nonepush_to_hub: bool = Falsesave_format: str | None = None**kwargs ) → A tuple of str
المعاملات
- save_format (
str، اختياري) —"mistral"للحفظ بصيغةtekken.jsonالأصلية من خلال نسخ الملف الأصلي (يتطلب توفر ملف مفردات tekken الأصلي). يتم توحيد الاسم إلىtekken.jsonعند الحفظ، ويجب أن يتطابق المرمّز المُفعّل معه تمامًا."hf"أوNoneللصيغة الافتراضية الخاصة بـ HuggingFace. - kwargs (
dict[str, Any]، اختياري) — حجج إضافية بأسماء تُمرَّر إلى طريقة push_to_hub().
يعيد
سلسلة من str
الملفات المحفوظة.
احفظ حالة المرمّز الكاملة.
يمدّد save_pretrained() بدعم save_format، للمُرمّزات المحوّلة من ملف مفردات أصلي
(مثل tekken.json الخاص بـ Mistral). راجع الطريقة الأساسية بخصوص legacy_format وfilename_prefix وpush_to_hub.
set_truncation_and_padding
< source >( padding_strategy: PaddingStrategytruncation_strategy: TruncationStrategymax_length: intstride: intpad_to_multiple_of: int | Nonepadding_side: str | None )
المعاملات
- padding_strategy (PaddingStrategy) — نوع الحشو الذي سيُطبَّق على المدخلات
- truncation_strategy (TruncationStrategy) — نوع الاقتطاع الذي سيُطبَّق على المدخلات
- max_length (
int) — الحد الأقصى لحجم التسلسل. - stride (
int) — الخطوة المستخدمة عند التعامل مع تجاوز الحد. - pad_to_multiple_of (
int، اختياري) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. وهذا مفيد بشكل خاص لتفعيل استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية معالجة>= 7.5(Volta). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه.
حدّد استراتيجيات الاقتطاع والتعبئة لمعالجات الرموز السريعة (التي توفرها مكتبة HuggingFace tokenizers) ثم استعد إعدادات المعالج بعد ذلك.
لا يتوفر في مُجزّئ الرموز المُقدَّم أي استراتيجية لحشو/اختصار قبل القسم المُدار. إذا كان مُجزّئ الرموز قد عيّن استراتيجية لحشو/اختصار سابقاً، فسيتم إعادة تعيينها إلى عدم وجود لحشو/اختصار عند الخروج من القسم المُدار.
train_new_from_iterator
< source >( text_iteratorvocab_sizelength = Nonenew_special_tokens = Nonespecial_tokens_map = None**kwargs ) → PreTrainedTokenizerFast
المعاملات
- text_iterator (مولّد من نوع
list[str]) — مجموعة التدريب. يجب أن يكون مولّداً لدفعات من النصوص، على سبيل المثال قائمة من قوائم النصوص إذا كان لديك كل شيء في الذاكرة. - vocab_size (
int) — حجم المفردات الذي تريد استخدامه لمُجزّئ النص الخاص بك. - length (
int، اختياري) — عدد التسلسلات الإجمالي في المُكرِّر. يُستخدم هذا لتقديم تتبع تقدّم ذي معنى - new_special_tokens (قائمة من
strأوAddedToken، اختياري) — قائمة برموز خاصة جديدة تُضاف إلى مُجزّئ الرموز الذي تقوم بتدريبه. - special_tokens_map (
dict[str, str], اختياري) — إذا كنت ترغب في إعادة تسمية بعض الرموز الخاصة التي يستخدمها هذا المُجزِّئ، فمرِّر خرائط من اسم الرمز الخاص القديم إلى اسم الرمز الخاص الجديد في هذا المعامل. - kwargs (
dict[str, Any]، اختياري) — معلمات إضافية تُمرَّر إلى المدرب من مكتبة 🤗 Tokenizers.
مُقسِّم جديد من النوع نفسه الأصلي، تم تدريبه على
text_iterator.
يدرّب مُجزِّئًا (tokenizer) على مجموعة نصوص جديدة مع استخدام نفس الإعدادات الافتراضية (من حيث الرموز الخاصة أو خط أنابيب التجزئة) كما في المُجزِّئ الحالي.
يحدّث المعالج اللاحق الأساسي بالرمز bos_token والرمز eos_token الحاليين.
PythonBackend
فئة transformers.PythonBackend
< source >( **kwargs )
المعاملات
- model_max_length (
int, اختياري) — الحد الأقصى للطول (بعدد الرموز) للمدخلات إلى نموذج التحويل. عند تحميل مُجزّئ الرموز باستخدام from_pretrained()، سيتم تعيينه إلى القيمة المخزنة للنموذج المرتبط به فيmax_model_input_sizes(انظر أعلاه). إذا لم يتم تقديم قيمة، فسيكون الافتراضي VERY_LARGE_INTEGER (int(1e30)). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - truncation_side (
str، اختياري) — الجهة التي يجب تطبيق القص عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - chat_template (
str، اختياري) — نص قالب Jinja يُستخدم لتنسيق قوائم رسائل الدردشة. راجع https://huggingface.co/docs/transformers/chat_templating للحصول على وصف كامل. - model_input_names (
list[string]، اختياري) — قائمة المدخلات التي يقبلها المسار الأمامي للنموذج (مثل"token_type_ids"أو"attention_mask"). القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - bos_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل بداية الجملة. - eos_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل نهاية الجملة. - unk_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل رمزًا خارج نطاق المفردات. - sep_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يفصل بين جملتين مختلفتين في نفس المدخل (يُستخدم في BERT على سبيل المثال). - pad_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يُستخدم لجعل مصفوفات الرموز متساوية الحجم لأغراض الدفع (batching). ثم يتم تجاهله من قبل آليات الانتباه أو حساب الخسارة. - cls_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل فئة الإدخال (يُستخدم في BERT على سبيل المثال). - mask_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل الرمز المقنّع (يُستخدم في أهداف ما قبل التدريب لنمذجة اللغة المقنّعة، مثل BERT). سيُربط بـself.mask_tokenوself.mask_token_id. - extra_special_tokens (قائمة من
strأوtokenizers.AddedToken، اختياري) — قائمة من الرموز الخاصة الإضافية المحددة للنموذج. أضفها هنا للتأكد من تجاوزها عند فك الترميز عندما يكونskip_special_tokensمضبوطاً على True. إذا لم تكن جزءاً من المفردات، فسيتم إضافتها في نهاية المفردات. - split_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب تقسيم الرموز الخاصة أثناء عملية الترميز. تمرير القيمة سيؤثر على الحالة الداخلية للمرمِّز. السلوك الافتراضي هو عدم تقسيم الرموز الخاصة. وهذا يعني أنه إذا كان<s>هوbos_token، فإنtokenizer.tokenize("<s>") = ['<s>]. وإلا، إذا كانsplit_special_tokens=True، فإنtokenizer.tokenize("<s>")سيعطي['<','s', '>'].
الفئة الأساسية لجميع المرمّزات البطيئة.
يرث من PreTrainedTokenizerBase.
التعامل مع جميع الطرق المشتركة للتجزئة والرموز الخاصة، وكذلك الطرق الخاصة بتنزيل/تخزين/تحميل المجزئات المُدرَّبة مسبقًا، بالإضافة إلى إضافة رموز إلى المفردات.
تحتوي هذه الفئة أيضًا على الرموز المضافة بطريقة موحّدة فوق جميع مُجزّئات الرموز، حتى لا نضطر إلى التعامل مع طرق توسيع المفردات المحددة للهياكل القاموسية الأساسية المختلفة (BPE، sentencepiece…).
خصائص الفئة (المُعاد تعريفها في الفئات المشتقة)
- vocab_files_names (
dict[str, str]) — قاموس تكون مفاتيحه أسماء كلمات المفتاح__init__لكل ملف مفردات مطلوب من النموذج، وقيمته المرتبطة هي اسم الملف لحفظ الملف المرتبط (نص). - pretrained_vocab_files_map (
dict[str, dict[str, str]]) — قاموس من القواميس، حيث تكون المفاتيح العليا هي اسم كلمة المفتاح__init__لكل ملف مفردات مطلوب من النموذج، والمفاتيح الدنيا هيshort-cut-namesللنماذج المُدرَّبة مسبقاً، مع قيم مرتبطة بها هيurlلملف المفردات المُدرَّب مسبقاً المرتبط. - model_input_names (
list[str]) — قائمة بالمُدخلات المتوقعة في مسار الأمامي (forward pass) للنموذج. - padding_side (
str) — القيمة الافتراضية للجهة التي يجب تطبيق الحشو عليها في النموذج. يجب أن تكون'right'أو'left'. - truncation_side (
str) — القيمة الافتراضية للجهة التي يجب تطبيق القص عليها في النموذج. يجب أن تكون'right'أو'left'.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
أنشئ مدخلات النموذج من تسلسل أو زوج من التسلسلات عن طريق إضافة الرموز الخاصة.
يبني هذا الأسلوب المدخلات ديناميكياً بناءً على special_tokens_pattern الخاص بمجزّئ الرموز:
"none": لا توجد رموز خاصة"cls_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] seq1 [SEP]"eos": seq0 [EOS] أو seq0 [EOS] seq1 [EOS]"bos": [BOS] seq0 أو [BOS] seq0 [BOS] seq1"bos_eos": [BOS] seq0 [EOS] أو [BOS] seq0 [EOS] seq1 [EOS]"cls_double_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] [SEP] seq1 [SEP]"prefix_suffix":<prefix_tokens> seq0 [seq1] <suffix_tokens>(بادئة/لاحقة مخصصة مخزنة على مُجزّئ الرموز)
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
أنشئ قناعًا من التسلسلين المُمرَّرين لاستخدامه في مهمة تصنيف أزواج التسلسلات.
تُبنى معرّفات أنواع الرموز ديناميكيًا بواسطة هذه الطريقة بناءً على سمات إعدادات مُجزّئ الرموز:
token_type_ids_pattern: النمط المستخدم (“all_zeros” أو “bert_style”)token_type_ids_include_special_tokens: ما إذا كان يجب أخذ الرموز الخاصة في الاعتبار عند حساب الطول
أمثلة:
# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences
# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairsيعيد الرموز المضافة في المفردات على شكل قاموس يربط كل رمز بمؤشره. قد تختلف النتائج عن استدعاء fast لأننا نضيف الرموز دائمًا حتى لو كانت موجودة مسبقًا في المفردات. وهذا أمر ينبغي تغييره.
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
المعاملات
- token_ids_0 (
list[int]) — قائمة معرّفات (ids) التسلسل الأول. - token_ids_1 (
list[int]، اختياري) — قائمة معرّفات (ids) للتسلسل الثاني. - already_has_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كانت قائمة الرموز (tokens) منسّقة مسبقًا برموز خاصة للنموذج أم لا.
يعيد
قائمة من الأعداد الصحيحة في المدى [0, 1]
1 لرمز خاص، 0 لرمز التسلسل.
يسترجع معرّفات التسلسلات من قائمة الرموز التي لم تُضف إليها رموز خاصة. يُستدعى هذا الأسلوب عند إضافة الرموز الخاصة باستخدام أساليب prepare_for_model أو encode_plus في المُرمِّز.
تُبنى قناع الرموز الخاصة ديناميكيًا بواسطة هذه الطريقة بناءً على special_tokens_pattern الخاص بمجزّئ الرموز:
"none": لا توجد رموز خاصة (الافتراضي، يعيد جميع القيم 0)"cls_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] seq1 [SEP]"eos": seq0 [EOS] أو seq0 [EOS] seq1 [EOS]"bos": [BOS] seq0 أو [BOS] seq0 [BOS] seq1"bos_eos": [BOS] seq0 [EOS] أو [BOS] seq0 [EOS] seq1 [EOS]"cls_double_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] [SEP] seq1 [SEP]"prefix_suffix":<prefix_tokens> seq0 [seq1] <suffix_tokens>
num_special_tokens_to_add
< source >( pair: bool = False ) → int
يعيد عدد الرموز المضافة عند ترميز تسلسل مع الرموز الخاصة.
يقوم هذا بتشفير مدخل وهمي والتحقق من عدد الرموز المضافة، وبالتالي فهو غير فعّال. لا تضع هذا داخل حلقة التدريب الخاصة بك.
prepare_for_model
< source >( ids: listpair_ids: list[int] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Falsemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_length: bool = Falseverbose: bool = Trueprepend_batch_axis: bool = False**kwargs )
يُعدّ تسلسلًا من معرّفات الإدخال بحيث يمكن استخدامُه من قِبَل النموذج. يضيف الرموز الخاصة، ويقصّ التسلسل، ويملأ الفراغات.
prepare_for_tokenization
< source >( text: stris_split_into_words: bool = False**kwargs ) → tuple[str, dict[str, Any]]
المعاملات
- text (
str) — النص الذي يجب تجهيزه. - is_split_into_words (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان المدخل مُجزَّأً مسبقاً (على سبيل المثال، مقسَّماً إلى كلمات). إذا تم ضبطه علىTrue، يفترض المُجزِّئ أن المدخل مقسَّم بالفعل إلى كلمات (على سبيل المثال، عن طريق تقسيمه على المسافات) وسيُجزِّئها. هذا مفيد لتصنيف الكيانات الاسمية أو تصنيف الرموز. - kwargs (
dict[str, Any], اختياري) — حجج الكلمات المفتاحية المستخدمة لعملية الترميز.
يعيد
tuple[str, dict[str, Any]]
النص المُعدّ وkwarg غير المستخدمة.
يُنفّذ أي تحويلات ضرورية قبل الترميز.
يجب أن تستخرج هذه الطريقة الحُجج من kwargs وتعيد المتبقي منها أيضاً. نقوم بفحص kwargs في نهاية عملية الترميز للتأكد من أن جميع الحُجج قد استُخدمت.
save_vocabulary
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple[str, ...]
التنفيذ الافتراضي لأنماط حفظ المفردات الشائعة. يحفظ self.encoder/self.vocab بصيغة JSON، مع إمكانية تضمين self.bpe_ranks كعمليات دمج. يعيد مجموعة فارغة (tuple) إذا لم توجد مفردات.
إذا كان مُجزّئ الكلمات الخاص بك يحتاج إلى منطق حفظ مخصص (مثل نماذج SentencePiece، أو ملفات مفردات متعددة، أو صيغ ملفات خاصة)، فقم بتجاوز هذه الطريقة.
tokenize
< source >( text: str**kwargs )
يحوّل سلسلة نصية إلى تسلسل من الرموز، باستخدام مُجزّئ الرموز.
truncate_sequences
< source >( ids: listpair_ids: list[int] | None = Nonenum_tokens_to_remove: int = 0truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first'stride: int = 0 )
يقوم بقصّ التسلسلات وفقاً للاستراتيجية المحددة.
TokenizersBackend
فئة transformers.TokenizersBackend
< source >( *args**kwargs )
المعاملات
- model_max_length (
int, اختياري) — الحد الأقصى للطول (بعدد الرموز) للمدخلات إلى نموذج التحويل. عند تحميل مُجزّئ الرموز باستخدام from_pretrained()، سيتم تعيينه إلى القيمة المخزنة للنموذج المرتبط به فيmax_model_input_sizes(انظر أعلاه). إذا لم يتم تقديم قيمة، فسيكون الافتراضي VERY_LARGE_INTEGER (int(1e30)). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - truncation_side (
str، اختياري) — الجهة التي يجب تطبيق القص عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - chat_template (
str، اختياري) — نص قالب Jinja يُستخدم لتنسيق قوائم رسائل الدردشة. راجع https://huggingface.co/docs/transformers/chat_templating للحصول على وصف كامل. - model_input_names (
list[string]، اختياري) — قائمة المدخلات التي يقبلها المسار الأمامي للنموذج (مثل"token_type_ids"أو"attention_mask"). القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - bos_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل بداية الجملة. - eos_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل نهاية الجملة. - unk_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل رمزًا خارج نطاق المفردات. - sep_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يفصل بين جملتين مختلفتين في نفس المدخل (يُستخدم في BERT على سبيل المثال). - pad_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يُستخدم لجعل مصفوفات الرموز متساوية الحجم لأغراض الدفع (batching). ثم يتم تجاهله من قبل آليات الانتباه أو حساب الخسارة. - cls_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل فئة الإدخال (يُستخدم في BERT على سبيل المثال). - mask_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل الرمز المقنّع (يُستخدم في أهداف ما قبل التدريب لنمذجة اللغة المقنّعة، مثل BERT). سيُربط بـself.mask_tokenوself.mask_token_id. - extra_special_tokens (قائمة من
strأوtokenizers.AddedToken، اختياري) — قائمة من الرموز الخاصة الإضافية المحددة للنموذج. أضفها هنا للتأكد من تجاوزها عند فك الترميز عندما يكونskip_special_tokensمضبوطاً على True. إذا لم تكن جزءاً من المفردات، فسيتم إضافتها في نهاية المفردات. - split_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب تقسيم الرموز الخاصة أثناء عملية الترميز. تمرير القيمة سيؤثر على الحالة الداخلية للمرمِّز. السلوك الافتراضي هو عدم تقسيم الرموز الخاصة. وهذا يعني أنه إذا كان<s>هوbos_token، فإنtokenizer.tokenize("<s>") = ['<s>]. وإلا، إذا كانsplit_special_tokens=True، فإنtokenizer.tokenize("<s>")سيعطي['<','s', '>']. - tokenizer_object (
tokenizers.Tokenizer) — كائنtokenizers.Tokenizerمن 🤗 tokenizers يُستخدم للتشغيل. راجع استخدام tokenizers من 🤗 tokenizers لمزيد من المعلومات. - tokenizer_file (
str) — مسار إلى ملف JSON محلي يمثل كائنtokenizers.Tokenizerسبق تسلسله من 🤗 tokenizers.
الفئة الأساسية لجميع المرمّزات السريعة (تغلّف مكتبة HuggingFace tokenizers).
يرث من PreTrainedTokenizerBase.
يتولى معالجة جميع الطرق المشتركة الخاصة بالتجزئة والرموز الخاصة، فضلاً عن الطرق الخاصة بتنزيل/تخزين/تحميل المجزئات المُدرَّبة مسبقاً، وكذلك إضافة رموز إلى المفردات.
تحتوي هذه الفئة أيضًا على الرموز المضافة بطريقة موحدة فوق جميع مُجزّئات الرموز، حتى لا نضطر إلى التعامل مع طرق توسيع المفردات المحددة للبنى القاموسية الأساسية المختلفة (BPE، sentencepiece…).
خصائص الفئة (المُعاد تعريفها في الفئات المشتقة)
- vocab_files_names (
dict[str, str]) — قاموس تكون مفاتيحه أسماء كلمات المفتاح__init__لكل ملف مفردات مطلوب من النموذج، وقيمته المرتبطة هي اسم الملف لحفظ الملف المرتبط (نص). - pretrained_vocab_files_map (
dict[str, dict[str, str]]) — قاموس من القواميس، حيث تكون المفاتيح العليا هي اسم كلمة المفتاح__init__لكل ملف مفردات مطلوب من النموذج، والمفاتيح الدنيا هيshort-cut-namesللنماذج المُدرَّبة مسبقاً، مع قيم مرتبطة بها هيurlلملف المفردات المُدرَّب مسبقاً المرتبط. - model_input_names (
list[str]) — قائمة بالمُدخلات المتوقعة في مسار الأمامي (forward pass) للنموذج. - padding_side (
str) — القيمة الافتراضية للجهة التي يجب تطبيق الحشو عليها في النموذج. يجب أن تكون'right'أو'left'. - truncation_side (
str) — القيمة الافتراضية للجهة التي يجب تطبيق القص عليها في النموذج. يجب أن تكون'right'أو'left'.
أنشئ واجهة خلفية tokenizers.Tokenizer من ملفات التسلسل المتاحة (tokenizer.json، نماذج sentencepiece، tekken.json، vocab/merges).
يعيد الرموز المضافة في المفردات على شكل قاموس يربط كل رمز بمؤشره.
num_special_tokens_to_add
< source >( pair: bool = False ) → int
يعيد عدد الرموز المضافة عند ترميز تسلسل مع الرموز الخاصة.
يقوم هذا بتشفير مدخل وهمي والتحقق من عدد الرموز المضافة، وبالتالي فهو غير فعّال. لا تضع هذا داخل حلقة التدريب الخاصة بك.
save_pretrained
< source >( save_directory: str | os.PathLikelegacy_format: bool | None = Nonefilename_prefix: str | None = Nonepush_to_hub: bool = Falsesave_format: str | None = None**kwargs ) → A tuple of str
المعاملات
- save_format (
str، اختياري) —"mistral"للحفظ بصيغةtekken.jsonالأصلية من خلال نسخ الملف الأصلي (يتطلب توفر ملف مفردات tekken الأصلي). يتم توحيد الاسم إلىtekken.jsonعند الحفظ، ويجب أن يتطابق المرمّز المُفعّل معه تمامًا."hf"أوNoneللصيغة الافتراضية الخاصة بـ HuggingFace. - kwargs (
dict[str, Any]، اختياري) — حجج إضافية بأسماء تُمرَّر إلى طريقة push_to_hub().
يعيد
سلسلة من str
الملفات المحفوظة.
احفظ حالة المرمّز الكاملة.
يمدّد save_pretrained() بدعم save_format، للمُرمّزات المحوّلة من ملف مفردات أصلي
(مثل tekken.json الخاص بـ Mistral). راجع الطريقة الأساسية بخصوص legacy_format وfilename_prefix وpush_to_hub.
set_truncation_and_padding
< source >( padding_strategy: PaddingStrategytruncation_strategy: TruncationStrategymax_length: intstride: intpad_to_multiple_of: int | Nonepadding_side: str | None )
المعاملات
- padding_strategy (PaddingStrategy) — نوع الحشو الذي سيُطبَّق على المدخلات
- truncation_strategy (TruncationStrategy) — نوع الاقتطاع الذي سيُطبَّق على المدخلات
- max_length (
int) — الحد الأقصى لحجم التسلسل. - stride (
int) — الخطوة المستخدمة عند التعامل مع تجاوز الحد. - pad_to_multiple_of (
int، اختياري) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. وهذا مفيد بشكل خاص لتفعيل استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية معالجة>= 7.5(Volta). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه.
حدّد استراتيجيات الاقتطاع والتعبئة لمعالجات الرموز السريعة (التي توفرها مكتبة HuggingFace tokenizers) ثم استعد إعدادات المعالج بعد ذلك.
لا يتوفر في مُجزّئ الرموز المُقدَّم أي استراتيجية لحشو/اختصار قبل القسم المُدار. إذا كان مُجزّئ الرموز قد عيّن استراتيجية لحشو/اختصار سابقاً، فسيتم إعادة تعيينها إلى عدم وجود لحشو/اختصار عند الخروج من القسم المُدار.
train_new_from_iterator
< source >( text_iteratorvocab_sizelength = Nonenew_special_tokens = Nonespecial_tokens_map = None**kwargs ) → PreTrainedTokenizerFast
المعاملات
- text_iterator (مولّد من نوع
list[str]) — مجموعة التدريب. يجب أن يكون مولّداً لدفعات من النصوص، على سبيل المثال قائمة من قوائم النصوص إذا كان لديك كل شيء في الذاكرة. - vocab_size (
int) — حجم المفردات الذي تريد استخدامه لمُجزّئ النص الخاص بك. - length (
int، اختياري) — عدد التسلسلات الإجمالي في المُكرِّر. يُستخدم هذا لتقديم تتبع تقدّم ذي معنى - new_special_tokens (قائمة من
strأوAddedToken، اختياري) — قائمة برموز خاصة جديدة لإضافتها إلى مُجزّئ الرموز الذي تقوم بتدريبه. - special_tokens_map (
dict[str, str], اختياري) — إذا كنت ترغب في إعادة تسمية بعض الرموز الخاصة التي يستخدمها هذا المُجزِّئ، فمرِّر خرائط من اسم الرمز الخاص القديم إلى اسم الرمز الخاص الجديد في هذا المعامل. - kwargs (
dict[str, Any]، اختياري) — معلمات إضافية تُمرَّر إلى المدرب من مكتبة 🤗 Tokenizers.
مُقسِّم جديد من النوع نفسه الأصلي، تم تدريبه على
text_iterator.
يُدرّب مُجزِّئًا (tokenizer) على مجموعة بيانات جديدة مع استخدام نفس الإعدادات الافتراضية (من حيث الرموز الخاصة أو خط أنابيب التجزئة) كما في المُجزِّئ الحالي.
يحدّث المعالج اللاحق الأساسي بالرمز bos_token والرمز eos_token الحاليين.
SentencePieceBackend
فئة transformers.SentencePieceBackend
< source >( **kwargs )
المعاملات
- model_max_length (
int, اختياري) — الحد الأقصى للطول (بعدد الرموز) للمدخلات إلى نموذج التحويل. عند تحميل مُجزّئ الرموز باستخدام from_pretrained()، سيتم تعيينه إلى القيمة المخزنة للنموذج المرتبط به فيmax_model_input_sizes(انظر أعلاه). إذا لم يتم تقديم قيمة، فسيكون الافتراضي VERY_LARGE_INTEGER (int(1e30)). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - truncation_side (
str، اختياري) — الجهة التي يجب تطبيق القص عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - chat_template (
str، اختياري) — نص قالب Jinja يُستخدم لتنسيق قوائم رسائل الدردشة. راجع https://huggingface.co/docs/transformers/chat_templating للحصول على وصف كامل. - model_input_names (
list[string]، اختياري) — قائمة المدخلات التي يقبلها المسار الأمامي للنموذج (مثل"token_type_ids"أو"attention_mask"). القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - bos_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل بداية الجملة. - eos_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل نهاية الجملة. - unk_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل رمزًا خارج نطاق المفردات. - sep_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يفصل بين جملتين مختلفتين في نفس المدخل (يُستخدم في BERT على سبيل المثال). - pad_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يُستخدم لجعل مصفوفات الرموز متساوية الحجم لأغراض الدفع (batching). ثم يتم تجاهله من قبل آليات الانتباه أو حساب الخسارة. - cls_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل فئة الإدخال (يُستخدم في BERT على سبيل المثال). - mask_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل الرمز المقنّع (يُستخدم في أهداف ما قبل التدريب لنمذجة اللغة المقنّعة، مثل BERT). سيُربط بـself.mask_tokenوself.mask_token_id. - extra_special_tokens (قائمة من
strأوtokenizers.AddedToken، اختياري) — قائمة من الرموز الخاصة الإضافية المحددة للنموذج. أضفها هنا للتأكد من تجاوزها عند فك الترميز عندما يكونskip_special_tokensمضبوطاً على True. إذا لم تكن جزءاً من المفردات، فسيتم إضافتها في نهاية المفردات. - split_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب تقسيم الرموز الخاصة أثناء عملية الترميز. تمرير القيمة سيؤثر على الحالة الداخلية للمرمِّز. السلوك الافتراضي هو عدم تقسيم الرموز الخاصة. وهذا يعني أنه إذا كان<s>هوbos_token، فإنtokenizer.tokenize("<s>") = ['<s>]. وإلا، إذا كانsplit_special_tokens=True، فإنtokenizer.tokenize("<s>")سيعطي['<','s', '>'].
الفئة الأساسية لمُجزِّئات النص المعتمدة على SentencePiece التي تُحمَّل من ملفات sentencepiece.model.
يرث من PreTrainedTokenizer.
التعامل مع جميع الطرق المشتركة للتجزئة والرموز الخاصة، وكذلك الطرق الخاصة بتنزيل/تخزين/تحميل المجزئات المُدرَّبة مسبقًا، بالإضافة إلى إضافة رموز إلى المفردات.
تحتوي هذه الفئة أيضًا على الرموز المضافة بطريقة موحّدة فوق جميع مُجزّئات الرموز، حتى لا نضطر إلى التعامل مع طرق توسيع المفردات المحددة للهياكل القاموسية الأساسية المختلفة (BPE، sentencepiece…).
خصائص الفئة (المُعاد تعريفها في الفئات المشتقة)
- vocab_files_names (
dict[str, str]) — قاموس تكون مفاتيحه أسماء كلمات المفتاح__init__لكل ملف مفردات مطلوب من النموذج، وقيمته المرتبطة هي اسم الملف لحفظ الملف المرتبط (نص). - pretrained_vocab_files_map (
dict[str, dict[str, str]]) — قاموس من القواميس، حيث تكون المفاتيح العليا هي اسم كلمة المفتاح__init__لكل ملف مفردات مطلوب من النموذج، والمفاتيح الدنيا هيshort-cut-namesللنماذج المُدرَّبة مسبقاً، مع قيم مرتبطة بها هيurlلملف المفردات المُدرَّب مسبقاً المرتبط. - model_input_names (
list[str]) — قائمة بالمُدخلات المتوقعة في مسار الأمامي (forward pass) للنموذج. - padding_side (
str) — القيمة الافتراضية للجهة التي يجب تطبيق الحشو عليها في النموذج. يجب أن تكون'right'أو'left'. - truncation_side (
str) — القيمة الافتراضية للجهة التي يجب تطبيق القص عليها في النموذج. يجب أن تكون'right'أو'left'.
يحوّل تسلسل الرموز (نص) إلى نص واحد.
يعيد vocab كقاموس
save_vocabulary
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple(str)
احفظ مفردات sentencepiece (انسخ الملف الأصلي) إلى مجلد.
BatchEncoding
فئة transformers.BatchEncoding
< source >( data: dict[str, Any] | None = Noneencoding: EncodingFast | Sequence[EncodingFast] | None = Nonetensor_type: None | str | TensorType = Noneprepend_batch_axis: bool = Falsen_sequences: int | None = None )
المعاملات
- data (
dict، اختياري) — قاموس من القوائم/المصفوفات/الموترات التي تُعاد بواسطة طرق__call__/encode_plus/batch_encode_plus(مثل ‘input_ids’ و ‘attention_mask’). - encoding (
tokenizers.EncodingأوSequence[tokenizers.Encoding]، اختياري) — إذا كان مُجزِّئ الرموز (tokenizer) من النوع السريع الذي يُخرج معلومات إضافية مثل الترميز من مساحة الكلمات/الأحرف إلى مساحة الرموز، فإن كائنtokenizers.Encodingأو قائمة من الكائنات (للدفات) تحتفظ بهذه المعلومات. - tensor_type (
Union[None, str, TensorType]، اختياري) — يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة. - prepend_batch_axis (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إضافة محور الدفعة عند التحويل إلى متجهات (انظرtensor_typeأعلاه). لاحظ أن لهذا المعامل تأثيرًا إذا تم تعيين المعاملtensor_type، وإلا فلا يكون له أي تأثير. - n_sequences (
Optional[int]، اختياري) — عدد تسلسلات الإدخال التي يُمثّلها كل ترميز (Noneفي حال عدم المعرفة، و1لتسلسل واحد، و2لزوج من التسلسلات).
يحتوي على مخرجات دالة call()، ومنهجَي ~tokenization_utils_base.PreTrainedTokenizerBase.encode_plus و~tokenization_utils_base.PreTrainedTokenizerBase.batch_encode_plus (الرموز، أقنعة الانتباه، إلخ).
تشتق هذه الفئة من قاموس بايثون ويمكن استخدامها كقاموس. بالإضافة إلى ذلك، تكشف هذه الفئة عن طرق مساعدة للربط من مساحة الكلمات/الأحرف إلى مساحة الرموز.
char_to_token
< source >( batch_or_char_index: intchar_index: int | None = Nonesequence_index: int = 0 ) → int
المعاملات
- batch_or_char_index (
int) — مؤشر التسلسل في الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا هو مؤشر الحرف داخل التسلسل - char_index (
int، اختياري) — إذا تم تقديم فهرس الدفعة في batch_or_char_index، فقد يكون هذا هو فهرس الحرف في التسلسل. - sequence_index (
int, اختياري، القيمة الافتراضية 0) — إذا كان زوج من التسلسلات مشفَّرًا في الدفعة، يمكن استخدام هذا لتحديد التسلسل (0 أو 1) الذي ينتمي إليه فهرس المحرف المُقدَّم ضمن ذلك الزوج.
يعيد
int
مؤشر الرمز، أو None إذا كان مؤشر الحرف يشير إلى رمز يتكون من مسافة فقط وتمت إزالة المسافات باستخدام trim_offsets=True.
احصل على فهرس الرمز في المخرجات المُرمَّزة الذي يتضمّن حرفًا من السلسلة الأصلية، وذلك لسلسلة ضمن الدفعة.
يمكن استدعاؤها على النحو التالي:
self.char_to_token(char_index)إذا كان حجم الدفعة 1self.char_to_token(batch_index, char_index)إذا كان حجم الدفعة أكبر من 1 أو يساويه
تناسب هذه الطريقة بشكل خاص عندما تُقدَّم تسلسلات الإدخال كتسلسلات مُجزّأة مسبقاً (أي أن الكلمات يحددها المستخدم). في هذه الحالة، تتيح ربط الرموز المُرمّزة بالكلمات المُجزّأة المُقدَّمة بسهولة.
char_to_word
< source >( batch_or_char_index: intchar_index: int | None = Nonesequence_index: int = 0 ) → int
المعاملات
- batch_or_char_index (
int) — مؤشر التسلسل داخل الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا المؤشر هو مؤشر الحرف في النص الأصلي. - char_index (
int، اختياري) — إذا تم تقديم فهرس الدفعة في batch_or_char_index، فقد يكون هذا هو فهرس الحرف في النص الأصلي. - sequence_index (
int, اختياري، القيمة الافتراضية 0) — إذا كان زوج من التسلسلات مشفَّرًا في الدفعة، يمكن استخدام هذا لتحديد التسلسل (0 أو 1) الذي ينتمي إليه فهرس المحرف المُقدَّم ضمن ذلك الزوج.
يعيد
int
مؤشر الكلمة التي تحتوي على الحرف.
احصل على الكلمة في السلسلة الأصلية المقابلة لحرف في السلسلة الأصلية لتسلسل ضمن الدفعة.
يمكن استدعاؤها على النحو التالي:
self.char_to_word(char_index)إذا كان حجم الدفعة 1self.char_to_word(batch_index, char_index)إذا كان حجم الدفعة أكبر من 1
يُعدّ هذا الأسلوب مناسباً بشكل خاص عندما تُقدَّم تسلسلات الإدخال كتسلسلات مُجزّأة مسبقاً (أي أن الكلمات يحددها المستخدم). في هذه الحالة، يتيح هذا الأسلوب ربط الرموز المُشفَّرة بالكلمات المُجزّأة المُقدَّمة بسهولة.
convert_to_tensors
< source >( tensor_type: str | TensorType | None = Noneprepend_batch_axis: bool = False )
المعاملات
- tensor_type (
strأو TensorType، اختياري) — نوع المصفوفات (tensors) المراد استخدامه. إذا كانstr، فيجب أن يكون أحد قيم التعداد TensorType. إذا كانNone، فلا يتم إجراء أي تعديل. - prepend_batch_axis (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إضافة بُعد الدفعة (batch) أثناء التحويل أم لا.
قم بتحويل المحتوى الداخلي إلى متجهات.
sequence_ids
< source >( batch_index: int = 0 ) → list[Optional[int]]
المعاملات
يعيد
list[Optional[int]]
قائمة تُظهر المعرّف التسلسلي (sequence id) المقابل لكل رمز. تُربط الرموز الخاصة التي يضيفها مُجزّئ النص (tokenizer) بقيمة None، بينما تُربط الرموز الأخرى بمؤشر (index) التسلسل المقابل لها.
إرجاع قائمة تربط الرموز بمعرف جملها الأصلية:
Noneللرموز الخاصة المضافة حول التسلسلات أو بينها،0للرموز المقابلة للكلمات في التسلسل الأول،1للرموز المقابلة للكلمات في التسلسل الثاني عند ترميز زوج من التسلسلات معًا.
إلى
< source >( device: str | torch.device | intnon_blocking: bool = False ) → BatchEncoding
أرسل جميع القيم إلى الجهاز عن طريق استدعاء v.to(device, non_blocking=non_blocking) (PyTorch فقط).
token_to_chars
< source >( batch_or_token_index: inttoken_index: int | None = None ) → CharSpan
المعاملات
- batch_or_token_index (
int) — مؤشر التسلسل في الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا هو مؤشر الرمز داخل التسلسل. - token_index (
int، اختياري) — إذا تم تقديم فهرس الدفعة في batch_or_token_index، يمكن أن يكون هذا هو فهرس الرمز أو الرموز في التسلسل.
يعيد
مدى الأحرف في السلسلة الأصلية، أو None إذا لم يقابل الرمز (مثل , ) أي أحرف في السلسلة الأصلية.
احصل على نطاق الأحرف المقابل لرمز مشفّر في تسلسل ضمن الدفعة.
تُعاد نطاقات الأحرف على شكل CharSpan مع:
- start — فهرس أول حرف في النص الأصلي المرتبط بالرمز.
- end — فهرس الحرف الذي يلي الحرف الأخير في السلسلة الأصلية المرتبطة بالرمز.
يمكن استدعاؤها على النحو التالي:
self.token_to_chars(token_index)إذا كان حجم الدفعة 1self.token_to_chars(batch_index, token_index)إذا كان حجم الدفعة (batch size) أكبر من 1 أو يساويه
token_to_sequence
< source >( batch_or_token_index: inttoken_index: int | None = None ) → int
المعاملات
- batch_or_token_index (
int) — مؤشر التسلسل في الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا هو مؤشر الرمز داخل التسلسل. - token_index (
int، اختياري) — إذا تم تقديم فهرس الدفعة في batch_or_token_index، فقد يكون هذا هو فهرس الرمز في التسلسل.
يعيد
int
مؤشر تسلسل الإدخال الذي يحتوي على الرمز (0 للتسلسل الأول أو 1 للتسلسل الثاني من الزوج).
احصل على فهرس التسلسل الذي يمثله الرمز المُعطى. في حالة الاستخدام العامة، تُعيد هذه الطريقة 0 لتسلسل واحد أو للتسلسل الأول من زوج، و1 للتسلسل الثاني من زوج
يمكن استدعاؤها على النحو التالي:
self.token_to_sequence(token_index)إذا كان حجم الدفعة 1self.token_to_sequence(batch_index, token_index)إذا كان حجم الدفعة أكبر من 1
يُعدّ هذا الأسلوب مناسباً بشكل خاص عندما تُقدَّم تسلسلات الإدخال على شكل تسلسلات مُجزّأة مسبقاً (أي أن الكلمات يحددها المستخدم). في هذه الحالة، يتيح هذا الأسلوب ربط الرموز المُرمَّزة بالكلمات المُجزّأة المُقدَّمة بسهولة.
token_to_word
< source >( batch_or_token_index: inttoken_index: int | None = None ) → int
المعاملات
- batch_or_token_index (
int) — مؤشر التسلسل في الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا هو مؤشر الرمز داخل التسلسل. - token_index (
int، اختياري) — إذا تم تقديم فهرس الدفعة في batch_or_token_index، فقد يكون هذا هو فهرس الرمز في التسلسل.
يعيد
int
مؤشر الكلمة في تسلسل الإدخال.
احصل على فهرس الكلمة المقابلة (أي المكوّنة) لرمز مشفّر في تسلسل ضمن الدفعة.
يمكن استدعاؤها على النحو التالي:
self.token_to_word(token_index)إذا كان حجم الدفعة 1self.token_to_word(batch_index, token_index)إذا كان حجم الدفعة أكبر من 1
يُعدّ هذا الأسلوب مناسباً بشكل خاص عندما تُقدَّم تسلسلات الإدخال على شكل تسلسلات مُجزّأة مسبقاً (أي أن الكلمات يحددها المستخدم). في هذه الحالة، يتيح هذا الأسلوب ربط الرموز المُرمَّزة بالكلمات المُجزّأة المُقدَّمة بسهولة.
رموز
< source >( batch_index: int = 0 ) → list[str]
إرجاع قائمة الرموز (الأجزاء الفرعية من نصوص الإدخال بعد تقسيم الكلمات/الرموز الفرعية وقبل التحويل إلى فهارس صحيحة) عند فهرس دفعة معيّن (يعمل فقط مع مخرجات مُقسِّم سريع).
word_ids
< source >( batch_index: int = 0 ) → list[Optional[int]]
المعاملات
يعيد
list[Optional[int]]
A list indicating the word corresponding to each token. Special tokens added by the
tokenizer are mapped to None and other tokens are mapped to the index of their corresponding word
(several tokens will be mapped to the same word index if they are parts of that word).
إرجاع قائمة تربط الرموز بالكلمة الفعلية في الجملة الأصلية لمُرمِّز سريع.
word_to_chars
< source >( batch_or_word_index: intword_index: int | None = Nonesequence_index: int = 0 ) → CharSpan
المعاملات
- batch_or_word_index (
int) — مؤشر التسلسل في الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، يمكن أن يكون هذا هو مؤشر الكلمة داخل التسلسل - word_index (
int، اختياري) — إذا تم تقديم فهرس الدفعة في batch_or_word_index، فقد يكون هذا هو فهرس الكلمة في التسلسل. - sequence_index (
int، اختياري، القيمة الافتراضية 0) — إذا كان زوج من التسلسلات مشفَّرًا في الدفعة، يمكن استخدام هذا لتحديد التسلسل (0 أو 1) الذي ينتمي إليه فهرس الكلمة المُقدَّم ضمن الزوج.
يعيد
CharSpan
مدى الحرف أو الأحرف المرتبطة في السلسلة. CharSpan هو NamedTuple يحتوي على:
- start: فهرس أول حرف مرتبط بالكلمة في السلسلة الأصلية
- end: فهرس الحرف الذي يلي آخر حرف مرتبط بالكلمة في السلسلة الأصلية
احصل على نطاق الأحرف في السلسلة الأصلية المقابل للكلمة المعطاة في تسلسل من الدفعة.
تُعاد نطاقات الأحرف على شكل CharSpan من نوع NamedTuple مع:
- start: فهرس أول حرف في السلسلة الأصلية
- end: فهرس الحرف الذي يلي الحرف الأخير في السلسلة الأصلية
يمكن استدعاؤها على النحو التالي:
self.word_to_chars(word_index)إذا كان حجم الدفعة 1self.word_to_chars(batch_index, word_index)إذا كان حجم الدفعة أكبر من 1 أو يساويه
word_to_tokens
< source >( batch_or_word_index: intword_index: int | None = Nonesequence_index: int = 0 ) → (TokenSpan, optional)
المعاملات
- batch_or_word_index (
int) — مؤشر التسلسل في الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا هو مؤشر الكلمة داخل التسلسل. - word_index (
int، اختياري) — إذا تم تقديم فهرس الدفعة في batch_or_word_index، فقد يكون هذا هو فهرس الكلمة في التسلسل. - sequence_index (
int, اختياري، القيمة الافتراضية 0) — إذا كان زوج من التسلسلات مشفّرًا في الدفعة، يمكن استخدام هذا لتحديد التسلسل (0 أو 1) الذي ينتمي إليه فهرس الكلمة المُقدَّم ضمن الزوج.
يعيد
(TokenSpan، اختياري)
مدى الرموز في التسلسل المُرمَّز. تُرجع
None إذا لم تقابل أي رموز ذلك الكلمة. وقد يحدث ذلك بشكل خاص عندما يكون الرمز رمزاً خاصاً
يُستخدم لتنسيق عملية الترميز. على سبيل المثال، عند إضافة رمز فئة في بداية الترميز تماماً.
احصل على نطاق الرموز المشفّرة المقابِل لكلمة في تسلسل ضمن الدفعة.
تُعاد نطاقات الرموز على شكل TokenSpan مع:
- start — فهرس الرمز الأول.
- end — فهرس الرمز الذي يلي آخر رمز.
يمكن استدعاؤها على النحو التالي:
self.word_to_tokens(word_index, sequence_index: int = 0)إذا كان حجم الدفعة 1self.word_to_tokens(batch_index, word_index, sequence_index: int = 0)إذا كان حجم الدفعة أكبر من 1 أو يساويه
يُعدّ هذا الأسلوب مناسباً بشكل خاص عندما تُقدَّم تسلسلات الإدخال كتسلسلات مُجزّأة مسبقاً (أي أن الكلمات يحددها المستخدم). في هذه الحالة، يتيح هذا الأسلوب ربط الرموز المُشفَّرة بالكلمات المُجزّأة المُقدَّمة بسهولة.