Transformers documentation

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

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

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

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

PreTrainedTokenizerBase

فئة transformers.PreTrainedTokenizerBase

< >

( **kwargs )

المعاملات

  • model_max_length (int, اختياري) — الحد الأقصى للطول (بعدد الرموز) للمدخلات إلى نموذج التحويل. عند تحميل مُجزّئ الرموز باستخدام from_pretrained()، سيتم تعيينه إلى القيمة المخزنة للنموذج المرتبط به في max_model_input_sizes (انظر أعلاه). إذا لم يتم تقديم قيمة، فسيكون الافتراضي VERY_LARGE_INTEGER (int(1e30)).
  • padding_side (str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه.
  • truncation_side (str، اختياري) — الجهة التي يجب تطبيق القص عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه.
  • chat_template (str، اختياري) — نص قالب Jinja يُستخدم لتنسيق قوائم رسائل الدردشة. راجع https://huggingface.co/docs/transformers/chat_templating للحصول على وصف كامل.
  • model_input_names (list[string]، اختياري) — قائمة المدخلات التي يقبلها المسار الأمامي للنموذج (مثل "token_type_ids" أو "attention_mask"). القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه.
  • bos_token (str أو tokenizers.AddedToken، اختياري) — رمز خاص يمثل بداية الجملة.
  • eos_token (str أو tokenizers.AddedToken، اختياري) — رمز خاص يمثل نهاية الجملة.
  • unk_token (str أو tokenizers.AddedToken، اختياري) — رمز خاص يمثل رمزًا خارج نطاق المفردات.
  • sep_token (str أو tokenizers.AddedToken، اختياري) — رمز خاص يفصل بين جملتين مختلفتين في نفس المدخل (يُستخدم في BERT على سبيل المثال).
  • pad_token (str أو tokenizers.AddedToken، اختياري) — رمز خاص يُستخدم لجعل مصفوفات الرموز متساوية الحجم لأغراض الدفع (batching). ثم يتم تجاهله من قبل آليات الانتباه أو حساب الخسارة.
  • cls_token (str أو tokenizers.AddedToken، اختياري) — رمز خاص يمثل فئة الإدخال (يُستخدم في BERT على سبيل المثال).
  • mask_token (str أو tokenizers.AddedToken، اختياري) — رمز خاص يمثل الرمز المقنّع (يُستخدم في أهداف ما قبل التدريب لنمذجة اللغة المقنّعة، مثل BERT). سيُربط بـ self.mask_token و self.mask_token_id.
  • extra_special_tokens (قائمة من str أو tokenizers.AddedToken، اختياري) — قائمة من الرموز الخاصة الإضافية المحددة للنموذج. أضفها هنا للتأكد من تجاوزها عند فك الترميز عندما يكون skip_special_tokens مضبوطاً على True. إذا لم تكن جزءاً من المفردات، فسيتم إضافتها في نهاية المفردات.
  • split_special_tokens (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب تقسيم الرموز الخاصة أثناء عملية الترميز. تمرير القيمة سيؤثر على الحالة الداخلية للمرمِّز. السلوك الافتراضي هو عدم تقسيم الرموز الخاصة. وهذا يعني أنه إذا كان <s> هو bos_token، فإن tokenizer.tokenize("<s>") = ['<s>]. وإلا، إذا كان split_special_tokens=True، فإن tokenizer.tokenize("<s>") سيعطي ['<','s', '>'].

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

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

  • 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__

< >

( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding

المعاملات

  • text (str، list[str]، list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نصوص مُقسّمة مسبقًا إلى رموز). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسّمة مسبقًا)، فيجب تعيين is_split_into_words=True (لرفع الغموض مع دفعة من التسلسلات).
  • text_pair (str، list[str]، list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نصوص مُقسّمة مسبقًا إلى رموز). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسّمة مسبقًا)، فيجب تعيين is_split_into_words=True (لرفع الغموض مع دفعة من التسلسلات).
  • text_target (str، list[str]، list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات التي سيتم ترميزها كنصوص هدف. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُقسَّم مسبقًا إلى وحدات). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مُقسَّمة مسبقًا)، فيجب عليك تعيين is_split_into_words=True (لرفع الغموض مع دفعة من التسلسلات).
  • text_pair_target (str، list[str]، list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات التي سيتم ترميزها كنصوص هدف. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُقسَّم مسبقًا إلى وحدات). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مُقسَّمة مسبقًا)، فيجب عليك تعيين is_split_into_words=True (لرفع الغموض مع دفعة من التسلسلات).
  • tokenizer_kwargs (dict[str, Any], اختياري) — معاملات إضافية (kwargs) تُمرَّر إلى مُجزِّئ النص (tokenizer). سيتم دمج هذه المعاملات مع المعاملات الصريحة ومعاملات أخرى، مع إعطاء الأولوية للمعاملات الصريحة.
  • add_special_tokens (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إضافة الرموز الخاصة عند ترميز التسلسلات أم لا. سيستخدم هذا الدالة الأساسية PretrainedTokenizerBase.build_inputs_with_special_tokens، التي تحدد الرموز التي تُضاف تلقائيًا إلى معرّفات الإدخال. يكون هذا مفيدًا إذا كنت ترغب في إضافة رموز bos أو eos تلقائيًا.
  • padding (bool, str أو PaddingStrategy, اختياري, الافتراضي هو False) — يُفعّل التحكم في الحشو. يقبل القيم التالية:
    • True أو 'longest': يتم ملء التسلسلات حتى أطول تسلسل في الدفعة (أو لا يتم أي ملء إذا تم تقديم تسلسل واحد فقط).
    • 'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجة max_length أو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.
    • False أو 'do_not_pad' (الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
  • truncation (bool, str أو TruncationStrategy, اختياري, الافتراضي هو False) — تفعيل التحكم في القص. يقبل القيم التالية:
    • True أو 'longest_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجة max_length أو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. يتم هذا القص رمزًا تلو الآخر، حيث يُزال رمز من أطول تسلسل في الزوج إذا كان قد قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).
    • 'only_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجة max_length أو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يُقصّ هذا الخيار سوى التسلسل الأول من الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).
    • 'only_second': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجة max_length أو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يتم قصّ النص الثاني من الزوج إلا إذا قُدِّم زوج من النصوص (أو دفعة من الأزواج).
    • False أو 'do_not_truncate' (الافتراضي): لا يوجد اقتطاع (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال في النموذج).
  • max_length (int, اختياري) — يتحكم في الحد الأقصى للطول الذي ستستخدمه إحدى معاملات القص/الحشو.

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

  • stride (int، اختياري، القيمة الافتراضية 0) — إذا تم تعيينه إلى رقم مع max_length، فستحتوي الرموز الزائدة المُعاد عند return_overflowing_tokens=True على بعض الرموز من نهاية التسلسل المُقتطع المُعاد، لتوفير بعض التداخل بين التسلسلات المُقتطعة والتسلسلات الزائدة. تحدد قيمة هذا الحجة عدد الرموز المتداخلة.
  • is_split_into_words (bool، اختياري، القيمة الافتراضية False) — ما إذا كان المدخل مُجزَّأً مسبقاً (على سبيل المثال، مقسَّماً إلى كلمات). إذا تم ضبطه على True، يفترض المُجزِّئ أن المدخل مقسَّم بالفعل إلى كلمات (على سبيل المثال، عن طريق تقسيمه على المسافات) وسيُجزِّئها. هذا مفيد لتصنيف الكيانات الاسمية أو تصنيف الرموز.
  • pad_to_multiple_of (int, اختياري) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المقدمة. يتطلب تفعيل padding. هذا مفيد بشكل خاص لتمكين استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية حساب >= 7.5 (Volta).
  • padding_side (str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه.
  • return_tensors (str أو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات بدلاً من قائمة من الأعداد الصحيحة في Python. القيم المقبولة هي:
    • 'pt': إرجاع كائنات torch.Tensor من PyTorch.
    • 'np': إرجاع كائنات np.ndarray من نوع Numpy.
  • return_token_type_ids (bool, اختياري) — ما إذا كان يجب إرجاع معرّفات أنواع الرموز. إذا تُركت القيمة الافتراضية، فسيتم إرجاع معرّفات أنواع الرموز وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما تحددها خاصية return_outputs .

    ما هي معرّفات أنواع الرموز؟

  • return_attention_mask (bool, اختياري) — ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما هو معرّف بواسطة return_outputs الخاصية.

    ما هي أقنعة الانتباه؟

  • return_overflowing_tokens (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم إرجاع تسلسلات الرموز الزائدة أم لا. إذا تم تقديم زوج من تسلسلات معرفات الإدخال (أو دفعة من الأزواج) مع truncation_strategy = longest_first أو True، فسيتم رفع خطأ بدلاً من إرجاع الرموز الزائدة.
  • return_special_tokens_mask (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إرجاع معلومات قناع الرموز الخاصة أم لا.
  • return_offsets_mapping (bool, اختياري, الافتراضي هو False) — ما إذا كان يجب إرجاع (char_start, char_end) لكل رمز.

    يتوفر هذا فقط على مُرمّزيات سريعة ترث من PreTrainedTokenizerFast، فإذا كنت تستخدم مُرمّزي Python، فسيُطلق هذا الدالة NotImplementedError.

  • return_length (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إرجاع أطوال المدخلات المُرمّزة أم لا.
  • verbose (bool، اختياري، الافتراضي True) — ما إذا كان يجب طباعة مزيد من المعلومات والتحذيرات أم لا.
  • **kwargs — تُمرَّر إلى طريقة self.tokenize()

يعيد

BatchEncoding

BatchEncoding يحتوي على الحقول التالية:

  • input_ids — قائمة معرّفات الرموز التي تُغذّى بها النموذج.

    ما هي معرّفات الإدخال؟

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

    ما هي معرّفات أنواع الرموز؟

  • attention_mask — قائمة بالفهارس تحدد الرموز التي ينبغي للنموذج الانتباه إليها (عندما يكون return_attention_mask=True أو إذا كان “attention_mask” ضمن self.model_input_names).

    ما هي أقنعة الانتباه؟

  • overflowing_tokens — قائمة تسلسلات الرموز المتجاوزة (عند تحديد max_length و return_overflowing_tokens=True).

  • num_truncated_tokens — عدد الرموز المقصوصة (عند تحديد max_length و return_overflowing_tokens=True).

  • special_tokens_mask — قائمة من الأصفار والواحدات، حيث تشير الواحدة إلى الرموز الخاصة المضافة وتصفّر إلى رموز التسلسل العادية (عندما يكون add_special_tokens=True وreturn_special_tokens_mask=True).

  • length — طول المدخلات (عندما يكون return_length=True)

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

add_special_tokens

< >

( special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]]replace_extra_special_tokens = True ) → int

المعاملات

  • special_tokens_dict (قاموس نص إلى نص, tokenizers.AddedToken, أو Sequence[Union[str, AddedToken]]) — يجب أن تكون المفاتيح ضمن قائمة السمات الخاصة المحددة مسبقًا: [bos_token, eos_token, unk_token, sep_token, pad_token, cls_token, mask_token, extra_special_tokens].

    تُضاف الرموز فقط إذا لم تكن موجودة مسبقاً في قاموس الكلمات (يتم التحقق من ذلك بفحص ما إذا كان مُجزّئ النص يُسند إليها فهرس unk_token).

  • replace_extra_special_tokens (bool، اختياري، القيمة الافتراضية True) — إذا كانت True، فسيتم استبدال القائمة الحالية للرموز الخاصة الإضافية بالقائمة المقدمة في special_tokens_dict. وإلا، فسيتم توسيع extra_special_tokens. في الحالة الأولى، لن يتم حذف الرموز من المفردات الكاملة لمحلل الرموز - بل يتم فقط تصنيفها كرموز غير خاصة. تذكّر، هذا يؤثر فقط على الرموز التي يتم تجاوزها أثناء فك الترميز، وليس على added_tokens_encoder وadded_tokens_decoder. وهذا يعني أن extra_special_tokens السابقة لا تزال رموزاً مضافة، ولن يتم تقسيمها بواسطة النموذج.

يعيد

int

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

أضف قاموسًا للرموز الخاصة (eos، pad، cls، إلخ) إلى المُشفِّر واربطها بخصائص الفئة. إذا لم تكن الرموز الخاصة موجودة في قاموس الكلمات، تُضاف إليه (مُرقّمةً بدءًا من آخر فهرس في قاموس الكلمات الحالي).

عند إضافة رموز جديدة إلى المفردات، يجب التأكد من تغيير حجم مصفوفة تضمين الرموز في النموذج بحيث تتطابق مصفوفة التضمين مع مُجزّئ الرموز.

للقيام بذلك، يرجى استخدام طريقة resize_token_embeddings().

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

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

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

أمثلة:

# Let's see how to add a new classification token to GPT-2
tokenizer = GPT2Tokenizer.from_pretrained("openai-community/gpt2")
model = GPT2Model.from_pretrained("openai-community/gpt2")

special_tokens_dict = {"cls_token": "<CLS>"}

num_added_toks = tokenizer.add_special_tokens(special_tokens_dict)
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))

assert tokenizer.cls_token == "<CLS>"

add_tokens

< >

( new_tokens: str | AddedToken | Sequence[str | AddedToken]special_tokens: bool = False ) → int

المعاملات

  • new_tokens (str أو tokenizers.AddedToken أو تسلسل من str أو tokenizers.AddedToken) — تُضاف الرموز فقط إذا لم تكن موجودة مسبقًا في المفردات. يغلّف tokenizers.AddedToken رمزًا نصيًا ليتيح لك تخصيص سلوكه: ما إذا كان يجب أن يطابق هذا الرمز كلمة واحدة فقط، وما إذا كان يجب أن يزيل جميع المسافات المحتملة على الجانب الأيسر، وما إذا كان يجب أن يزيل جميع المسافات المحتملة على الجانب الأيمن، وما إلى ذلك.
  • special_tokens (bool، اختياري، القيمة الافتراضية False) — يحدد ما إذا كان الرمز خاصًا. يغيّر هذا بشكل رئيسي سلوك التطبيع. راجع التفاصيل الخاصة بـ tokenizers.AddedToken في مكتبة HuggingFace tokenizers.

يعيد

int

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

#TODO احذف هذا من هنا! يجب أن يكون PreTrainedTokenizerBase غير مرتبط بـ AddedToken.

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

تضيف مُقسِّمات الرموز السريعة التي تستخدم مُقسِّمًا مسبقًا من نوع Metaspace مع prepend_scheme="always" (مثل NLLB) الرمز "▁" إلى النص الذي يلي الرمز المضاف. بعد تنفيذ tokenizer.add_tokens(["abcd"])، يتم تقسيم "abcdgym" إلى ["abcd", "▁gym"] ويُفكّك إلى "abcd gym". إذا كان بإمكان الرموز المضافة أن تظهر داخل الكلمات، فبدّل المُقسِّم المسبق

إلى prepend_scheme="first" بحيث يُضاف البادئة إلى بداية الإدخال فقط:

from tokenizers import pre_tokenizers

pre_tokenizer = tokenizer.backend_tokenizer.pre_tokenizer
tokenizer.backend_tokenizer.pre_tokenizer = pre_tokenizers.Metaspace(
    replacement=pre_tokenizer.replacement, prepend_scheme="first", split=pre_tokenizer.split
)

أمثلة:

# Let's see how to increase the vocabulary of Bert model and tokenizer
tokenizer = BertTokenizerFast.from_pretrained("google-bert/bert-base-uncased")
model = BertModel.from_pretrained("google-bert/bert-base-uncased")

num_added_toks = tokenizer.add_tokens(["new_tok1", "my_new-tok2"])
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))

apply_chat_template

< >

( conversation: list[dict[str, str]] | list[list[dict[str, str]]]tools: list[dict | Callable] | None = Nonedocuments: list[dict[str, str]] | None = Nonechat_template: str | None = Noneadd_generation_prompt: bool = Falsecontinue_final_message: bool | str = Falsetokenize: bool = Truesanitize_control_tokens: bool = Falsepadding: bool | str | PaddingStrategy = Falsetruncation: bool = Falsemax_length: int | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_dict: bool = Truereturn_assistant_tokens_mask: bool = Falsetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → Union[list[int], Dict]

المعاملات

  • conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) — قائمة من القواميس (dicts) تحتوي على مفاتيح “role” و “content” وتمثل سجل المحادثة حتى الآن.
  • tools (list[Union[Dict, Callable]]، اختياري) — قائمة بالأدوات (دوال قابلة للاستدعاء) التي ستكون متاحة للنموذج. إذا لم يدعم القالب استدعاء الدوال، فلن يكون لهذا الحجة أي تأثير. يجب تمرير كل أداة كمخطط JSON Schema، مع تحديد اسم الأداة ووصفها وأنواع الحجج الخاصة بها. راجد دليلنا حول استخدام الأدوات لمزيد من المعلومات.
  • documents (list[dict[str, str]]، اختياري) — قائمة من القواميس (dicts) تمثل مستندات ستكون متاحة للنموذج إذا كان يقوم بتوليد معزز بالاسترجاع (RAG). إذا لم يدعم القالب (template) تقنية RAG، فلن يكون لهذا الحجة أي تأثير. ننصح بأن يكون كل مستند قاموسًا يحتوي على مفتاحي “title” و “text”.
  • chat_template (str، اختياري) — قالب Jinja يُستخدم لهذا التحويل. عادةً لا يكون من الضروري تمرير أي شيء إلى هذا الحجة، إذ يُستخدم قالب النموذج افتراضيًا.
  • add_generation_prompt (bool، اختياري) — إذا تم تعيين هذا، فسيتم إرفاق موجه يحتوي على الرمز (أو الرموز) التي تشير إلى بداية رسالة المساعد في المخرجات المنسّقة. وهذا مفيد عندما تريد توليد رد من النموذج. لاحظ أن هذا الحُجج سيُمرَّر إلى قالب المحادثة، وبالتالي يجب أن يدعمه القالب حتى يكون لهذا الحُجج أي تأثير.
  • continue_final_message (bool or str، اختياري) — إذا تم تعيين هذا، فسيتم تنسيق المحادثة بحيث تكون الرسالة الأخيرة في المحادثة مفتوحة النهاية، دون أي رموز EOS. سيواصل النموذج هذه الرسالة بدلاً من بدء رسالة جديدة. يتيح لك ذلك “تعبئة مسبقة” لجزء من استجابة النموذج. إذا تم تمرير نص، فسيتم استخدامه كمفتاح للحقل الذي يجب استمراره (مثل “reasoning_content”). لا يمكن استخدامه في الوقت نفسه مع add_generation_prompt.
  • tokenize (bool، القيمة الافتراضية True) — ما إذا كان سيتم ترميز المخرجات. إذا كانت False، فستكون المخرجات نصًا.
  • sanitize_control_tokens (bool)، القيمة الافتراضية False — إذا تم ضبطه، تُرمَّز رموز التحكم التي تظهر في الرسائل أو الأدوات أو المستندات كنص عادي، بحيث تُرمَّز فقط رموز التحكم المكتوبة بواسطة قالب المحادثة نفسه كرموز. رموز التحكم هي الرموز الخاصة لمجزّئ النص، بالإضافة إلى الرموز المضافة في tokenizer.chat_control_tokens. إذا لم يتم ضبط ذلك المتغير، تُستنتج رموز التحكم من الرموز المضافة التي تظهر في نص قالب المحادثة والسلاسل النصية. يتم تعقيم رموز التحكم الكاملة فقط، لذا إذا كان القالب يجمع سلاسل من الإدخال لتكوين رموز تحكم (مثل '<|' + message['role'] + '|>')، يجب التحقق من صحة تلك السلاسل على حدة. مفاتيح القواميس لا يتم تعقيمها أيضًا.
  • padding (bool, str أو PaddingStrategy, اختياري, الافتراضي هو False) — اختر استراتيجية لإضافة الحشو إلى التسلسلات المُعادَة (وفقًا لجانب الحشو وفهرس الحشو الخاص بالنموذج) من بين الخيارات التالية:
    • True أو 'longest': يتم ملء التسلسلات حتى أطول تسلسل في الدفعة (أو لا يتم أي ملء إذا تم تقديم تسلسل واحد فقط).
    • 'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجة max_length أو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.
    • False أو 'do_not_pad' (الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
  • truncation (bool، القيمة الافتراضية False) — ما إذا كان سيتم تقصير التسلسلات عند الحد الأقصى للطول. لا يؤثر إذا كان tokenize هو False.
  • max_length (int, اختياري) — الحد الأقصى للطول (بالرموز) المستخدم للتعبئة أو الاقتطاع. لا يؤثر إذا كان tokenize هو False. إذا لم يُحدد، فسيتم استخدام خاصية max_length لمُقسّم النص كقيمة افتراضية.
  • return_tensors (str أو TensorType, اختياري) — إذا تم تعيينه، فسيُرجع تينسورات لإطار عمل معين. لا يؤثر إذا كان tokenize هو False. القيم المقبولة هي:
    • 'pt': إرجاع كائنات torch.Tensor من PyTorch.
    • 'np': إرجاع كائنات np.ndarray من NumPy.
  • return_dict (bool، القيمة الافتراضية True) — ما إذا كان يجب إرجاع قاموس بمخرجات مُسماة. لا يؤثر إذا كان tokenize هو False.
  • tokenizer_kwargs (dict[str -- Any]، اختياري): معاملات إضافية لإيصالها إلى مُجزّئ النص.
  • return_assistant_tokens_mask (bool، القيمة الافتراضية False) — ما إذا كان يجب إرجاع قناع (mask) للرموز التي ولّدها المساعد. بالنسبة للرموز التي ولّدها المساعد، سيحتوي القناع على القيمة 1. أما بالنسبة لرموز المستخدم والنظام، فسيحتوي القناع على القيمة 0. هذه الميزة متاحة فقط للقوالب الدردشة التي تدعمها عبر الكلمة المفتاحية {% generation %}.
  • **kwargs — معاملات إضافية تُمرَّر إلى مُصيِّر القالب. ستكون متاحة لقالب المحادثة.

يعيد

Union[list[int], Dict]

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

يحوّل قائمة من القواميس التي تحتوي على المفاتيح "role" و"content" إلى قائمة من معرّفات الرموز. صُمِّم هذا الأسلوب للاستخدام مع نماذج المحادثة، حيث يقرأ خاصية chat_template في مُجزّئ الرموز لتحديد التنسيق ورموز التحكم التي يجب استخدامها أثناء التحويل.

batch_decode

< >

( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]

المعاملات

  • sequences (Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — قائمة من معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة __call__.
  • skip_special_tokens (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا.
  • clean_up_tokenization_spaces (bool, اختياري) — ما إذا كان سيتم تنظيف مسافات الترميز أم لا. إذا كانت None، فسيتم افتراض self.clean_up_tokenization_spaces.
  • kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — سيتم تمريرها إلى طريقة فك الترميز المحددة للنموذج الأساسي.

يعيد

list[str]

قائمة الجمل المُفكَّكة.

تحويل قائمة من قوائم معرّفات الرموز إلى قائمة من النصوص عن طريق استدعاء decode.

يُوفَّر هذا الأسلوب من أجل التوافق مع الإصدارات السابقة. يتعامل أسلوب decode الآن مع المدخلات المجمعة بشكل أصلي، لذا يمكنك استخدام decode مباشرة بدلاً من batch_decode.

clean_up_tokenization

< >

( text: str )

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

convert_ids_to_tokens

< >

( ids: int | list[int]skip_special_tokens: bool = False ) → str or list[str]

المعاملات

  • ids (int أو list[int]) — معرّف الرمز (أو معرّفات الرموز) الذي سيتم تحويله إلى رموز.
  • skip_special_tokens (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا.

يعيد

str أو list[str]

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

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

convert_tokens_to_ids

< >

( tokens: str | list[str] ) → int or list[int]

المعاملات

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

يعيد

int أو list[int]

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

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

convert_tokens_to_string

< >

( tokens: list[str] ) → str

المعاملات

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

يعيد

str

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

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

decode

< >

( token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = False**kwargs ) → Union[str, list[str]]

المعاملات

  • token_ids (Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]) — تسلسل واحد أو دفعة (قائمة من التسلسلات) من معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة __call__.
  • skip_special_tokens (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا.
  • kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — سيتم تمريرها إلى طريقة فك الترميز المحددة للنموذج الأساسي.

يعيد

Union[str, list[str]]

النص المُفكَّك تسلسل واحد، أو قائمة من النصوص المُفكَّكة لدفعة من التسلسلات.

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

يشبه ذلك القيام بـ self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).

encode

< >

( text: TextInput | PreTokenizedInput | EncodedInputtext_pair: TextInput | PreTokenizedInput | EncodedInput | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0padding_side: str | None = Nonereturn_tensors: str | TensorType | None = None**kwargs ) → list[int], torch.Tensor, or np.ndarray

المعاملات

  • text (str أو list[str] أو list[int]) — التسلسل الأول الذي سيتم ترميزه. يمكن أن يكون نصًا، أو قائمة من النصوص (نص مُرمَّز باستخدام طريقة tokenize)، أو قائمة من الأعداد الصحيحة (معرّفات النصوص المُرمَّزة باستخدام طريقة convert_tokens_to_ids).
  • text_pair (str أو list[str] أو list[int]، اختياري) — التسلسل الثاني الاختياري الذي سيتم ترميزه. يمكن أن يكون نصًا، أو قائمة من النصوص (نص مُرمَّز باستخدام طريقة tokenize)، أو قائمة من الأعداد الصحيحة (معرّفات النصوص المُرمَّزة باستخدام طريقة convert_tokens_to_ids).
  • add_special_tokens (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إضافة الرموز الخاصة عند ترميز التسلسلات أم لا. سيستخدم هذا الدالة الأساسية PretrainedTokenizerBase.build_inputs_with_special_tokens، التي تحدد الرموز التي تُضاف تلقائيًا إلى معرّفات الإدخال. يكون هذا مفيدًا إذا كنت ترغب في إضافة رموز bos أو eos تلقائيًا.
  • padding (bool, str أو PaddingStrategy, اختياري, الافتراضي هو False) — يُفعّل التحكم في الحشو. يقبل القيم التالية:
    • True أو 'longest': يتم ملء التسلسلات حتى أطول تسلسل في الدفعة (أو لا يتم أي ملء إذا تم تقديم تسلسل واحد فقط).
    • 'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجة max_length أو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.
    • False أو 'do_not_pad' (الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
  • truncation (bool, str أو TruncationStrategy, اختياري, الافتراضي هو False) — تفعيل التحكم في القص. يقبل القيم التالية:
    • True أو 'longest_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجة max_length أو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. يتم هذا القص رمزًا تلو الآخر، حيث يُزال رمز من أطول تسلسل في الزوج إذا كان قد قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).
    • 'only_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجة max_length أو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يُقصّ هذا الخيار سوى التسلسل الأول من الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).
    • 'only_second': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجة max_length أو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يتم قصّ النص الثاني من الزوج إلا إذا قُدِّم زوج من النصوص (أو دفعة من الأزواج).
    • False أو 'do_not_truncate' (الافتراضي): لا يوجد اقتطاع (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال في النموذج).
  • max_length (int, اختياري) — يتحكم في الحد الأقصى للطول الذي ستستخدمه إحدى معاملات القص/الحشو.

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

  • stride (int، اختياري، القيمة الافتراضية 0) — إذا تم تعيينه إلى رقم مع max_length، فستحتوي الرموز الزائدة المُعاد عند return_overflowing_tokens=True على بعض الرموز من نهاية التسلسل المُقتطع المُعاد، لتوفير بعض التداخل بين التسلسلات المُقتطعة والتسلسلات الزائدة. تحدد قيمة هذا الحجة عدد الرموز المتداخلة.
  • is_split_into_words (bool، اختياري، القيمة الافتراضية False) — ما إذا كان المدخل مُجزَّأً مسبقاً (على سبيل المثال، مقسَّماً إلى كلمات). إذا تم ضبطه على True، يفترض المُجزِّئ أن المدخل مقسَّم بالفعل إلى كلمات (على سبيل المثال، عن طريق تقسيمه على المسافات) وسيُجزِّئها. هذا مفيد لتصنيف الكيانات الاسمية أو تصنيف الرموز.
  • pad_to_multiple_of (int, اختياري) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المقدمة. يتطلب تفعيل padding. هذا مفيد بشكل خاص لتمكين استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية حساب >= 7.5 (Volta).
  • padding_side (str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه.
  • return_tensors (str أو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات بدلاً من قائمة من الأعداد الصحيحة في Python. القيم المقبولة هي:
    • 'pt': إرجاع كائنات torch.Tensor من PyTorch.
    • 'np': إرجاع كائنات np.ndarray من نوع Numpy.
  • **kwargs — تُمرَّر إلى طريقة .tokenize().

يعيد

list[int] أو torch.Tensor أو np.ndarray

المعرّفات المُرمّزة للنص.

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

نفس ما يتم عند تنفيذ self.convert_tokens_to_ids(self.tokenize(text)).

encode_message_with_chat_template

< >

( message: dict[str, str]conversation_history: list[dict[str, str]] | None = None**kwargs ) → list[int]

المعاملات

  • message (dict) — قاموس يحتوي على مفتاحَي “role” و “content”، ويمثل الرسالة التي سيتم تحويلها إلى رموز.
  • conversation_history (list[dict], اختياري) — قائمة من القواميس تحتوي على مفاتيح “role” و “content”، وتمثل سجل المحادثة حتى الآن. إذا كنت تقوم بتحويل الرسائل إلى رموز (tokenization) واحدة تلو الأخرى، فيجب عليك تمرير الرسائل السابقة في المحادثة هنا.
  • **kwargs — معلمات إضافية لإمرارها إلى طريقة apply_chat_template.

يعيد

list[int]

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

تجزئة رسالة واحدة. هذه الطريقة هي غلاف مريح حول apply_chat_template يتيح لك تجزئة الرسائل واحدة تلو الأخرى. هذا مفيد لأشياء مثل البث الرقمية تلو الأخرى. لا يُكفل أن تكون هذه الطريقة مثالية. بالنسبة لبعض النماذج، قد يكون من المستحيل تجزئة الرسائل بشكل مستقل بشكل قوي. على سبيل المثال، إذا أضاف قالب المحادثة رموزًا بعد كل رسالة، وكان لديه أيضًا بادئة تُضاف إلى المحادثة بأكملها، فسيكون من المستحيل التمييز بين رمز بداية المحادثة ورمز بداية الرسالة. في هذه الحالات، ستبذل هذه الطريقة قصارى جهدها لإيجاد التجزئة الصحيحة، لكنها قد لا تكون مثالية. ملاحظة: لا تدعم هذه الطريقة add_generation_prompt. إذا كنت ترغب في إضافة موجه توليد، فيجب عليك القيام بذلك بشكل منفصل بعد تجزئة المحادثة.

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLike*init_inputscache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'trust_remote_code = False**kwargs )

المعاملات

  • pretrained_model_name_or_path (str أو os.PathLike) — يمكن أن يكون:
    • سلسلة نصية، وهي معرف النموذج لمُقسِّم محدد مسبقًا مستضاف داخل مستودع نموذج على huggingface.co.
    • مسار إلى مجلد يحتوي على ملفات المفردات المطلوبة للمجزّئ، على سبيل المثال تلك المحفوظة باستخدام طريقة save_pretrained()، مثل ./my_model_directory/.
    • (مُتقادم، لا ينطبق على جميع الفئات المشتقة) مسار إلى ملف مفرد محفوظ للمفردات (إذا كان المُجزّئ يتطلب ملف مفردات واحدًا فقط، كما في حالة Bert أو XLNet)، على سبيل المثال ./my_model_directory/vocab.txt.
  • cache_dir (str أو os.PathLike، اختياري) — المسار إلى مجلد يجب تخزين ملفات مفردات المرمّز المسبق التعريف المُحمّلة فيه إذا لم يُستخدم المجلد المؤقت القياسي.
  • force_download (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إجبار إعادة تنزيل ملفات المفردات وتجاوز النسخ المخزنة مؤقتًا في حال وجودها.
  • proxies (dict[str, str]، اختياري) — قاموس لخوادم الوكيل (proxy) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. تُستخدم هذه الوكلاء في كل طلب.
  • token (str أو bool، اختياري) — الرمز الذي يُستخدم كتفويض حامل HTTP للملفات البعيدة. إذا كان True، فسيتم استخدام الرمز الذي تم إنشاؤه عند تشغيل hf auth login (المخزَّن في ~/.huggingface).
  • local_files_only (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب الاعتماد على الملفات المحلية فقط دون محاولة تنزيل أي ملفات.
  • revision (str، اختياري، القيمة الافتراضية "main") — الإصدار المحدد من النموذج الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف commit، نظرًا لاستخدامنا نظامًا قائمًا على 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 (أو فئة مشتقة منها) من مُجزِّئ محدد مسبقًا.

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

أمثلة:

# 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

< >

( chat_template: str | None = Nonetools: list[dict] | None = None ) → str

المعاملات

  • chat_template (str، اختياري) — قالب Jinja أو اسم قالب يُستخدم لهذا التحويل. عادةً لا يكون من الضروري تمرير أي شيء إلى هذا الحجة، حيث يُستخدم قالب النموذج افتراضيًا.
  • tools (list[Dict]، اختياري) — قائمة بالأدوات (دوال قابلة للاستدعاء) التي ستكون متاحة للنموذج. إذا لم يدعم القالب استدعاء الدوال، فلن يكون لهذا الحجة أي تأثير. يجب تمرير كل أداة كمخطط JSON Schema، مع تحديد اسم الأداة ووصفها وأنواع الحجج الخاصة بها. راجد دليلنا حول قوالب المحادثة لمزيد من المعلومات.

يعيد

str

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

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

get_response_parser

< >

( response_template: dict | None = Noneprefix: str | list[int] | np.ndarray | torch.Tensor | None = Nonetools: list[dict | Callable] | None = None )

أعدّ 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

< >

( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]

المعاملات

  • 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

< >

( ) → dict[str, int]

يعيد

dict[str, int]

المفردات.

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

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

pad

< >

( encoded_inputs: BatchEncoding | list[BatchEncoding] | dict[str, EncodedInput] | dict[str, list[EncodedInput]] | list[dict[str, EncodedInput]]padding: bool | str | PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_attention_mask: bool | None = Nonereturn_tensors: str | TensorType | None = Noneverbose: bool = True )

المعاملات

  • encoded_inputs (BatchEncoding, قائمة من BatchEncoding, dict[str, list[int]], dict[str, list[list[int]] أو list[dict[str, list[int]]]) — مدخلات مُرمَّزة. يمكن أن تمثل مدخلًا واحدًا (BatchEncoding أو dict[str, list[int]]) أو دفعة من المدخلات المُرمَّزة (قائمة من BatchEncoding, dict[str, list[list[int]]] أو list[dict[str, list[int]]]) لذا يمكنك استخدام هذه الطريقة أثناء المعالجة المسبقة وكذلك في دالة collate الخاصة بـ PyTorch Dataloader.

    بدلاً من list[int] يمكنك استخدام الموترات (مصفوفات numpy، أو موترات PyTorch)، راجع الملاحظة أعلاه حول نوع الإرجاع.

  • padding (bool, str أو PaddingStrategy, اختياري, الافتراضي هو True) — اختر استراتيجية لحشو التسلسلات المُعادَة (وفقًا لجانب الحشو وفهرس الحشو الخاص بالنموذج) من بين الخيارات التالية:
    • True أو 'longest' (الافتراضي): يُضيف الحشو حتى أطول تسلسل في الدفعة (أو لا يُضيف حشوًا إذا تم تقديم تسلسل واحد فقط).
    • 'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجة max_length أو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.
    • False أو 'do_not_pad': لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
  • max_length (int، اختياري) — الحد الأقصى لطول القائمة المُعادَة وطول الحشو بشكل اختياري (انظر أعلاه).
  • pad_to_multiple_of (int, اختياري) — إذا تم تعيينه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة.

    يُعدّ هذا مفيدًا بشكل خاص لتفعيل استخدام نوى التينسور (Tensor Cores) على أجهزة NVIDIA التي تتمتع بقابلية معالجة >= 7.5 (Volta).

  • padding_side (str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه.
  • return_attention_mask (bool, اختياري) — ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما هو معرّف بواسطة return_outputs الخاصية.

    ما هي أقنعة الانتباه؟

  • return_tensors (str أو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات بدلاً من قائمة من الأعداد الصحيحة في Python. القيم المقبولة هي:
    • '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

< >

( response: str | list[int] | list[str] | list[list[int]] | np.ndarray | torch.Tensorschema: dict | None = Noneprefix: str | list[int] | list[str] | list[list[int]] | np.ndarray | torch.Tensor | None = Nonetools: list[dict | Callable] | None = None )

المعاملات

  • 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" لمعامل نصي.

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

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

push_to_hub

< >

( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )

المعاملات

  • repo_id (str) — اسم المستودع الذي تريد دفع مُجزّئك (tokenizer) إليه. يجب أن يحتوي على اسم مؤسستك عند الدفع إلى مؤسسة محددة.
  • commit_message (str، اختياري) — الرسالة التي سيتم الالتزام بها أثناء الدفع. ستكون الافتراضية "Upload tokenizer".
  • commit_description (str, اختياري) — وصف الالتزام الذي سيتم إنشاؤه
  • private (bool، اختياري) — ما إذا كان سيتم جعل المستودع خاصًا. إذا كان None (الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي للمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا بالفعل.
  • token (bool أو str، اختياري) — الرمز الذي يُستخدم كتفويض حامل HTTP للملفات البعيدة. إذا كان True (الافتراضي)، فسيتم استخدام الرمز الذي تم إنشاؤه عند تشغيل hf auth login (المخزَّن في ~/.huggingface).
  • revision (str، اختياري) — الفرع الذي سيتم دفع الملفات المرفوعة إليه.
  • create_pr (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم إنشاء طلب سحب (PR) بالملفات المرفوعة أم الالتزام مباشرة.
  • max_shard_size (int أو str، اختياري، القيمة الافتراضية "50GB") — ينطبق على النماذج فقط. الحد الأقصى لحجم نقطة التفتيش قبل تقسيمها إلى أجزاء. ستكون نقاط التفتيش المقسمة كل منها بحجم أقل من هذا الحجم. إذا تم التعبير عنه كنص، فيجب أن يتكون من أرقام تليها وحدة (مثل "5MB").
  • tags (list[str]، اختياري) — قائمة بالوسوم التي سيتم دفعها إلى Hub.

ارفع ملفات مُجزّئ الرموز إلى 🤗 Model Hub.

أمثلة:

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")

# Push the tokenizer to your namespace with the name "my-finetuned-bert".
tokenizer.push_to_hub("my-finetuned-bert")

# Push the tokenizer to an organization with the name "my-finetuned-bert".
tokenizer.push_to_hub("huggingface/my-finetuned-bert")

register_for_auto_class

< >

( auto_class = 'AutoTokenizer' )

المعاملات

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

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

save_chat_templates

< >

( save_directory: str | os.PathLiketokenizer_config: dictfilename_prefix: str | Nonesave_jinja_files: bool )

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

save_pretrained

< >

( save_directory: str | os.PathLikelegacy_format: bool | None = Nonefilename_prefix: str | None = Nonepush_to_hub: bool = False**kwargs ) → A tuple of str

المعاملات

  • save_directory (str أو os.PathLike) — المسار إلى المجلد الذي سيتم حفظ مُجزّئ النص فيه.
  • legacy_format (bool, اختياري) — ينطبق فقط على مُجزِّئ سريع. إذا لم يُضبط (الافتراضي)، فسيتم حفظ المُجزِّئ في تنسيق JSON الموحّد وكذلك في التنسيق القديم إذا كان موجودًا، أي مع مفردات خاصة بالمُجزِّئ وملف added_tokens منفصل.

    إذا كانت False، فسيتم حفظ مُجزّئ الرموز (tokenizer) فقط بالتنسيق الموحّد JSON. هذا التنسيق غير متوافق مع مُجزّئات الرموز “البطيئة” (التي لا تعمل بمكتبة tokenizers)، لذا لن يكون بإمكان مُجزّئ الرموز “البطيء” المقابل تحميله.

    إذا كان True، سيتم حفظ مُجزّئ النص (tokenizer) بالتنسيق القديم. إذا لم يكن مُجزّئ النص “البطيء” موجودًا، فسيتم رفع خطأ قيمة (value error).

  • filename_prefix (str, اختياري) — بادئة تُضاف إلى أسماء الملفات المحفوظة بواسطة مُجزّئ النص.
  • push_to_hub (bool، اختياري، الافتراضي False) — ما إذا كان سيتم دفع نموذجك إلى مركز نماذج Hugging Face بعد حفظه. يمكنك تحديد المستودع الذي تريد الدفع إليه باستخدام repo_id (سيكون الافتراضي هو اسم save_directory في نطاقك).
  • kwargs (dict[str, Any]، اختياري) — حجج إضافية بأسماء تُمرَّر إلى طريقة push_to_hub().

يعيد

سلسلة من str

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

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

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

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

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None ) → tuple(str)

المعاملات

  • save_directory (str) — المجلد الذي سيتم فيه حفظ المفردات.
  • filename_prefix (str, اختياري) — بادئة اختيارية تُضاف إلى أسماء الملفات المحفوظة.

يعيد

tuple(str)

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

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

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

tokenize

< >

( text: strpair: str | None = Noneadd_special_tokens: bool = False**kwargs ) → list[str]

المعاملات

  • text (str) — التسلسل المراد ترميزه.
  • pair (str، اختياري) — تسلسل ثانٍ ليتم ترميزه مع التسلسل الأول.
  • add_special_tokens (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إضافة الرموز الخاصة المرتبطة بالنموذج المقابل أم لا.
  • kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — سيتم تمريرها إلى طريقة الترميز المحددة للنموذج الأساسي. راجع التفاصيل في call()

يعيد

list[str]

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

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

التعدادات و namedtuples

فئة transformers.tokenization_utils_base.TruncationStrategy

< >

( valuenames = Nonemodule = Nonequalname = Nonetype = Nonestart = 1boundary = None )

القيم الممكنة لحجة truncation في PreTrainedTokenizerBase.call(). مفيدة لإكمال الأوامر تلقائيًا في بيئة تطوير متكاملة.

class transformers.CharSpan

< >

( start: ForwardRef('int')end: ForwardRef('int') )

المعاملات

  • start (int) — فهرس أول حرف في السلسلة الأصلية.
  • end (int) — فهرس الحرف الذي يلي الحرف الأخير في السلسلة الأصلية.

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

فئة transformers.TokenSpan

< >

( start: ForwardRef('int')end: ForwardRef('int') )

المعاملات

  • start (int) — فهرس أول رمز في النطاق.
  • end (int) — فهرس الرمز الذي يلي آخر رمز في النطاق.

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

Update on GitHub