# مُجزِّئ

يتولى مُجزِّئ الرموز (tokenizer) مسؤولية تجهيز المدخلات للنموذج. يحتوي المكتبة على مُجزِّئات رموز لجميع النماذج. معظم مُجزِّئات الرموز متاحة بنوعين: تطبيق كامل بلغة بايثون، وتطبيق "سريع" (Fast) يعتمد على مكتبة Rust [🤗 Tokenizers](https://github.com/huggingface/tokenizers). تتيح التطبيقات "السريعة":

1. تسريع كبير، لا سيما عند تنفيذ الترميز الدفري
2. طرق إضافية للربط بين النص الأصلي (الأحرف والكلمات) ومساحة الرموز (مثل الحصول على فهرس الرمز الذي يتكون منه حرف معين، أو نطاق الأحرف المقابلة لرمز معين).

تُنفّذ الفئات الأساسية [PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend) و[PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend) الطرق المشتركة لتشفير مدخلات النص في مدخلات النموذج (انظر أدناه) ولإنشاء/حفظ مُجزّئات Python و"Fast" سواءً من ملف أو مجلد محلي أو من مُجزّئ مُدرَّب مسبقًا توفره المكتبة (يتم تنزيله من مستودع AWS S3 الخاص بـ HuggingFace). وتعتمد كلاهما على [PreTrainedTokenizerBase](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase) التي تحتوي على الطرق المشتركة.

تُنفّذ [PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend) و [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend) بالتالي الطرق الرئيسية لاستخدام جميع المرمّزات:

- Tokenizing (تقسيم السلاسل إلى رموز دون الكلمة)، وتحويل سلاسل الرموز إلى معرّفات والعكس، والتشفير/فك التشفير (أي، ترميز النص وتحويله إلى أرقام).
- إضافة رموز جديدة إلى المفردات بطريقة مستقلة عن البنية الأساسية (BPE، SentencePiece...).
- إدارة الرموز الخاصة (مثل رمز القناع، ورمز بداية الجملة، وغيرها): إضافتها، وتعيينها إلى سمات في مُجزّئ الرموز لتسهيل الوصول إليها، والتأكد من عدم تقسيمها أثناء عملية تجزئة الرموز.

يحتوي [BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding) على مخرجات طرق الترميز الخاصة بـ [PreTrainedTokenizerBase](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase) (أي `__call__` و`encode_plus` و`batch_encode_plus`) وهو مشتق من قاموس بايثون. عندما يكون المرمِّز مرمِّز بايثون خالص، يتصرف هذا الصنف تمامًا مثل قاموس بايثون قياسي ويحتوي على مدخلات النموذج المختلفة التي تحسبها هذه الطرق (`input_ids`، `attention_mask`...). أما عندما يكون المرمِّز مرمِّز "سريع" (أي مدعومًا بمكتبة [tokenizers](https://github.com/huggingface/tokenizers) من HuggingFace)، فإن هذا الصنف يوفر بالإضافة إلى ذلك عدة طرق متقدمة للمحاذاة يمكن استخدامها للربط بين النص الأصلي (الأحرف والكلمات) ومساحة الرموز (مثلًا، الحصول على فهرس الرمز الذي يحتوي على حرف معين، أو نطاق الأحرف المقابل لرمز معين).

## مُجزِّئ متعدد الوسائط

علاوة على ذلك، يمكن أن يكون كل مُجزِّئ (tokenizer) مُجزِّئًا "متعدد الوسائط"، مما يعني أن المُجزِّئ سيحتفظ بجميع الرموز الخاصة ذات الصلة كجزء من سمات المُجزِّئ لتسهيل الوصول إليها. على سبيل المثال، إذا تم تحميل المُجزِّئ من نموذج لغوي بصري مثل LLaVA، فستتمكن من الوصول إلى `tokenizer.image_token_id` للحصول على الرمز الخاص بالصورة المستخدم كعنصر نائب.

لتفعيل رموز خاصة إضافية لأي نوع من مُجزّئات النص، يجب عليك إضافة الأسطر التالية وحفظ مُجزّئ النص. لا يتعين أن تكون الرموز الخاصة الإضافية مرتبطة بنوع البيانات، بل يمكن أن تكون أي شيء يحتاج النموذج إلى الوصول إليه بشكل متكرر. في الكود أدناه، سيحصل مُجزّئ النص في `output_dir` على وصول مباشر إلى ثلاثة رموز خاصة إضافية.

```python
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]]

#### transformers.PythonBackend[[transformers.PythonBackend]]

```python
transformers.PythonBackend(**kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L400)

**المعاملات:**

model_max_length (`int`، *اختياري*) : الحد الأقصى للطول (بعدد الرموز) للمدخلات إلى نموذج التحويلة. عند تحميل مُجزّئ الرموز باستخدام [from_pretrained()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.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](/docs/transformers/main/ar/internal/tokenization_utils#transformers.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__[[transformers.PythonBackend.__call__]]

```python
__call__(text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, is_split_into_words: bool = False, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_offsets_mapping: bool = False, return_length: bool = False, verbose: bool = True, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2449)

**المعاملات:**

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](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية هي `False`) : يُفعّل التحكم في الحشو. يقبل القيم التالية:  - `True` أو `'longest'`: حشو حتى أطول تسلسل في الدفعة (أو بدون حشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: حشو حتى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'` (الافتراضي): بدون حشو (أي، يمكنه إخراج دفعة تحتوي على تسلسلات بطول مختلف).

truncation (`bool` أو `str` أو [TruncationStrategy](/docs/transformers/main/ar/internal/tokenization_utils#transformers.tokenization_utils_base.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`. وهذا مفيد بشكل خاص لتمكين استخدام نوى التENSOR على أجهزة NVIDIA التي تتمتع بقابلية حسابية `>= 7.5` (Volta).

padding_side (`str`، *اختياري*) : الجانب الذي يجب تطبيق الحشو عليه في النموذج. يجب اختياره من بين ['right', 'left']. القيمة الافتراضية تُستخرج من سمة الفئة التي تحمل الاسم نفسه.

return_tensors (`str` أو [TensorType](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم تعيينه، فسيُرجع تينسورات بدلاً من قائمة من الأعداد الصحيحة بلغة بايثون. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من Numpy.

return_token_type_ids (`bool`، *اختياري*) : ما إذا كان يجب إرجاع معرّفات أنواع الرموز. إذا تُركت القيمة الافتراضية، فسيتم إرجاع معرّفات أنواع الرموز وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما تحددها خاصية `return_outputs`.  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

return_attention_mask (`bool`، *اختياري*) : ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقاً للقيمة الافتراضية الخاصة بمجزّئ الرموز المعني، كما هو معرّف بواسطة الخاصية `return_outputs`.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

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)` لكل رمز. هذه الخاصية متاحة فقط في مُرمّزيات fast التي ترث من [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)، وإذا كنت تستخدم مُرمّزي Python، فسيُطلق هذا الدالة `NotImplementedError`.

return_length (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب إرجاع أطوال المدخلات المُرمّزة أم لا.

verbose (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب طباعة مزيد من المعلومات والتنبيهات أم لا.

- ****kwargs** : تُمرَّر إلى طريقة `self.tokenize()`

**يعيد:** [BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding)

[BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding) يحتوي على الحقول التالية:

- **input_ids** -- قائمة معرّفات الرموز المراد تغذيتها إلى النموذج.

  [ما هي معرّفات الإدخال؟](../glossary#input-ids)

- **token_type_ids** -- قائمة معرّفات أنواع الرموز التي تُمرَّر إلى النموذج (عندما يكون `return_token_type_ids=True` أو إذا كان *"token_type_ids"* ضمن `self.model_input_names`).

  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

- **attention_mask** -- قائمة بالفهارس تحدد الرموز التي يجب على النموذج الانتباه إليها (عندما يكون `return_attention_mask=True` أو إذا كان *"attention_mask"* ضمن `self.model_input_names`).

  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

- **overflowing_tokens** -- قائمة تسلسلات الرموز الزائدة (عند تحديد `max_length` و`return_overflowing_tokens=True`).
- **num_truncated_tokens** -- عدد الرموز التي تم اقتطاعها (عند تحديد `max_length` و`return_overflowing_tokens=True`).
- **special_tokens_mask** -- قائمة من الأصفار والواحدات، حيث تشير 1 إلى الرموز الخاصة المضافة وتُشير 0 إلى رموز التسلسل العادية (عندما تكون `add_special_tokens=True` و`return_special_tokens_mask=True`).
- **length** -- طول المدخلات (عندما يكون `return_length=True`)

الطريقة الرئيسية لتجزئة (tokenization) وتجهيز تسلسل واحد أو عدة تسلسلات، أو زوج واحد أو عدة أزواج من التسلسلات، للنموذج.

#### add_tokens[[transformers.PythonBackend.add_tokens]]

```python
add_tokens(new_tokens: str | AddedToken | Sequence[str | AddedToken], special_tokens: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L1218)

**المعاملات:**

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"` بحيث يُضاف البادئة إلى بداية الإدخال فقط:

```python
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
)
```

أمثلة:

```python
# 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[[transformers.PythonBackend.add_special_tokens]]

```python
add_special_tokens(special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]], replace_extra_special_tokens = True)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L1113)

**المعاملات:**

special_tokens_dict (قاموس من *str* إلى *str*، أو `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()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.resize_token_embeddings).

يضمن استخدام `add_special_tokens` إمكانية استخدام الرموز الخاصة بعدة طرق:

- يمكن تخطي الرموز الخاصة عند فك الترميز باستخدام `skip_special_tokens = True`.
- تُعالَج الرموز الخاصة بعناية من قِبل مُجزّئ النص (فلا يتم تقسيمها أبداً)، على غرار `AddedTokens`.
- يمكنك بسهولة الإشارة إلى الرموز الخاصة باستخدام سمات فئة المُجزِّئ مثل `tokenizer.cls_token`. وهذا يسهّل تطوير سكربتات تدريب وضبط دقيق لا تعتمد على نموذج محدد.

عندما يكون ذلك ممكناً، تكون الرموز الخاصة مسجّلة مسبقاً للنماذج المُدرَّبة مسبقاً المُقدَّمة (فعلى سبيل المثال، [BertTokenizer](/docs/transformers/main/ar/model_doc/lxmert#transformers.BertTokenizer) `cls_token` مسجّل مسبقاً ليكون `'[CLS]'`، وكذلك رمز XLM مسجّل ليكون `'</s>'`).

أمثلة:

```python
# 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[[transformers.PythonBackend.apply_chat_template]]

```python
apply_chat_template(conversation: list[dict[str, str]] | list[list[dict[str, str]]], tools: list[dict | Callable] | None = None, documents: list[dict[str, str]] | None = None, chat_template: str | None = None, add_generation_prompt: bool = False, continue_final_message: bool | str = False, tokenize: bool = True, sanitize_control_tokens: bool = False, padding: bool | str | PaddingStrategy = False, truncation: bool = False, max_length: int | None = None, return_tensors: str | TensorType | None = None, return_dict: bool = True, return_assistant_tokens_mask: bool = False, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L3021)

**المعاملات:**

conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) : قائمة من القواميس التي تحتوي على مفتاحي "role" و"content"، وتمثل سجل المحادثة حتى الآن.

tools (`list[Union[Dict, Callable]]`، *اختياري*) : قائمة بالأدوات (دوال قابلة للاستدعاء) التي ستكون متاحة للنموذج. إذا لم يدعم القالب استدعاء الدوال، فلن يكون لهذا الحجة أي تأثير. يجب تمرير كل أداة كمخطط JSON Schema، مع تحديد اسم الأداة ووصفها وأنواع الحجج الخاصة بها. راجع [دليل استخدام الأدوات](https://huggingface.co/docs/transformers/en/chat_extras#passing-tools) لمزيد من المعلومات.

documents (`list[dict[str, str]]`، *اختياري*) : قائمة من القواميس (dicts) تمثل مستندات ستكون متاحة للنموذج إذا كان يقوم بتوليد معزز بالاسترجاع (RAG). إذا لم يدعم القالب (template) تقنية RAG، فلن يكون لهذا الحجة أي تأثير. ننصح بأن يكون كل مستند قاموسًا يحتوي على مفتاحي "title" و "text".

chat_template (`str`، *اختياري*) : قالب Jinja يُستخدم لهذا التحويل. عادةً لا يكون من الضروري تمرير أي شيء إلى هذا الحُجّة، إذ يُستخدم قالب النموذج افتراضيًا.

add_generation_prompt (bool, *اختياري*) : إذا تم تعيين هذا، فسيتم إرفاق موجه يحتوي على الرمز (أو الرموز) التي تشير إلى بداية رسالة المساعد بالمخرجات المنسّقة. وهذا مفيد عندما تريد توليد رد من النموذج. لاحظ أن هذا الحُجج سيُمرَّر إلى قالب المحادثة، وبالتالي يجب أن يدعمه القالب حتى يكون لهذا الحُجج أي تأثير.

continue_final_message (bool أو 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](/docs/transformers/main/ar/internal/file_utils#transformers.utils.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](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم ضبطه، فسيُرجع تينسورات من إطار عمل محدد. لا يؤثر إذا كان tokenize هو `False`. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من NumPy.

return_dict (`bool`، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع قاموس بمخرجات مُسماة. لا يؤثر إذا كان tokenize هو `False`.

tokenizer_kwargs (`dict[str : Any]`، *اختياري*): معاملات إضافية (kwargs) تُمرَّر إلى مُجزِّئ الرموز (tokenizer).

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[[transformers.PythonBackend.batch_decode]]

```python
batch_decode(sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensor, skip_special_tokens: bool = False, clean_up_tokenization_spaces: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2933)

**المعاملات:**

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`.

#### فك الترميز[[transformers.PythonBackend.decode]]

```python
decode(token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensor, skip_special_tokens: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2885)

**المعاملات:**

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[[transformers.PythonBackend.encode]]

```python
encode(text: TextInput | PreTokenizedInput | EncodedInput, text_pair: TextInput | PreTokenizedInput | EncodedInput | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, padding_side: str | None = None, return_tensors: str | TensorType | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2263)

**المعاملات:**

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](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية هي `False`) : يُفعّل التحكم في الحشو. يقبل القيم التالية:  - `True` أو `'longest'`: حشو حتى أطول تسلسل في الدفعة (أو بدون حشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: حشو حتى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'` (الافتراضي): بدون حشو (أي، يمكنه إخراج دفعة تحتوي على تسلسلات بطول مختلف).

truncation (`bool` أو `str` أو [TruncationStrategy](/docs/transformers/main/ar/internal/tokenization_utils#transformers.tokenization_utils_base.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`. وهذا مفيد بشكل خاص لتمكين استخدام نوى التENSOR على أجهزة NVIDIA التي تتمتع بقابلية حسابية `>= 7.5` (Volta).

padding_side (`str`، *اختياري*) : الجانب الذي يجب تطبيق الحشو عليه في النموذج. يجب اختياره من بين ['right', 'left']. القيمة الافتراضية تُستخرج من سمة الفئة التي تحمل الاسم نفسه.

return_tensors (`str` أو [TensorType](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم تعيينه، فسيُرجع تينسورات بدلاً من قائمة من الأعداد الصحيحة بلغة بايثون. القيم المقبولة هي: - `'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[[transformers.PythonBackend.push_to_hub]]

```python
push_to_hub(repo_id: str, commit_message: str | None = None, commit_description: str | None = None, private: bool | None = None, token: bool | str | None = None, revision: str | None = None, create_pr: bool = False, max_shard_size: int | str | None = '50GB', tags: list[str] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/utils/hub.py#L822)

**المعاملات:**

repo_id (`str`) : اسم المستودع الذي تريد دفع مُجزّئك (tokenizer) إليه. يجب أن يحتوي على اسم مؤسستك عند الدفع إلى مؤسسة محددة.

commit_message (`str`، *اختياري*) : الرسالة التي سيتم الالتزام بها أثناء الدفع. ستكون الافتراضية `"Upload tokenizer"`.

commit_description (`str`، *اختياري*) : وصف الالتزام الذي سيتم إنشاؤه

private (`bool`، *اختياري*) : ما إذا كان سيتم جعل المستودع خاصًا. إذا كانت القيمة `None` (الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي الخاص بالمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا مسبقًا.

token (`bool` أو `str`، *اختياري*) : الرمز الذي يُستخدم كترخيص HTTP bearer للملفات البعيدة. إذا كان `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.

أمثلة:

```python
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[[transformers.PythonBackend.build_inputs_with_special_tokens]]

```python
build_inputs_with_special_tokens(token_ids_0: list, token_ids_1: list[int] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L865)

**المعاملات:**

token_ids_0 (`list[int]`) : قائمة بالمعرّفات التي ستُضاف إليها الرموز الخاصة.

token_ids_1 (`list[int]`، *اختياري*) : قائمة اختيارية ثانية من المعرّفات لأزواج التسلسلات.

**يعيد:** `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[[transformers.PythonBackend.create_token_type_ids_from_sequences]]

```python
create_token_type_ids_from_sequences(token_ids_0: list, token_ids_1: list[int] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1298)

**المعاملات:**

token_ids_0 (`list[int]`) : قائمة من المعرّفات.

token_ids_1 (`list[int]`، *اختياري*) : قائمة ثانية اختيارية من المعرّفات لأزواج التسلسلات.

**يعيد:** `list[int]`

معرّفات أنواع الرموز (Token type IDs) وفقًا للنمط المُهيّأ.

أنشئ قناعًا من التسلسلين المُمرَّرين لاستخدامه في مهمة تصنيف أزواج التسلسلات.

تُبنى معرّفات أنواع الرموز ديناميكيًا بواسطة هذه الطريقة بناءً على سمات إعدادات مُجزّئ النص:
- `token_type_ids_pattern`: النمط المستخدم ("all_zeros" أو "bert_style")
- `token_type_ids_include_special_tokens`: ما إذا كان يجب أخذ الرموز الخاصة في الاعتبار عند حساب الطول

أمثلة:
```python
# 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
```

#### get_added_vocab[[transformers.PythonBackend.get_added_vocab]]

```python
get_added_vocab()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L488)

**يعيد:** `dict[str, int]`

الرموز المضافة.

يعيد الرموز المضافة في المفردات على شكل قاموس يربط كل رمز بمؤشره. قد تختلف النتائج عن استدعاء النسخة السريعة، لأننا حالياً نضيف الرموز دائماً حتى لو كانت موجودة مسبقاً في المفردات. وهذا أمر ينبغي تغييره.

#### get_special_tokens_mask[[transformers.PythonBackend.get_special_tokens_mask]]

```python
get_special_tokens_mask(token_ids_0: list, token_ids_1: list | None = None, already_has_special_tokens: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L969)

**المعاملات:**

token_ids_0 (`list[int]`) : قائمة معرّفات (ids) للتركيبة الأولى.

token_ids_1 (`list[int]`، *اختياري*) : قائمة معرّفات (ids) للترتيب الثاني.

already_has_special_tokens (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كانت قائمة الرموز مُنسّقة مسبقًا برموز خاصة للنموذج أم لا.

**يعيد:** قائمة من الأعداد الصحيحة في المدى [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[[transformers.PythonBackend.num_special_tokens_to_add]]

```python
num_special_tokens_to_add(pair: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L602)

**المعاملات:**

pair (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب حساب عدد الرموز المضافة في حالة وجود زوج من التسلسلات أو تسلسل واحد.

**يعيد:** `int`

عدد الرموز الخاصة المضافة إلى التسلسلات.

يعيد عدد الرموز المضافة عند ترميز تسلسل مع الرموز الخاصة.

يقوم هذا بتشفير مدخل وهمي والتحقق من عدد الرموز المضافة، وبالتالي فهو غير فعّال. لا تضع هذا داخل حلقة التدريب الخاصة بك.

#### prepare_for_model[[transformers.PythonBackend.prepare_for_model]]

```python
prepare_for_model(ids: list, pair_ids: list[int] | None = None, add_special_tokens: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = False, max_length: int | None = None, stride: int = 0, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_length: bool = False, verbose: bool = True, prepend_batch_axis: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1121)

**المعاملات:**

ids : معرّفات المدخلات المُرمّزة (Tokenized) للتركيبة الأولى.

pair_ids : معرّفات المدخلات المُرمّزة (Tokenized) للترتيب الثاني (اختياري).

يُعدّ تسلسلًا من معرّفات الإدخال بحيث يمكن استخدامُه من قِبَل النموذج. يضيف الرموز الخاصة، ويقصّ التسلسل، ويملأ الفراغات.

#### prepare_for_tokenization[[transformers.PythonBackend.prepare_for_tokenization]]

```python
prepare_for_tokenization(text: str, is_split_into_words: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L841)

**المعاملات:**

text (`str`) : النص الذي يجب تجهيزه.

is_split_into_words (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كانت المدخلات مُجزّأة مسبقًا (مثل تقسيمها إلى كلمات) أم لا. إذا تم ضبطها على `True`، يفترض المُجزّئ أن المدخلات مُقسّمة مسبقًا إلى كلمات (على سبيل المثال، عن طريق تقسيمها على المسافات) وسيُجزّئها. هذا مفيد في مهام تحديد الكيانات الاسمية أو تصنيف الرموز.

kwargs (`dict[str, Any]`، *اختياري*) : حُجج الكلمات المفتاحية المستخدمة لعملية الترميز.

**يعيد:** `tuple[str, dict[str, Any]]`

النص المُعدّ وkwarg غير المستخدمة.

يُنفّذ أي تحويلات ضرورية قبل الترميز.

يجب أن تستخرج هذه الطريقة الحُجج من `kwargs` وتعيد المتبقي منها أيضاً. نقوم بفحص `kwargs` في نهاية عملية الترميز للتأكد من أن جميع الحُجج قد استُخدمت.

#### save_vocabulary[[transformers.PythonBackend.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1362)

**المعاملات:**

save_directory (`str`) : المجلد الذي سيتم فيه حفظ مفردات اللغة.

filename_prefix (`str`، *اختياري*) : بادئة اختيارية تُضاف إلى أسماء الملفات المحفوظة.

**يعيد:** `tuple[str, ...]`

المسارات إلى الملفات المحفوظة، أو مجموعة فارغة إذا لم يتم حفظ أي ملفات.

التنفيذ الافتراضي لأنماط حفظ المفردات الشائعة. يحفظ self.encoder/self.vocab بصيغة JSON، مع self.bpe_ranks كدمج اختياري. يعيد مجموعة فارغة إذا لم توجد مفردات.

استبدل هذه الطريقة إذا كان مُجزّئ الكلمات الخاص بك يحتاج إلى منطق حفظ مخصص (مثل نماذج SentencePiece، أو ملفات مفردات متعددة، أو صيغ ملفات خاصة).

#### tokenize[[transformers.PythonBackend.tokenize]]

```python
tokenize(text: str, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L625)

**المعاملات:**

text : التسلسل المراد ترميزه.

- ****kwargs** : تُمرَّر إلى طريقة المعالجة المسبقة `prepare_for_tokenization` الخاصة بالنموذج.

**يعيد:**

قائمة الرموز.

يحوّل سلسلة نصية إلى تسلسل من الرموز، باستخدام مُجزّئ الرموز.

#### truncate_sequences[[transformers.PythonBackend.truncate_sequences]]

```python
truncate_sequences(ids: list, pair_ids: list[int] | None = None, num_tokens_to_remove: int = 0, truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first', stride: int = 0)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1231)

يقوم بقصّ التسلسلات وفقاً للاستراتيجية المحددة.

## PreTrainedTokenizerFast[[transformers.TokenizersBackend]]

يعتمد [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend) على مكتبة [tokenizers](https://huggingface.co/docs/tokenizers). يمكن تحميل المرمّزات (tokenizers) المستمدة من مكتبة 🤗 tokenizers بسهولة كبيرة في 🤗 transformers. اطّلع على صفحة [استخدام المرمّزات من 🤗 tokenizers](../fast_tokenizers) لفهم كيفية القيام بذلك.

#### transformers.TokenizersBackend[[transformers.TokenizersBackend]]

```python
transformers.TokenizersBackend(*args, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L86)

**المعاملات:**

model_max_length (`int`، *اختياري*) : الحد الأقصى للطول (بعدد الرموز) للمدخلات إلى نموذج التحويلة. عند تحميل مُجزّئ الرموز باستخدام [from_pretrained()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.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](../fast_tokenizers) لمزيد من المعلومات.

tokenizer_file (`str`) : مسار إلى ملف JSON محلي يمثل كائن `tokenizers.Tokenizer` سبق ترميزه من 🤗 tokenizers.

الفئة الأساسية لجميع المرمّزات السريعة (تغلّف مكتبة HuggingFace tokenizers).

يرث من [PreTrainedTokenizerBase](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase).

يتولى معالجة جميع الطرق المشتركة الخاصة بالتجزئة (Tokenization) والرموز الخاصة، فضلاً عن الطرق المتعلقة بتنزيل/تخزين/تحميل المجزئات (Tokenizers) المُسبقة التدريب، بالإضافة إلى إضافة رموز إلى المفردات.

تحتوي هذه الفئة أيضًا على الرموز المضافة بطريقة موحّدة فوق جميع مُجزّئات الرموز، حتى لا نضطر إلى التعامل مع طرق توسيع المفردات المحددة للبنى القاموسية الأساسية المختلفة (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__[[transformers.TokenizersBackend.__call__]]

```python
__call__(text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, is_split_into_words: bool = False, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_offsets_mapping: bool = False, return_length: bool = False, verbose: bool = True, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2449)

**المعاملات:**

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](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية هي `False`) : يُفعّل التحكم في الحشو. يقبل القيم التالية:  - `True` أو `'longest'`: حشو حتى أطول تسلسل في الدفعة (أو بدون حشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: حشو حتى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'` (الافتراضي): بدون حشو (أي، يمكنه إخراج دفعة تحتوي على تسلسلات بطول مختلف).

truncation (`bool` أو `str` أو [TruncationStrategy](/docs/transformers/main/ar/internal/tokenization_utils#transformers.tokenization_utils_base.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`. وهذا مفيد بشكل خاص لتمكين استخدام نوى التENSOR على أجهزة NVIDIA التي تتمتع بقابلية حسابية `>= 7.5` (Volta).

padding_side (`str`، *اختياري*) : الجانب الذي يجب تطبيق الحشو عليه في النموذج. يجب اختياره من بين ['right', 'left']. القيمة الافتراضية تُستخرج من سمة الفئة التي تحمل الاسم نفسه.

return_tensors (`str` أو [TensorType](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم تعيينه، فسيُرجع تينسورات بدلاً من قائمة من الأعداد الصحيحة بلغة بايثون. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من Numpy.

return_token_type_ids (`bool`، *اختياري*) : ما إذا كان يجب إرجاع معرّفات أنواع الرموز. إذا تُركت القيمة الافتراضية، فسيتم إرجاع معرّفات أنواع الرموز وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما تحددها خاصية `return_outputs`.  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

return_attention_mask (`bool`، *اختياري*) : ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقاً للقيمة الافتراضية الخاصة بمجزّئ الرموز المعني، كما هو معرّف بواسطة الخاصية `return_outputs`.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

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)` لكل رمز. هذه الخاصية متاحة فقط في مُرمّزيات fast التي ترث من [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)، وإذا كنت تستخدم مُرمّزي Python، فسيُطلق هذا الدالة `NotImplementedError`.

return_length (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب إرجاع أطوال المدخلات المُرمّزة أم لا.

verbose (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب طباعة مزيد من المعلومات والتنبيهات أم لا.

- ****kwargs** : تُمرَّر إلى طريقة `self.tokenize()`

**يعيد:** [BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding)

[BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding) يحتوي على الحقول التالية:

- **input_ids** -- قائمة معرّفات الرموز المراد تغذيتها إلى النموذج.

  [ما هي معرّفات الإدخال؟](../glossary#input-ids)

- **token_type_ids** -- قائمة معرّفات أنواع الرموز التي تُمرَّر إلى النموذج (عندما يكون `return_token_type_ids=True` أو إذا كان *"token_type_ids"* ضمن `self.model_input_names`).

  [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

- **attention_mask** -- قائمة بالفهارس تحدد الرموز التي يجب على النموذج الانتباه إليها (عندما يكون `return_attention_mask=True` أو إذا كان *"attention_mask"* ضمن `self.model_input_names`).

  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

- **overflowing_tokens** -- قائمة تسلسلات الرموز الزائدة (عند تحديد `max_length` و`return_overflowing_tokens=True`).
- **num_truncated_tokens** -- عدد الرموز التي تم اقتطاعها (عند تحديد `max_length` و`return_overflowing_tokens=True`).
- **special_tokens_mask** -- قائمة من الأصفار والواحدات، حيث تشير 1 إلى الرموز الخاصة المضافة وتُشير 0 إلى رموز التسلسل العادية (عندما تكون `add_special_tokens=True` و`return_special_tokens_mask=True`).
- **length** -- طول المدخلات (عندما يكون `return_length=True`)

الطريقة الرئيسية لتجزئة (tokenization) وتجهيز تسلسل واحد أو عدة تسلسلات، أو زوج واحد أو عدة أزواج من التسلسلات، للنموذج.

#### add_tokens[[transformers.TokenizersBackend.add_tokens]]

```python
add_tokens(new_tokens: str | AddedToken | Sequence[str | AddedToken], special_tokens: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L1218)

**المعاملات:**

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"` بحيث يُضاف البادئة إلى بداية الإدخال فقط:

```python
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
)
```

أمثلة:

```python
# 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[[transformers.TokenizersBackend.add_special_tokens]]

```python
add_special_tokens(special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]], replace_extra_special_tokens = True)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L1113)

**المعاملات:**

special_tokens_dict (قاموس من *str* إلى *str*، أو `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()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.resize_token_embeddings).

يضمن استخدام `add_special_tokens` إمكانية استخدام الرموز الخاصة بعدة طرق:

- يمكن تخطي الرموز الخاصة عند فك الترميز باستخدام `skip_special_tokens = True`.
- تُعالَج الرموز الخاصة بعناية من قِبل مُجزّئ النص (فلا يتم تقسيمها أبداً)، على غرار `AddedTokens`.
- يمكنك بسهولة الإشارة إلى الرموز الخاصة باستخدام سمات فئة المُجزِّئ مثل `tokenizer.cls_token`. وهذا يسهّل تطوير سكربتات تدريب وضبط دقيق لا تعتمد على نموذج محدد.

عندما يكون ذلك ممكناً، تكون الرموز الخاصة مسجّلة مسبقاً للنماذج المُدرَّبة مسبقاً المُقدَّمة (فعلى سبيل المثال، [BertTokenizer](/docs/transformers/main/ar/model_doc/lxmert#transformers.BertTokenizer) `cls_token` مسجّل مسبقاً ليكون `'[CLS]'`، وكذلك رمز XLM مسجّل ليكون `'</s>'`).

أمثلة:

```python
# 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[[transformers.TokenizersBackend.apply_chat_template]]

```python
apply_chat_template(conversation: list[dict[str, str]] | list[list[dict[str, str]]], tools: list[dict | Callable] | None = None, documents: list[dict[str, str]] | None = None, chat_template: str | None = None, add_generation_prompt: bool = False, continue_final_message: bool | str = False, tokenize: bool = True, sanitize_control_tokens: bool = False, padding: bool | str | PaddingStrategy = False, truncation: bool = False, max_length: int | None = None, return_tensors: str | TensorType | None = None, return_dict: bool = True, return_assistant_tokens_mask: bool = False, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L3021)

**المعاملات:**

conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) : قائمة من القواميس التي تحتوي على مفتاحي "role" و"content"، وتمثل سجل المحادثة حتى الآن.

tools (`list[Union[Dict, Callable]]`، *اختياري*) : قائمة بالأدوات (دوال قابلة للاستدعاء) التي ستكون متاحة للنموذج. إذا لم يدعم القالب استدعاء الدوال، فلن يكون لهذا الحجة أي تأثير. يجب تمرير كل أداة كمخطط JSON Schema، مع تحديد اسم الأداة ووصفها وأنواع الحجج الخاصة بها. راجع [دليل استخدام الأدوات](https://huggingface.co/docs/transformers/en/chat_extras#passing-tools) لمزيد من المعلومات.

documents (`list[dict[str, str]]`، *اختياري*) : قائمة من القواميس (dicts) تمثل مستندات ستكون متاحة للنموذج إذا كان يقوم بتوليد معزز بالاسترجاع (RAG). إذا لم يدعم القالب (template) تقنية RAG، فلن يكون لهذا الحجة أي تأثير. ننصح بأن يكون كل مستند قاموسًا يحتوي على مفتاحي "title" و "text".

chat_template (`str`، *اختياري*) : قالب Jinja يُستخدم لهذا التحويل. عادةً لا يكون من الضروري تمرير أي شيء إلى هذا الحُجّة، إذ يُستخدم قالب النموذج افتراضيًا.

add_generation_prompt (bool, *اختياري*) : إذا تم تعيين هذا، فسيتم إرفاق موجه يحتوي على الرمز (أو الرموز) التي تشير إلى بداية رسالة المساعد بالمخرجات المنسّقة. وهذا مفيد عندما تريد توليد رد من النموذج. لاحظ أن هذا الحُجج سيُمرَّر إلى قالب المحادثة، وبالتالي يجب أن يدعمه القالب حتى يكون لهذا الحُجج أي تأثير.

continue_final_message (bool أو 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](/docs/transformers/main/ar/internal/file_utils#transformers.utils.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](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم ضبطه، فسيُرجع تينسورات من إطار عمل محدد. لا يؤثر إذا كان tokenize هو `False`. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من NumPy.

return_dict (`bool`، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع قاموس بمخرجات مُسماة. لا يؤثر إذا كان tokenize هو `False`.

tokenizer_kwargs (`dict[str : Any]`، *اختياري*): معاملات إضافية (kwargs) تُمرَّر إلى مُجزِّئ الرموز (tokenizer).

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[[transformers.TokenizersBackend.batch_decode]]

```python
batch_decode(sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensor, skip_special_tokens: bool = False, clean_up_tokenization_spaces: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2933)

**المعاملات:**

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`.

#### فك الترميز[[transformers.TokenizersBackend.decode]]

```python
decode(token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensor, skip_special_tokens: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2885)

**المعاملات:**

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[[transformers.TokenizersBackend.encode]]

```python
encode(text: TextInput | PreTokenizedInput | EncodedInput, text_pair: TextInput | PreTokenizedInput | EncodedInput | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, padding_side: str | None = None, return_tensors: str | TensorType | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2263)

**المعاملات:**

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](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية هي `False`) : يُفعّل التحكم في الحشو. يقبل القيم التالية:  - `True` أو `'longest'`: حشو حتى أطول تسلسل في الدفعة (أو بدون حشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: حشو حتى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'` (الافتراضي): بدون حشو (أي، يمكنه إخراج دفعة تحتوي على تسلسلات بطول مختلف).

truncation (`bool` أو `str` أو [TruncationStrategy](/docs/transformers/main/ar/internal/tokenization_utils#transformers.tokenization_utils_base.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`. وهذا مفيد بشكل خاص لتمكين استخدام نوى التENSOR على أجهزة NVIDIA التي تتمتع بقابلية حسابية `>= 7.5` (Volta).

padding_side (`str`، *اختياري*) : الجانب الذي يجب تطبيق الحشو عليه في النموذج. يجب اختياره من بين ['right', 'left']. القيمة الافتراضية تُستخرج من سمة الفئة التي تحمل الاسم نفسه.

return_tensors (`str` أو [TensorType](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم تعيينه، فسيُرجع تينسورات بدلاً من قائمة من الأعداد الصحيحة بلغة بايثون. القيم المقبولة هي: - `'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[[transformers.TokenizersBackend.push_to_hub]]

```python
push_to_hub(repo_id: str, commit_message: str | None = None, commit_description: str | None = None, private: bool | None = None, token: bool | str | None = None, revision: str | None = None, create_pr: bool = False, max_shard_size: int | str | None = '50GB', tags: list[str] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/utils/hub.py#L822)

**المعاملات:**

repo_id (`str`) : اسم المستودع الذي تريد دفع مُجزّئك (tokenizer) إليه. يجب أن يحتوي على اسم مؤسستك عند الدفع إلى مؤسسة محددة.

commit_message (`str`، *اختياري*) : الرسالة التي سيتم الالتزام بها أثناء الدفع. ستكون الافتراضية `"Upload tokenizer"`.

commit_description (`str`، *اختياري*) : وصف الالتزام الذي سيتم إنشاؤه

private (`bool`، *اختياري*) : ما إذا كان سيتم جعل المستودع خاصًا. إذا كانت القيمة `None` (الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي الخاص بالمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا مسبقًا.

token (`bool` أو `str`، *اختياري*) : الرمز الذي يُستخدم كترخيص HTTP bearer للملفات البعيدة. إذا كان `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.

أمثلة:

```python
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")
```

#### convert_to_native_format[[transformers.TokenizersBackend.convert_to_native_format]]

```python
convert_to_native_format(trust_remote_code = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L103)

أنشئ واجهة خلفية `tokenizers.Tokenizer` من ملفات التسلسل المتاحة (tokenizer.json، نماذج sentencepiece، tekken.json، vocab/merges).

#### get_added_vocab[[transformers.TokenizersBackend.get_added_vocab]]

```python
get_added_vocab()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L740)

**يعيد:** `dict[str, int]`

الرموز المضافة.

يعيد الرموز المضافة في المفردات على شكل قاموس يربط كل رمز بمؤشره.

#### num_special_tokens_to_add[[transformers.TokenizersBackend.num_special_tokens_to_add]]

```python
num_special_tokens_to_add(pair: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L837)

**المعاملات:**

pair (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب حساب عدد الرموز المضافة في حالة وجود زوج من التسلسلات أو تسلسل واحد.

**يعيد:** `int`

عدد الرموز الخاصة المضافة إلى التسلسلات.

يعيد عدد الرموز المضافة عند ترميز تسلسل مع الرموز الخاصة.

يقوم هذا بتشفير مدخل وهمي والتحقق من عدد الرموز المضافة، وبالتالي فهو غير فعّال. لا تضع هذا داخل حلقة التدريب الخاصة بك.

#### save_pretrained[[transformers.TokenizersBackend.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike, legacy_format: bool | None = None, filename_prefix: str | None = None, push_to_hub: bool = False, save_format: str | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L559)

**المعاملات:**

save_format (`str`، *اختياري*) : `"mistral"` للحفظ بصيغة `tekken.json` الأصلية من خلال نسخ الملف الأصلي (يتطلب توفر ملف مفردات tekken الأصلي). يتم تطبيع الاسم إلى `tekken.json` عند الحفظ، ويجب أن يتطابق المرمّز المُفعّل معه تمامًا. `"hf"` أو `None` لتعتمد الصيغة الافتراضية الخاصة بـ HuggingFace.

kwargs (`dict[str, Any]`، *اختياري*) : حُجج إضافية تُمرَّر إلى طريقة [push_to_hub()](/docs/transformers/main/ar/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub).

**يعيد:** مجموعة من `str`

الملفات المحفوظة.

احفظ حالة المرمّز الكاملة.

يمدّد [save_pretrained()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.save_pretrained) بدعم `save_format`، للمرمّزات المحوّلة من ملف مفردات أصلي (مثل `tekken.json` الخاص بـ Mistral). راجع الطريقة الأساسية بخصوص `legacy_format` و`filename_prefix` و`push_to_hub`.

#### set_truncation_and_padding[[transformers.TokenizersBackend.set_truncation_and_padding]]

```python
set_truncation_and_padding(padding_strategy: PaddingStrategy, truncation_strategy: TruncationStrategy, max_length: int, stride: int, pad_to_multiple_of: int | None, padding_side: str | None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L896)

**المعاملات:**

padding_strategy ([PaddingStrategy](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)) : نوع التعبئة الذي سيُطبَّق على المدخلات

truncation_strategy ([TruncationStrategy](/docs/transformers/main/ar/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)) : نوع الاقتطاع الذي سيُطبَّق على المدخلات

max_length (`int`) : الحد الأقصى لحجم التسلسل.

stride (`int`) : الخطوة المستخدمة عند التعامل مع تجاوز الحدود.

pad_to_multiple_of (`int`, *اختياري*) : إذا تم تعيينه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. وهذا مفيد بشكل خاص لتمكين استخدام نوى التينسور (Tensor Cores) على أجهزة NVIDIA التي تتمتع بقابلية معالجة `>= 7.5` (Volta).

padding_side (`str`، *اختياري*) : الجانب الذي يجب تطبيق الحشو عليه في النموذج. يجب اختياره من بين ['right', 'left']. القيمة الافتراضية تُستخرج من سمة الفئة التي تحمل الاسم نفسه.

حدّد استراتيجيات الاقتطاع والتعبئة لمعالجات الرموز السريعة (المُقدَّمة من مكتبة HuggingFace tokenizers) ثم استعد إعدادات المعالج بعد ذلك.

لا يتوفر لدى مُجزّئ الرموز المُقدَّم أي استراتيجية لحشو/اختصار قبل القسم المُدار. إذا كان مُجزّئ الرموز قد عيّن استراتيجية لحشو/اختصار سابقاً، فسيتم إعادة تعيينها إلى عدم وجود لحشو/اختصار عند الخروج من القسم المُدار.

#### train_new_from_iterator[[transformers.TokenizersBackend.train_new_from_iterator]]

```python
train_new_from_iterator(text_iterator, vocab_size, length = None, new_special_tokens = None, special_tokens_map = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L1192)

**المعاملات:**

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.

**يعيد:** [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)

مُقسِّم جديد من نفس النوع الأصلي، تم تدريبه على `text_iterator`.

يدرّب مُجزِّئًا (tokenizer) على مجموعة بيانات جديدة مع الحفاظ على نفس الإعدادات الافتراضية (من حيث الرموز الخاصة أو خط أنابيب التجزئة) الموجودة حاليًا.

#### update_post_processor[[transformers.TokenizersBackend.update_post_processor]]

```python
update_post_processor()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L627)

يحدّث المعالج اللاحق الأساسي بالرمز `bos_token` والرمز `eos_token` الحاليين.

## PythonBackend[[transformers.PythonBackend]]

#### transformers.PythonBackend[[transformers.PythonBackend]]

```python
transformers.PythonBackend(**kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L400)

**المعاملات:**

model_max_length (`int`، *اختياري*) : الحد الأقصى للطول (بعدد الرموز) للمدخلات إلى نموذج التحويلة. عند تحميل مُجزّئ الرموز باستخدام [from_pretrained()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.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](/docs/transformers/main/ar/internal/tokenization_utils#transformers.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[[transformers.PythonBackend.build_inputs_with_special_tokens]]

```python
build_inputs_with_special_tokens(token_ids_0: list, token_ids_1: list[int] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L865)

**المعاملات:**

token_ids_0 (`list[int]`) : قائمة بالمعرّفات التي ستُضاف إليها الرموز الخاصة.

token_ids_1 (`list[int]`، *اختياري*) : قائمة ثانية اختيارية من المعرّفات لأزواج التسلسلات.

**يعيد:** `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[[transformers.PythonBackend.create_token_type_ids_from_sequences]]

```python
create_token_type_ids_from_sequences(token_ids_0: list, token_ids_1: list[int] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1298)

**المعاملات:**

token_ids_0 (`list[int]`) : قائمة من المعرّفات.

token_ids_1 (`list[int]`، *اختياري*) : قائمة ثانية اختيارية من المعرّفات لأزواج التسلسلات.

**يعيد:** `list[int]`

معرّفات أنواع الرموز (Token type IDs) وفقًا للنمط المُهيّأ.

أنشئ قناعًا من التسلسلين المُمرَّرين لاستخدامه في مهمة تصنيف أزواج التسلسلات.

تُبنى معرّفات أنواع الرموز ديناميكيًا بواسطة هذه الطريقة بناءً على سمات إعدادات مُجزّئ النص:
- `token_type_ids_pattern`: النمط المستخدم ("all_zeros" أو "bert_style")
- `token_type_ids_include_special_tokens`: ما إذا كان يجب أخذ الرموز الخاصة في الاعتبار عند حساب الطول

أمثلة:
```python
# 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
```

#### get_added_vocab[[transformers.PythonBackend.get_added_vocab]]

```python
get_added_vocab()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L488)

**يعيد:** `dict[str, int]`

الرموز المضافة.

يعيد الرموز المضافة في المفردات على شكل قاموس يربط كل رمز بمؤشره. قد تختلف النتائج عن استدعاء النسخة السريعة، لأننا حالياً نضيف الرموز دائماً حتى لو كانت موجودة مسبقاً في المفردات. وهذا أمر ينبغي تغييره.

#### get_special_tokens_mask[[transformers.PythonBackend.get_special_tokens_mask]]

```python
get_special_tokens_mask(token_ids_0: list, token_ids_1: list | None = None, already_has_special_tokens: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L969)

**المعاملات:**

token_ids_0 (`list[int]`) : قائمة معرّفات (ids) للتركيبة الأولى.

token_ids_1 (`list[int]`، *اختياري*) : قائمة معرّفات (ids) للترتيب الثاني.

already_has_special_tokens (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كانت قائمة الرموز مُنسّقة مسبقًا برموز خاصة للنموذج أم لا.

**يعيد:** قائمة من الأعداد الصحيحة في المدى [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[[transformers.PythonBackend.num_special_tokens_to_add]]

```python
num_special_tokens_to_add(pair: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L602)

**المعاملات:**

pair (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب حساب عدد الرموز المضافة في حالة وجود زوج من التسلسلات أو تسلسل واحد.

**يعيد:** `int`

عدد الرموز الخاصة المضافة إلى التسلسلات.

يعيد عدد الرموز المضافة عند ترميز تسلسل مع الرموز الخاصة.

يقوم هذا بتشفير مدخل وهمي والتحقق من عدد الرموز المضافة، وبالتالي فهو غير فعّال. لا تضع هذا داخل حلقة التدريب الخاصة بك.

#### prepare_for_model[[transformers.PythonBackend.prepare_for_model]]

```python
prepare_for_model(ids: list, pair_ids: list[int] | None = None, add_special_tokens: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = False, max_length: int | None = None, stride: int = 0, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_length: bool = False, verbose: bool = True, prepend_batch_axis: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1121)

**المعاملات:**

ids : معرّفات المدخلات المُرمّزة (Tokenized) للتركيبة الأولى.

pair_ids : معرّفات المدخلات المُرمّزة (Tokenized) للترتيب الثاني (اختياري).

يُعدّ تسلسلًا من معرّفات الإدخال بحيث يمكن استخدامُه من قِبَل النموذج. يضيف الرموز الخاصة، ويقصّ التسلسل، ويملأ الفراغات.

#### prepare_for_tokenization[[transformers.PythonBackend.prepare_for_tokenization]]

```python
prepare_for_tokenization(text: str, is_split_into_words: bool = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L841)

**المعاملات:**

text (`str`) : النص الذي يجب تجهيزه.

is_split_into_words (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كانت المدخلات مُجزّأة مسبقًا (مثل تقسيمها إلى كلمات) أم لا. إذا تم ضبطها على `True`، يفترض المُجزّئ أن المدخلات مُقسّمة مسبقًا إلى كلمات (على سبيل المثال، عن طريق تقسيمها على المسافات) وسيُجزّئها. هذا مفيد في مهام تحديد الكيانات الاسمية أو تصنيف الرموز.

kwargs (`dict[str, Any]`، *اختياري*) : حُجج الكلمات المفتاحية المستخدمة لعملية الترميز.

**يعيد:** `tuple[str, dict[str, Any]]`

النص المُعدّ وkwarg غير المستخدمة.

يُنفّذ أي تحويلات ضرورية قبل الترميز.

يجب أن تستخرج هذه الطريقة الحُجج من `kwargs` وتعيد المتبقي منها أيضاً. نقوم بفحص `kwargs` في نهاية عملية الترميز للتأكد من أن جميع الحُجج قد استُخدمت.

#### save_vocabulary[[transformers.PythonBackend.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1362)

**المعاملات:**

save_directory (`str`) : المجلد الذي سيتم فيه حفظ مفردات اللغة.

filename_prefix (`str`، *اختياري*) : بادئة اختيارية تُضاف إلى أسماء الملفات المحفوظة.

**يعيد:** `tuple[str, ...]`

المسارات إلى الملفات المحفوظة، أو مجموعة فارغة إذا لم يتم حفظ أي ملفات.

التنفيذ الافتراضي لأنماط حفظ المفردات الشائعة. يحفظ self.encoder/self.vocab بصيغة JSON، مع self.bpe_ranks كدمج اختياري. يعيد مجموعة فارغة إذا لم توجد مفردات.

استبدل هذه الطريقة إذا كان مُجزّئ الكلمات الخاص بك يحتاج إلى منطق حفظ مخصص (مثل نماذج SentencePiece، أو ملفات مفردات متعددة، أو صيغ ملفات خاصة).

#### tokenize[[transformers.PythonBackend.tokenize]]

```python
tokenize(text: str, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L625)

**المعاملات:**

text : التسلسل المراد ترميزه.

- ****kwargs** : تُمرَّر إلى طريقة المعالجة المسبقة `prepare_for_tokenization` الخاصة بالنموذج.

**يعيد:**

قائمة الرموز.

يحوّل سلسلة نصية إلى تسلسل من الرموز، باستخدام مُجزّئ الرموز.

#### truncate_sequences[[transformers.PythonBackend.truncate_sequences]]

```python
truncate_sequences(ids: list, pair_ids: list[int] | None = None, num_tokens_to_remove: int = 0, truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first', stride: int = 0)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1231)

يقوم بقصّ التسلسلات وفقاً للاستراتيجية المحددة.

## TokenizersBackend[[transformers.TokenizersBackend]]

#### transformers.TokenizersBackend[[transformers.TokenizersBackend]]

```python
transformers.TokenizersBackend(*args, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L86)

**المعاملات:**

model_max_length (`int`، *اختياري*) : الحد الأقصى للطول (بعدد الرموز) للمدخلات إلى نموذج التحويلة. عند تحميل مُجزّئ الرموز باستخدام [from_pretrained()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.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](../fast_tokenizers) لمزيد من المعلومات.

tokenizer_file (`str`) : مسار إلى ملف JSON محلي يمثل كائن `tokenizers.Tokenizer` سبق ترميزه من 🤗 tokenizers.

الفئة الأساسية لجميع المرمّزات السريعة (تغلّف مكتبة HuggingFace tokenizers).

يرث من [PreTrainedTokenizerBase](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase).

يتولى معالجة جميع الطرق المشتركة الخاصة بالتجزئة (Tokenization) والرموز الخاصة، فضلاً عن الطرق المتعلقة بتنزيل/تخزين/تحميل المجزئات (Tokenizers) المُسبقة التدريب، بالإضافة إلى إضافة رموز إلى المفردات.

تحتوي هذه الفئة أيضًا على الرموز المضافة بطريقة موحّدة فوق جميع مُجزّئات الرموز، حتى لا نضطر إلى التعامل مع طرق توسيع المفردات المحددة للبنى القاموسية الأساسية المختلفة (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'`.

#### convert_to_native_format[[transformers.TokenizersBackend.convert_to_native_format]]

```python
convert_to_native_format(trust_remote_code = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L103)

أنشئ واجهة خلفية `tokenizers.Tokenizer` من ملفات التسلسل المتاحة (tokenizer.json، نماذج sentencepiece، tekken.json، vocab/merges).

#### get_added_vocab[[transformers.TokenizersBackend.get_added_vocab]]

```python
get_added_vocab()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L740)

**يعيد:** `dict[str, int]`

الرموز المضافة.

يعيد الرموز المضافة في المفردات على شكل قاموس يربط كل رمز بمؤشره.

#### num_special_tokens_to_add[[transformers.TokenizersBackend.num_special_tokens_to_add]]

```python
num_special_tokens_to_add(pair: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L837)

**المعاملات:**

pair (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب حساب عدد الرموز المضافة في حالة وجود زوج من التسلسلات أو تسلسل واحد.

**يعيد:** `int`

عدد الرموز الخاصة المضافة إلى التسلسلات.

يعيد عدد الرموز المضافة عند ترميز تسلسل مع الرموز الخاصة.

يقوم هذا بتشفير مدخل وهمي والتحقق من عدد الرموز المضافة، وبالتالي فهو غير فعّال. لا تضع هذا داخل حلقة التدريب الخاصة بك.

#### save_pretrained[[transformers.TokenizersBackend.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike, legacy_format: bool | None = None, filename_prefix: str | None = None, push_to_hub: bool = False, save_format: str | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L559)

**المعاملات:**

save_format (`str`، *اختياري*) : `"mistral"` للحفظ بصيغة `tekken.json` الأصلية من خلال نسخ الملف الأصلي (يتطلب توفر ملف مفردات tekken الأصلي). يتم تطبيع الاسم إلى `tekken.json` عند الحفظ، ويجب أن يتطابق المرمّز المُفعّل معه تمامًا. `"hf"` أو `None` لتعتمد الصيغة الافتراضية الخاصة بـ HuggingFace.

kwargs (`dict[str, Any]`، *اختياري*) : حُجج إضافية تُمرَّر إلى طريقة [push_to_hub()](/docs/transformers/main/ar/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub).

**يعيد:** مجموعة من `str`

الملفات المحفوظة.

احفظ حالة المرمّز الكاملة.

يمدّد [save_pretrained()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.save_pretrained) بدعم `save_format`، للمرمّزات المحوّلة من ملف مفردات أصلي (مثل `tekken.json` الخاص بـ Mistral). راجع الطريقة الأساسية بخصوص `legacy_format` و`filename_prefix` و`push_to_hub`.

#### set_truncation_and_padding[[transformers.TokenizersBackend.set_truncation_and_padding]]

```python
set_truncation_and_padding(padding_strategy: PaddingStrategy, truncation_strategy: TruncationStrategy, max_length: int, stride: int, pad_to_multiple_of: int | None, padding_side: str | None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L896)

**المعاملات:**

padding_strategy ([PaddingStrategy](/docs/transformers/main/ar/internal/file_utils#transformers.utils.PaddingStrategy)) : نوع التعبئة الذي سيُطبَّق على المدخلات

truncation_strategy ([TruncationStrategy](/docs/transformers/main/ar/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)) : نوع الاقتطاع الذي سيُطبَّق على المدخلات

max_length (`int`) : الحد الأقصى لحجم التسلسل.

stride (`int`) : الخطوة المستخدمة عند التعامل مع تجاوز الحدود.

pad_to_multiple_of (`int`, *اختياري*) : إذا تم تعيينه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. وهذا مفيد بشكل خاص لتمكين استخدام نوى التينسور (Tensor Cores) على أجهزة NVIDIA التي تتمتع بقابلية معالجة `>= 7.5` (Volta).

padding_side (`str`، *اختياري*) : الجانب الذي يجب تطبيق الحشو عليه في النموذج. يجب اختياره من بين ['right', 'left']. القيمة الافتراضية تُستخرج من سمة الفئة التي تحمل الاسم نفسه.

حدّد استراتيجيات الاقتطاع والتعبئة لمعالجات الرموز السريعة (المُقدَّمة من مكتبة HuggingFace tokenizers) ثم استعد إعدادات المعالج بعد ذلك.

لا يتوفر لدى مُجزّئ الرموز المُقدَّم أي استراتيجية لحشو/اختصار قبل القسم المُدار. إذا كان مُجزّئ الرموز قد عيّن استراتيجية لحشو/اختصار سابقاً، فسيتم إعادة تعيينها إلى عدم وجود لحشو/اختصار عند الخروج من القسم المُدار.

#### train_new_from_iterator[[transformers.TokenizersBackend.train_new_from_iterator]]

```python
train_new_from_iterator(text_iterator, vocab_size, length = None, new_special_tokens = None, special_tokens_map = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L1192)

**المعاملات:**

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.

**يعيد:** [PreTrainedTokenizerFast](/docs/transformers/main/ar/main_classes/tokenizer#transformers.TokenizersBackend)

مُقسِّم جديد من نفس النوع الأصلي، تم تدريبه على `text_iterator`.

يُدرّب مُجزّئًا (tokenizer) على مجموعة بيانات جديدة مع الحفاظ على نفس الإعدادات الافتراضية (من حيث الرموز الخاصة أو خط أنابيب التجزئة) الموجودة حاليًا.

#### update_post_processor[[transformers.TokenizersBackend.update_post_processor]]

```python
update_post_processor()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L627)

يحدّث المعالج اللاحق الأساسي بالرمز `bos_token` والرمز `eos_token` الحاليين.

## SentencePieceBackend[[transformers.SentencePieceBackend]]

#### transformers.SentencePieceBackend[[transformers.SentencePieceBackend]]

```python
transformers.SentencePieceBackend(**kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_sentencepiece.py#L45)

**المعاملات:**

model_max_length (`int`، *اختياري*) : الحد الأقصى للطول (بعدد الرموز) للمدخلات إلى نموذج التحويلة. عند تحميل مُجزّئ الرموز باستخدام [from_pretrained()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.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](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend).

التعامل مع جميع الطرق المشتركة لتجزئة النص والرموز الخاصة، وكذلك الطرق الخاصة بتنزيل/تخزين/تحميل مجزئات النصوص المُسبقة التدريب، بالإضافة إلى إضافة رموز إلى المفردات.

تحتوي هذه الفئة أيضًا على الرموز المضافة بطريقة موحدة فوق جميع مُجزّئات الرموز، حتى لا نضطر إلى التعامل مع طرق توسيع المفردات المحددة للبنى القاموسية الأساسية المختلفة (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'`.

#### convert_tokens_to_string[[transformers.SentencePieceBackend.convert_tokens_to_string]]

```python
convert_tokens_to_string(tokens: list)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_sentencepiece.py#L232)

يحوّل تسلسل الرموز (نص) إلى نص واحد.

#### get_vocab[[transformers.SentencePieceBackend.get_vocab]]

```python
get_vocab()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_sentencepiece.py#L104)

يعيد vocab كقاموس

#### save_vocabulary[[transformers.SentencePieceBackend.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_sentencepiece.py#L237)

**المعاملات:**

save_directory (`str`) : المجلد الذي سيتم فيه حفظ مفردات اللغة.

filename_prefix (`str`، *اختياري*) : بادئة اختيارية تُضاف إلى أسماء الملفات المحفوظة.

**يعيد:** `tuple(str)`

مسارات الملفات المحفوظة.

احفظ مفردات sentencepiece (انسخ الملف الأصلي) إلى مجلد.

## BatchEncoding[[transformers.BatchEncoding]]

#### transformers.BatchEncoding[[transformers.BatchEncoding]]

```python
transformers.BatchEncoding(data: dict[str, Any] | None = None, encoding: EncodingFast | Sequence[EncodingFast] | None = None, tensor_type: None | str | TensorType = None, prepend_batch_axis: bool = False, n_sequences: int | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L201)

**المعاملات:**

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__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__)، ومنهجَي `~tokenization_utils_base.PreTrainedTokenizerBase.encode_plus` و`~tokenization_utils_base.PreTrainedTokenizerBase.batch_encode_plus` (الرموز، أقنعة الانتباه، إلخ).

تشتق هذه الفئة من قاموس بايثون ويمكن استخدامها كقاموس. بالإضافة إلى ذلك، تعرض هذه الفئة طرقًا مساعدة للتحول من مساحة الكلمات/الأحرف إلى مساحة الرموز.

#### char_to_token[[transformers.BatchEncoding.char_to_token]]

```python
char_to_token(batch_or_char_index: int, char_index: int | None = None, sequence_index: int = 0)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L547)

**المعاملات:**

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)` إذا كان حجم الدفعة 1
- `self.char_to_token(batch_index, char_index)` إذا كان حجم الدفعة أكبر من 1 أو يساويه

يُعدّ هذا الأسلوب مناسباً بشكل خاص عندما تُقدَّم تسلسلات الإدخال كتسلسلات مُجزّأة مسبقاً (أي أن الكلمات يحددها المستخدم). في هذه الحالة، يتيح هذا الأسلوب ربط الرموز المُرمّزة بالكلمات المُجزّأة المُقدَّمة بسهولة.

#### char_to_word[[transformers.BatchEncoding.char_to_word]]

```python
char_to_word(batch_or_char_index: int, char_index: int | None = None, sequence_index: int = 0)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L632)

**المعاملات:**

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)` إذا كان حجم الدفعة 1
- `self.char_to_word(batch_index, char_index)` إذا كان حجم الدفعة أكبر من 1

يُعدّ هذا الأسلوب مناسباً بشكل خاص عندما تُقدَّم تسلسلات الإدخال على شكل تسلسلات مُجزّأة مسبقاً (أي أن الكلمات معرّفة من قِبل المستخدم). في هذه الحالة، يتيح هذا الأسلوب ربط الرموز المُرمّزة بالكلمات المُجزّأة المُقدَّمة بسهولة.

#### convert_to_tensors[[transformers.BatchEncoding.convert_to_tensors]]

```python
convert_to_tensors(tensor_type: str | TensorType | None = None, prepend_batch_axis: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L671)

**المعاملات:**

tensor_type (`str` أو [TensorType](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : نوع المصفوفات (tensors) المراد استخدامه. إذا كان `str`، فيجب أن يكون أحد قيم التعداد [TensorType](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType). إذا كان `None`، فلا يتم إجراء أي تعديل.

prepend_batch_axis (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إضافة بُعد الدفعة (batch) أثناء التحويل أم لا.

قم بتحويل المحتوى الداخلي إلى متجهات.

#### sequence_ids[[transformers.BatchEncoding.sequence_ids]]

```python
sequence_ids(batch_index: int = 0)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L341)

**المعاملات:**

batch_index (`int`، *اختياري*، القيمة الافتراضية 0) : الفهرس للوصول إلى العنصر في الدفعة.

**يعيد:** `list[Optional[int]]`

قائمة تُظهر المعرّف التسلسلي (sequence id) المقابل لكل رمز. تُربط الرموز الخاصة التي يضيفها مُجزّئ النص (tokenizer) بقيمة `None`، بينما تُربط الرموز الأخرى بمؤشر (index) التسلسل المقابل لها.

إرجاع قائمة تربط الرموز بمعرف جملها الأصلية:

- `None` للرموز الخاصة المضافة حول التسلسلات أو بينها،
- `0` للرموز المقابلة للكلمات في التسلسل الأول،
- `1` للرموز المقابلة للكلمات في التسلسل الثاني عند ترميز زوج من التسلسلات معًا.

#### إلى[[transformers.BatchEncoding.to]]

```python
to(device: str | torch.device | int, non_blocking: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L765)

**المعاملات:**

device (`str` أو `torch.device` أو `int`) : الجهاز الذي سيتم وضع المصفوفات عليه.

non_blocking (`bool`) : ما إذا كان سيتم تنفيذ النسخ بشكل غير متزامن.

**يعيد:** [BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding)

نفس الكائن بعد التعديل.

أرسل جميع القيم إلى الجهاز عن طريق استدعاء `v.to(device, non_blocking=non_blocking)` (PyTorch فقط).

#### token_to_chars[[transformers.BatchEncoding.token_to_chars]]

```python
token_to_chars(batch_or_token_index: int, token_index: int | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L508)

**المعاملات:**

batch_or_token_index (`int`) : فهرس التسلسل في الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا هو فهرس الرمز داخل التسلسل.

token_index (`int`، *اختياري*) : إذا تم تقديم فهرس الدفعة في *batch_or_token_index*، فقد يكون هذا هو فهرس الرمز أو الرموز في التسلسل.

**يعيد:** [CharSpan](/docs/transformers/main/ar/internal/tokenization_utils#transformers.CharSpan)

مدى الأحرف في السلسلة الأصلية، أو None إذا لم يقابل الرمز (مثل ، ) أي أحرف في السلسلة الأصلية.

احصل على نطاق الأحرف المقابل لرمز مشفّر في تسلسل ضمن الدفعة.

تُعاد نطاقات الأحرف على شكل [CharSpan](/docs/transformers/main/ar/internal/tokenization_utils#transformers.CharSpan) مع:

- **start** -- فهرس أول حرف في السلسلة الأصلية المرتبط بالرمز.
- **end** -- فهرس الحرف الذي يلي الحرف الأخير في السلسلة الأصلية المرتبطة بالرمز.

يمكن استدعاؤها على النحو التالي:

- `self.token_to_chars(token_index)` إذا كان حجم الدفعة 1
- `self.token_to_chars(batch_index, token_index)` إذا كان حجم الدفعة (batch size) أكبر من 1 أو يساويه

#### token_to_sequence[[transformers.BatchEncoding.token_to_sequence]]

```python
token_to_sequence(batch_or_token_index: int, token_index: int | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L378)

**المعاملات:**

batch_or_token_index (`int`) : فهرس التسلسل في الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا هو فهرس الرمز داخل التسلسل.

token_index (`int`، *اختياري*) : إذا تم تقديم فهرس الدفعة في *batch_or_token_index*، فقد يكون هذا هو فهرس الرمز في التسلسل.

**يعيد:** `int`

مؤشر تسلسل الإدخال الذي يحتوي على الرمز (`0` للتسلسل الأول أو `1` للتسلسل الثاني من الزوج).

احصل على فهرس التسلسل الذي يمثله الرمز المُعطى. في حالة الاستخدام العامة، تُعيد هذه الطريقة `0` لتسلسل واحد أو للتسلسل الأول من زوج، و`1` للتسلسل الثاني من زوج

يمكن استدعاؤها على النحو التالي:

- `self.token_to_sequence(token_index)` إذا كان حجم الدفعة 1
- `self.token_to_sequence(batch_index, token_index)` إذا كان حجم الدفعة أكبر من 1

تناسب هذه الطريقة بشكل خاص عندما تُقدَّم تسلسلات الإدخال كتسلسلات مُجزّأة مسبقًا (أي أن الكلمات يحددها المستخدم). في هذه الحالة، تتيح ربط الرموز المُرمَّزة بالكلمات المُجزَّأة المُقدَّمة بسهولة.

#### token_to_word[[transformers.BatchEncoding.token_to_word]]

```python
token_to_word(batch_or_token_index: int, token_index: int | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L417)

**المعاملات:**

batch_or_token_index (`int`) : فهرس التسلسل في الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا هو فهرس الرمز داخل التسلسل.

token_index (`int`، *اختياري*) : إذا تم تقديم فهرس الدفعة في *batch_or_token_index*، فقد يكون هذا هو فهرس الرمز في التسلسل.

**يعيد:** `int`

مؤشر الكلمة في تسلسل الإدخال.

احصل على فهرس الكلمة المقابلة (أي المكوّنة) لرمز مشفّر في تسلسل ضمن الدفعة.

يمكن استدعاؤها على النحو التالي:

- `self.token_to_word(token_index)` إذا كان حجم الدفعة 1
- `self.token_to_word(batch_index, token_index)` إذا كان حجم الدفعة أكبر من 1

يُعدّ هذا الأسلوب مناسباً بشكل خاص عندما تُقدَّم تسلسلات الإدخال على شكل تسلسلات مُجزّأة مسبقاً (أي أن الكلمات معرّفة من قِبل المستخدم). في هذه الحالة، يتيح هذا الأسلوب ربط الرموز المُرمّزة بالكلمات المُجزّأة المُقدَّمة بسهولة.

#### رموز[[transformers.BatchEncoding.tokens]]

```python
tokens(batch_index: int = 0)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L326)

**المعاملات:**

batch_index (`int`، *اختياري*، القيمة الافتراضية 0) : الفهرس للوصول إلى العنصر في الدفعة.

**يعيد:** `list[str]`

قائمة الرموز عند ذلك الفهرس.

إرجاع قائمة الرموز (الأجزاء الفرعية من نصوص الإدخال بعد تقسيم الكلمات/الرموز الفرعية وقبل التحويل إلى فهارس عددية) عند فهرس دفعة معيّن (يعمل فقط مع مخرجات مُرمِّز سريع).

#### word_ids[[transformers.BatchEncoding.word_ids]]

```python
word_ids(batch_index: int = 0)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L362)

**المعاملات:**

batch_index (`int`، *اختياري*، القيمة الافتراضية 0) : الفهرس للوصول إلى العنصر في الدفعة.

**يعيد:** `list[Optional[int]]`

قائمة تُظهر الكلمة المقابلة لكل رمز. تُخضع الرموز الخاصة المضافة بواسطة مُجزّئ النص إلى `None`، بينما تُخضع الرموز الأخرى إلى فهرس الكلمة المقابلة لها (حيث تُخضع عدة رموز إلى نفس فهرس الكلمة إذا كانت أجزاءً منها).

إرجاع قائمة تربط الرموز بالكلمة الفعلية في الجملة الأصلية لمُرمِّز سريع.

#### word_to_chars[[transformers.BatchEncoding.word_to_chars]]

```python
word_to_chars(batch_or_word_index: int, word_index: int | None = None, sequence_index: int = 0)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L587)

**المعاملات:**

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)` إذا كان حجم الدفعة 1
- `self.word_to_chars(batch_index, word_index)` إذا كان حجم الدفعة أكبر من 1 أو يساويه

#### word_to_tokens[[transformers.BatchEncoding.word_to_tokens]]

```python
word_to_tokens(batch_or_word_index: int, word_index: int | None = None, sequence_index: int = 0)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L455)

**المعاملات:**

batch_or_word_index (`int`) : فهرس التسلسل في الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا هو فهرس الكلمة داخل التسلسل.

word_index (`int`، *اختياري*) : إذا تم تقديم فهرس الدفعة في *batch_or_word_index*، فقد يكون هذا هو فهرس الكلمة في التسلسل.

sequence_index (`int`، *اختياري*، القيمة الافتراضية 0) : إذا كان زوج من التسلسلات مشفَّرًا في الدفعة، يمكن استخدام هذا لتحديد التسلسل الذي ينتمي إليه فهرس الكلمة المُقدَّم ضمن الزوج (0 أو 1).

**يعيد:** ([TokenSpan](/docs/transformers/main/ar/internal/tokenization_utils#transformers.TokenSpan)، *اختياري*)

مدى الرموز في التسلسل المُرمَّز. تُرجع `None` إذا لم تقابل أي رموز ذلك الكلمة. وقد يحدث ذلك بشكل خاص عندما يكون الرمز رمزًا خاصًا استُخدم لتنسيق عملية الترميز. على سبيل المثال، عند إضافة رمز فئة في بداية الترميز تمامًا.

احصل على نطاق الرموز المشفّرة المقابِل لكلمة في تسلسل ضمن الدفعة.

تُعاد نطاقات الرموز على شكل [TokenSpan](/docs/transformers/main/ar/internal/tokenization_utils#transformers.TokenSpan) مع:

- **start** -- فهرس الرمز الأول.
- **end** -- فهرس الرمز الذي يلي آخر رمز.

يمكن استدعاؤها على النحو التالي:

- `self.word_to_tokens(word_index, sequence_index: int = 0)` إذا كان حجم الدفعة 1
- `self.word_to_tokens(batch_index, word_index, sequence_index: int = 0)` إذا كان حجم الدفعة أكبر من 1 أو يساويه

يُعدّ هذا الأسلوب مناسباً بشكل خاص عندما تُقدَّم تسلسلات الإدخال على شكل تسلسلات مُجزّأة مسبقاً (أي أن الكلمات معرّفة من قِبل المستخدم). في هذه الحالة، يتيح هذا الأسلوب ربط الرموز المُرمّزة بالكلمات المُجزّأة المُقدَّمة بسهولة.

