# أدوات لمعالجات الرموز

تُدرج هذه الصفحة جميع دوال الأداة المستخدمة في مُرمّزيات الرموز، وتحديداً الفئة [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).

لا تُفيد معظم تلك العناصر إلا إذا كنت تدرس كود مُجزّئات الرموز في المكتبة.

## PreTrainedTokenizerBase[[transformers.PreTrainedTokenizerBase]]

#### transformers.PreTrainedTokenizerBase[[transformers.PreTrainedTokenizerBase]]

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

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

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

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', '>']`.

الفئة الأساسية لجميع واجهات برمجة التطبيقات الخاصة بالمقسّمات.

خصائص الفئة (المُعاد تعريفها في الفئات المشتقة)

- **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.PreTrainedTokenizerBase.__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_special_tokens[[transformers.PreTrainedTokenizerBase.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>"
```

#### add_tokens[[transformers.PreTrainedTokenizerBase.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))
```

#### apply_chat_template[[transformers.PreTrainedTokenizerBase.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.PreTrainedTokenizerBase.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`.

#### clean_up_tokenization[[transformers.PreTrainedTokenizerBase.clean_up_tokenization]]

```python
clean_up_tokenization(text: str)
```

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

تنظيف مسافات الترميز في نص معيّن. تُستخدم هذه الطريقة بشكل رئيسي لدعم الشيفرة البعيدة.

#### convert_ids_to_tokens[[transformers.PreTrainedTokenizerBase.convert_ids_to_tokens]]

```python
convert_ids_to_tokens(ids: int | list[int], skip_special_tokens: bool = False)
```

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

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

ids (`int` أو `list[int]`) : معرّف الرمز (أو معرّفات الرموز) الذي سيتم تحويله إلى رموز.

skip_special_tokens (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا.

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

الرمز (أو الرموز) المُفكّكة.

يحوّل فهرسًا واحدًا أو تسلسلًا من الفهارس في رمز أو تسلسل من الرموز، باستخدام قاموس الرموز والرموز المضافة.

#### convert_tokens_to_ids[[transformers.PreTrainedTokenizerBase.convert_tokens_to_ids]]

```python
convert_tokens_to_ids(tokens: str | list[str])
```

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

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

tokens (`str` أو `list[str]`) : رمز واحد أو عدة رموز لتحويلها إلى معرّف رمز أو عدة معرّفات.

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

معرّف الرمز أو قائمة معرّفات الرموز.

يحوّل سلسلة رموز (أو تسلسلًا من الرموز) إلى معرّف صحيح واحد (أو تسلسلًا من المعرّفات)، باستخدام قاموس الرموز.

#### convert_tokens_to_string[[transformers.PreTrainedTokenizerBase.convert_tokens_to_string]]

```python
convert_tokens_to_string(tokens: list[str])
```

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

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

tokens (`list[str]`) : الرمز الذي سيتم دمجه في نص.

**يعيد:** `str`

الرموز المدمجة.

يحوّل تسلسل الرموز داخل سلسلة واحدة. أبسط طريقة للقيام بذلك هي `" ".join(tokens)`، لكننا غالبًا ما نرغب في إزالة آثار تجزئة تحت الكلمة في الوقت نفسه.

#### فك الترميز[[transformers.PreTrainedTokenizerBase.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.PreTrainedTokenizerBase.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))`.

#### encode_message_with_chat_template[[transformers.PreTrainedTokenizerBase.encode_message_with_chat_template]]

```python
encode_message_with_chat_template(message: dict[str, str], conversation_history: list[dict[str, str]] | None = None, **kwargs)
```

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

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

message (`dict`) : قاموس يحتوي على مفتاحي "role" و"content"، ويمثل الرسالة التي سيتم تحويلها إلى رموز.

conversation_history (`list[dict]`، *اختياري*) : قائمة من القواميس تحتوي على مفاتيح "role" و"content"، وتمثل سجل المحادثة حتى الآن. إذا كنت تقوم بتحويل الرسائل إلى رموز واحدة تلو الأخرى، فيجب عليك تمرير الرسائل السابقة في المحادثة هنا.

- ****kwargs** : معاملات إضافية تُمرَّر إلى طريقة `apply_chat_template`.

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

قائمة من معرّفات الرموز (token ids) تمثل الرسالة المُرمَّزة.

قم بتجزئة رسالة واحدة. هذه الطريقة هي غلاف ميسّر حول `apply_chat_template` يتيح لك تجزئة الرسائل واحدة تلو الأخرى. هذا مفيد لأشياء مثل البث الرمزي (token-by-token streaming). لا يُضَمَن أن تكون هذه الطريقة مثالية. فبعض النماذج قد يستحيل عليها تجزئة الرسائل الفردية بشكل متين. على سبيل المثال، إذا أضاف قالب المحادثة رموزًا بعد كل رسالة، وكان لديه أيضًا بادئة تُضاف إلى المحادثة بأكملها، فسيكون من المستحيل التمييز بين رمز بداية المحادثة (chat-start-token) ورمز بداية الرسالة (message-start-token). في هذه الحالات، ستبذل هذه الطريقة قصارى جهدها لإيجاد التجزئة الصحيحة، لكنها قد لا تكون مثالية. **ملاحظة:** لا تدعم هذه الطريقة `add_generation_prompt`. إذا كنت ترغب في إضافة موجه توليد (generation prompt)، فيجب عليك القيام بذلك بشكل منفصل بعد تجزئة المحادثة.

#### from_pretrained[[transformers.PreTrainedTokenizerBase.from_pretrained]]

```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike, *init_inputs, cache_dir: str | os.PathLike | None = None, force_download: bool = False, local_files_only: bool = False, token: str | bool | None = None, revision: str = 'main', trust_remote_code = False, **kwargs)
```

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

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

pretrained_model_name_or_path (`str` أو `os.PathLike`) : يمكن أن يكون أحد ما يلي: - نص، وهو *model id* لمُجزِّئ (tokenizer) مُعرَّف مسبقًا ومُستضاف داخل مستودع نموذج على huggingface.co. - مسار إلى *directory* يحتوي على ملفات المفردات المطلوبة من المُجزِّئ، على سبيل المثال تلك المحفوظة باستخدام طريقة [save_pretrained()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.save_pretrained)، مثل `./my_model_directory/`. - (**Deprecated**، غير قابل للتطبيق على جميع الفئات المشتقة) مسار إلى ملف مفردات واحد محفوظ (إذا كان المُجزِّئ يتطلب ملف مفردات واحدًا فقط مثل Bert أو XLNet)، مثل `./my_model_directory/vocab.txt`.

cache_dir (`str` أو `os.PathLike`، *اختياري*) : المسار إلى مجلد يجب تخزين ملفات مفردات المُجزِّئ المُعرَّفة مسبقًا المُحمَّلة فيه إذا لم يُستخدم المجلد المؤقت القياسي.

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

proxies (`dict[str, str]`، *اختياري*) : قاموس لخوادم الوكيل (proxy servers) التي يجب استخدامها حسب البروتوكول أو نقطة النهاية، على سبيل المثال `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}`. تُستخدم هذه الوكلاء في كل طلب.

token (`str` أو *bool*، *اختياري*) : الرمز الذي يُستخدم كتوكن للمصادقة عبر HTTP bearer للملفات البعيدة. إذا كان `True`، فسيتم استخدام التوكن الذي تم إنشاؤه عند تشغيل `hf auth login` (المخزَّن في `~/.huggingface`).

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

revision (`str`، *اختياري*، القيمة الافتراضية `"main"`) : إصدار النموذج المحدد الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف التزامن، نظرًا لأننا نستخدم نظامًا قائمًا على git لتخزين النماذج والمخرجات الأخرى على huggingface.co، لذا يمكن أن يكون `revision` أي معرّف مسموح به بواسطة git.

subfolder (`str`، *اختياري*) : في حال كانت الملفات ذات الصلة موجودة داخل مجلد فرعي من مستودع النموذج على huggingface.co (مثل facebook/rag-token-base)، فحدد ذلك هنا.

inputs (حجج موضعية إضافية، *اختيارية*) : سيتم تمريرها إلى طريقة `__init__` الخاصة بـ Tokenizer.

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

kwargs (حجج كلمات مفتاحية إضافية، *اختياري*) : سيتم تمريرها إلى طريقة `__init__` في Tokenizer. يمكن استخدامها لضبط الرموز الخاصة مثل `bos_token`، `eos_token`، `unk_token`، `sep_token`، `pad_token`، `cls_token`، `mask_token`، `extra_special_tokens`. راجع المعلمات في `__init__` لمزيد من التفاصيل.

أنشئ كائنًا من [PreTrainedTokenizerBase](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase) (أو فئة مشتقة منها) من مُجزِّئ مُعرَّف مسبقًا.

يُعد تمرير `token=True` إلزامياً عند رغبتك في استخدام نموذج خاص.

أمثلة:

```python
# We can't instantiate directly the base class *PreTrainedTokenizerBase* so let's show our examples on a derived class: BertTokenizer
# Download vocabulary from huggingface.co and cache.
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased")

# Download vocabulary from huggingface.co (user-uploaded) and cache.
tokenizer = BertTokenizer.from_pretrained("dbmdz/bert-base-german-cased")

# If vocabulary files are in a directory (e.g. tokenizer was saved using *save_pretrained('./test/saved_model/')*)
tokenizer = BertTokenizer.from_pretrained("./test/saved_model/")

# If the tokenizer uses a single vocabulary file, you can point directly to this file
tokenizer = BertTokenizer.from_pretrained("./test/saved_model/my_vocab.txt")

# You can link tokens to special vocabulary when instantiating
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased", unk_token="<unk>")
# You should be sure '<unk>' is in the vocabulary when doing that.
# Otherwise use tokenizer.add_special_tokens({'unk_token': '<unk>'}) instead)
assert tokenizer.unk_token == "<unk>"
```

#### get_chat_template[[transformers.PreTrainedTokenizerBase.get_chat_template]]

```python
get_chat_template(chat_template: str | None = None, tools: list[dict] | None = None)
```

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

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

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

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

**يعيد:** `str`

نص قالب المحادثة.

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

#### get_response_parser[[transformers.PreTrainedTokenizerBase.get_response_parser]]

```python
get_response_parser(response_template: dict | None = None, prefix: str | list[int] | np.ndarray | torch.Tensor | None = None, tools: list[dict | Callable] | None = None)
```

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

أعدّ `ResponseParser` بحالة (stateful) لتحليل استجابة مُبَثَّة بشكل تدريجي. يستخدم خاصية `response_template` الخاصة بالمُرمِّز (tokenizer) ما لم يتم تجاوزها.

`prefix` (سلسلة نصية، أو قائمة معرّفات الرموز، أو متجه أحادي البُعد) إلزامي: يتم تهيئة التدفق في الحالة المستنتجة من سياق محادثة الأوامر (مقصوص من اليمين بعد `start_anchor` المحدد في المواصفات)، لذا تُصنَّف المقاطع المولّدة المُدخلة عبر `stream.feed()` بشكل صحيح حتى عندما يصدر قالب المحادثة محتوى دور المساعد (مثل `<think>\n`) الذي يستمر النموذج من بعده. يؤدي حذفه إلى رفع استثناء؛ وإذا كان التدفق يبدأ فعليًا من دور مساعد نظيف، فمرّر `prefix=""` للخروج من هذا السلوك.

`tools` (`list[Union[Dict, Callable]]`، *اختياري*): الأدوات المتاحة للنموذج، بنفس الصيغة التي يقبلها `apply_chat_template`. عند ضبطه، تُحوَّل حُجج استدعاء الأدوات باستخدام مخطط JSON الخاص بالأداة المستدعاة عند إغلاق كل منطقة، بحيث تحمل أحداث `region_close` البثية حُججًا مُنمَّطة.

#### get_special_tokens_mask[[transformers.PreTrainedTokenizerBase.get_special_tokens_mask]]

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

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

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

token_ids_0 : قائمة معرّفات (IDs) للتسلسل (الذي قد يكون منسّقًا بالفعل).

token_ids_1 : غير مستخدم عندما يكون `already_has_special_tokens=True`. يجب أن يكون None في هذه الحالة.

already_has_special_tokens : ما إذا كانت التسلسلة منسّقة مسبقًا باستخدام الرموز الخاصة.

**يعيد:** قائمة من الأعداد الصحيحة في المدى [0, 1]

1 لرمز خاص، 0 لرمز التسلسل.

استرجاع معرّفات التسلسلات من قائمة الرموز التي لم تُضف إليها أي رموز خاصة.

للمُرمِّزات السريعة، تستدعي مُجمِّعات البيانات هذه الدالة مع `already_has_special_tokens=True` لبناء قناع فوق تسلسل منسّق مسبقًا. في هذه الحالة، نحسب القناع عن طريق التحقق من العضوية في `all_special_ids`.

#### get_vocab[[transformers.PreTrainedTokenizerBase.get_vocab]]

```python
get_vocab()
```

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

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

المفردات.

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

يُكافئ `tokenizer.get_vocab()[token]` `tokenizer.convert_tokens_to_ids(token)` عندما يكون `token` ضمن المفردات.

#### pad[[transformers.PreTrainedTokenizerBase.pad]]

```python
pad(encoded_inputs: BatchEncoding | list[BatchEncoding] | dict[str, EncodedInput] | dict[str, list[EncodedInput]] | list[dict[str, EncodedInput]], padding: bool | str | PaddingStrategy = True, max_length: int | None = None, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_attention_mask: bool | None = None, return_tensors: str | TensorType | None = None, verbose: bool = True)
```

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

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

encoded_inputs ([BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding)، قائمة من [BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding)، `dict[str, list[int]]`، `dict[str, list[list[int]]` أو `list[dict[str, list[int]]]`) : المدخلات المُرمَّزة. يمكن أن تمثل مدخلاً واحداً ([BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding) أو `dict[str, list[int]]`) أو دفعة من المدخلات المُرمَّزة (قائمة من [BatchEncoding](/docs/transformers/main/ar/main_classes/tokenizer#transformers.BatchEncoding)، *dict[str, list[list[int]]]* أو *list[dict[str, list[int]]]*) بحيث يمكنك استخدام هذه الطريقة أثناء المعالجة المسبقة وكذلك في دالة collate الخاصة بـ PyTorch Dataloader. بدلاً من `list[int]` يمكن أن تكون هناك تينسورات (مصفوفات numpy، أو تينسورات PyTorch)، راجع الملاحظة أعلاه حول نوع الإرجاع.

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

max_length (`int`، *اختياري*) : الحد الأقصى لطول القائمة المُعاد، وطول الحشو اختياريًا (انظر أعلاه).

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

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

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

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

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

املأ مدخلًا مُرمَّزًا واحدًا أو دفعة من المدخلات المُرمَّزة حتى طول محدد مسبقًا أو حتى أقصى طول تسلسل في الدفعة.

تُعرَّف معرّفات رموز الحشو (يسار/يمين) على مستوى مُجزّئ النص (باستخدام `self.padding_side` و`self.pad_token_id` و`self.pad_token_type_id`).

يرجى ملاحظة أنه عند استخدام مُجزِّئ سريع، يكون استخدام طريقة `__call__` أسرع من استخدام طريقة لتشفير النص تليها استدعاء لطريقة `pad` للحصول على تشفير مُسند.

إذا كانت `encoded_inputs` المُمرَّرة عبارة عن قاموس من مصفوفات numpy، أو من تينسورات PyTorch، فسيستخدم الناتج نفس النوع ما لم تُقدِّم نوع تينسور مختلف عبر `return_tensors`. وفي حالة تينسورات PyTorch، ستفقد الجهاز المحدد الخاص بتنسوراتك.

#### parse_response[[transformers.PreTrainedTokenizerBase.parse_response]]

```python
parse_response(response: str | list[int] | list[str] | list[list[int]] | np.ndarray | torch.Tensor, schema: dict | None = None, prefix: str | list[int] | list[str] | list[list[int]] | np.ndarray | torch.Tensor | None = None, tools: list[dict | Callable] | None = None)
```

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

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

response (`str`، معرّفات الرموز، مصفوفة أحادية/ثنائية الأبعاد، أو قائمة من هذه العناصر): المخرجات التي يولّدها النموذج. إما نص مُفكّك الترميز أو معرّفات رموز، كسلسلة واحدة (`str` / `list[int]` / مصفوفة أحادية الأبعاد / مصفوفة أحادية الأبعاد) أو دفعة (`list[str]` / `list[list[int]]` / مصفوفة ثنائية الأبعاد / مصفوفة ثنائية الأبعاد). لاحظ أن هذا يجب أن يحتوي فقط على مخرجات النموذج، وليس أي نص موجه سابق (يُوضع ذلك في `prefix`).

schema (`dict`, *اختياري*) : قالب استجابة يحدد تنسيق المخرجات المتوقع وكيفية إجراء التحليل. إذا لم يُقدَّم، فسيتم استخدام خاصية `response_template` الخاصة بمجزّئ الرموز.

prefix (`str`، معرّفات الرموز، مصفوفة أحادية/ثنائية الأبعاد، أو قائمة من هذه العناصر): هو النص الذي سبق عملية التوليد. وهذا ضروري لأن العديد من قوالب المحادثة تكتب جزءًا من الرسالة مسبقًا، لذا نحتاج إلى رؤية النص لفكّ الترميز بشكل صحيح. في حالة `response` المجمّعة، مرّر بادئة واحدة (تُوزَّع على كل عنصر) أو بادئة واحدة لكل عنصر.

tools (`list[Union[Dict, Callable]]`، *اختياري*) : الأدوات المتاحة للنموذج، بنفس الصيغة التي يقبلها `apply_chat_template`. عند تمريرها، يتم تحويل معاملات استدعاء الأدوات باستخدام مخطط JSON للأداة المستدعاة: يصبح `"7"` هو `7` لمعامل من نوع عدد صحيح، لكنه يبقى `"7"` لمعامل من نوع نص.

**يعيد:**

رسالة مُحلَّلة على شكل `dict` تسلسل واحد، أو `list` من مثل هذه القواميس لدفعة.

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

يقبل تسلسلاً واحداً أو دفعة. يعيد التسلسل الواحد (سلسلة نصية، أو تسلسل أحادي البعد من معرّفات الرموز) رسالة واحدة مُحلَّلة بصيغة `dict`؛ بينما تعيد الدفعة (قائمة من السلاسل النصية، أو قائمة من تسلسلات معرّفات الرموز، أو مصفوفة/مصفوفة ثنائية الأبعاد) `list` من قواميس الرسائل المُحلَّلة، واحدة لكل عنصر.

#### push_to_hub[[transformers.PreTrainedTokenizerBase.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")
```

#### register_for_auto_class[[transformers.PreTrainedTokenizerBase.register_for_auto_class]]

```python
register_for_auto_class(auto_class = 'AutoTokenizer')
```

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

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

auto_class (`str` أو `type`، *اختياري*، القيمة الافتراضية هي `"AutoTokenizer"`) : فئة auto التي سيتم تسجيل هذا المُجزِّئ الجديد بها.

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

#### save_chat_templates[[transformers.PreTrainedTokenizerBase.save_chat_templates]]

```python
save_chat_templates(save_directory: str | os.PathLike, tokenizer_config: dict, filename_prefix: str | None, save_jinja_files: bool)
```

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

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

#### save_pretrained[[transformers.PreTrainedTokenizerBase.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, **kwargs)
```

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

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

save_directory (`str` أو `os.PathLike`) : المسار إلى مجلد حيث سيتم حفظ مُجزّئ النص.

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

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

push_to_hub (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم دفع نموذجك إلى مستودع نماذج Hugging Face بعد حفظه. يمكنك تحديد المستودع الذي تريد الدفع إليه باستخدام `repo_id` (سيكون الافتراضي هو اسم `save_directory` ضمن نطاقك).

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

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

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

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

تضمن هذه الطريقة إمكانية إعادة تحميل مُجزِّئ النص الكامل باستخدام طريقة الفئة `~tokenization_utils_base.PreTrainedTokenizer.from_pretrained`.

Warning,None لن يحفظ هذا التعديلات التي قد تكون قد أجريتها على مُجزّئ الرموز (tokenizer) بعد إنشاء الكائن (على سبيل المثال، تعديل `tokenizer.do_lower_case` بعد الإنشاء).

#### save_vocabulary[[transformers.PreTrainedTokenizerBase.save_vocabulary]]

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

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

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

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

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

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

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

احفظ مفردات مُجزّئ النص فقط (المفردات + الرموز المضافة).

لن تحفظ هذه الطريقة إعدادات المرمّز (tokenizer) وتعيينات الرموز الخاصة. استخدم `_save_pretrained()` لحفظ الحالة الكاملة للمرمّز.

#### tokenize[[transformers.PreTrainedTokenizerBase.tokenize]]

```python
tokenize(text: str, pair: str | None = None, add_special_tokens: bool = False, **kwargs)
```

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

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

text (`str`) : التسلسل المراد ترميزه.

pair (`str`، *اختياري*) : تسلسل ثانٍ ليتم ترميزه مع التسلسل الأول.

add_special_tokens (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إضافة الرموز الخاصة المرتبطة بالنموذج المقابل أم لا.

kwargs (حجج كلمات مفتاحية إضافية، *اختياري*) : سيتم تمريرها إلى طريقة الترميز الخاصة بالنموذج الأساسي. راجع التفاصيل في [__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__)

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

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

يحوّل سلسلة نصية إلى تسلسل من الرموز، مع استبدال الرموز غير المعروفة بـ `unk_token`.

## التعدادات و namedtuples[[transformers.tokenization_utils_base.TruncationStrategy]]

#### transformers.tokenization_utils_base.TruncationStrategy[[transformers.tokenization_utils_base.TruncationStrategy]]

```python
transformers.tokenization_utils_base.TruncationStrategy(value, names = None, module = None, qualname = None, type = None, start = 1, boundary = None)
```

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

القيم الممكنة لحجة `truncation` في [PreTrainedTokenizerBase.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__). مفيدة لإكمال الأوامر تلقائيًا في بيئة تطوير متكاملة.

#### transformers.CharSpan[[transformers.CharSpan]]

```python
transformers.CharSpan(start: ForwardRef('int'), end: ForwardRef('int'))
```

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

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

start (`int`) : فهرس الحرف الأول في النص الأصلي.

end (`int`) : فهرس الحرف الذي يلي الحرف الأخير في السلسلة الأصلية.

مدى الأحرف في النص الأصلي.

#### transformers.TokenSpan[[transformers.TokenSpan]]

```python
transformers.TokenSpan(start: ForwardRef('int'), end: ForwardRef('int'))
```

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

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

start (`int`) : فهرس الرمز الأول في النطاق.

end (`int`) : فهرس الرمز الذي يلي آخر رمز في النطاق.

مدى الرمز في سلسلة مشفّرة (قائمة من الرموز).

