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

مُجزِّئ

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

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

تُنفّذ الفئات الأساسية PreTrainedTokenizer وPreTrainedTokenizerFast الطرق المشتركة لتشفير مدخلات النص في مدخلات النموذج (انظر أدناه) ولإنشاء/حفظ مُجزّئات Python و"Fast" سواءً من ملف أو مجلد محلي أو من مُجزّئ مُدرَّب مسبقًا توفره المكتبة (يتم تنزيله من مستودع AWS S3 الخاص بـ HuggingFace). وتعتمد كلاهما على PreTrainedTokenizerBase التي تحتوي على الطرق المشتركة.

تُنفّذ PreTrainedTokenizer وPreTrainedTokenizerFast بالتالي الطرق الرئيسية لاستخدام جميع المرمّزات:

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

يحتوي BatchEncoding على مخرجات طرق الترميز الخاصة بـ PreTrainedTokenizerBase (__call__ وencode_plus وbatch_encode_plus) وهو مشتق من قاموس بايثون. عندما يكون المرمّز مرمّز بايثون خالص، يتصرف هذا الصنف تمامًا مثل قاموس بايثون قياسي ويحتوي على مدخلات النموذج المختلفة التي تحسبها هذه الطرق (input_ids، attention_mask…). عندما يكون المرمّز مرمّزًا "سريعًا" (أي مدعومًا بمكتبة tokenizers من HuggingFace)، يوفر هذا الصنف بالإضافة إلى ذلك عدة طرق محاذاة متقدمة يمكن استخدامها للربط بين النص الأصلي (الأحرف والكلمات) ومساحة الرموز (مثلًا، الحصول على فهرس الرمز الذي يتكون منه حرف معين أو نطاق الأحرف المقابل لرمز معين).

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

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

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

vision_tokenizer = AutoTokenizer.from_pretrained(
    "llava-hf/llava-1.5-7b-hf",
    extra_special_tokens={"image_token": "<image>", "boi_token": "<image_start>", "eoi_token": "<image_end>"}
)
print(vision_tokenizer.image_token, vision_tokenizer.image_token_id)
("<image>", 32000)

PreTrainedTokenizer

فئة transformers.PythonBackend

< >

( **kwargs )

المعاملات

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

الفئة الأساسية لجميع المرمّزات البطيئة.

يرث من PreTrainedTokenizerBase.

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

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

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

  • vocab_files_names (dict[str, str]) — قاموس تكون مفاتيحه أسماء كلمات المفتاح __init__ لكل ملف مفردات مطلوب من النموذج، وقيمته المرتبطة هي اسم الملف لحفظ الملف المرتبط (نص).
  • pretrained_vocab_files_map (dict[str, dict[str, str]]) — قاموس من القواميس، حيث تكون المفاتيح العليا هي اسم كلمة المفتاح __init__ لكل ملف مفردات مطلوب من النموذج، والمفاتيح الدنيا هي short-cut-names للنماذج المُدرَّبة مسبقاً، مع قيم مرتبطة بها هي url لملف المفردات المُدرَّب مسبقاً المرتبط.
  • model_input_names (list[str]) — قائمة بالمُدخلات المتوقعة في مسار الأمامي (forward pass) للنموذج.
  • padding_side (str) — القيمة الافتراضية للجهة التي يجب تطبيق الحشو عليها في النموذج. يجب أن تكون 'right' أو 'left'.
  • truncation_side (str) — القيمة الافتراضية للجهة التي يجب تطبيق القص عليها في النموذج. يجب أن تكون 'right' أو 'left'.

__call__

< >

( 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_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))

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>"

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.

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

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

build_inputs_with_special_tokens

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

المعاملات

  • token_ids_0 (list[int]) — قائمة بالمعرّفات التي ستُضاف إليها الرموز الخاصة.
  • token_ids_1 (list[int]، اختياري) — قائمة اختيارية ثانية من المعرّفات لأزواج التسلسلات.

يعيد

list[int]

قائمة معرّفات الإدخال مع الرموز الخاصة المناسبة.

أنشئ مدخلات النموذج من تسلسل أو زوج من التسلسلات عن طريق إضافة الرموز الخاصة.

يبني هذا الأسلوب المدخلات ديناميكياً بناءً على special_tokens_pattern الخاص بمجزّئ الرموز:

  • "none": لا توجد رموز خاصة
  • "cls_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] seq1 [SEP]
  • "eos": seq0 [EOS] أو seq0 [EOS] seq1 [EOS]
  • "bos": [BOS] seq0 أو [BOS] seq0 [BOS] seq1
  • "bos_eos": [BOS] seq0 [EOS] أو [BOS] seq0 [EOS] seq1 [EOS]
  • "cls_double_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] [SEP] seq1 [SEP]
  • "prefix_suffix": <prefix_tokens> seq0 [seq1] <suffix_tokens> (بادئة/لاحقة مخصصة مخزنة على مُجزّئ الرموز)

create_token_type_ids_from_sequences

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

المعاملات

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

يعيد

list[int]

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

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

تُبنى معرّفات أنواع الرموز ديناميكيًا بواسطة هذه الطريقة بناءً على سمات إعدادات مُجزّئ الرموز:

  • token_type_ids_pattern: النمط المستخدم (“all_zeros” أو “bert_style”)
  • token_type_ids_include_special_tokens: ما إذا كان يجب أخذ الرموز الخاصة في الاعتبار عند حساب الطول

أمثلة:

# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences

# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairs

get_added_vocab

< >

( ) → dict[str, int]

يعيد

dict[str, int]

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

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

get_special_tokens_mask

< >

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

المعاملات

  • token_ids_0 (list[int]) — قائمة معرّفات (ids) التسلسل الأول.
  • token_ids_1 (list[int]، اختياري) — قائمة معرّفات (ids) للتسلسل الثاني.
  • already_has_special_tokens (bool، اختياري، القيمة الافتراضية False) — ما إذا كانت قائمة الرموز (tokens) منسّقة مسبقًا برموز خاصة للنموذج أم لا.

يعيد

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

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

يسترجع معرّفات التسلسلات من قائمة الرموز التي لم تُضف إليها رموز خاصة. يُستدعى هذا الأسلوب عند إضافة الرموز الخاصة باستخدام أساليب prepare_for_model أو encode_plus في المُرمِّز.

تُبنى قناع الرموز الخاصة ديناميكيًا بواسطة هذه الطريقة بناءً على special_tokens_pattern الخاص بمجزّئ الرموز:

  • "none": لا توجد رموز خاصة (الافتراضي، يعيد جميع القيم 0)
  • "cls_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] seq1 [SEP]
  • "eos": seq0 [EOS] أو seq0 [EOS] seq1 [EOS]
  • "bos": [BOS] seq0 أو [BOS] seq0 [BOS] seq1
  • "bos_eos": [BOS] seq0 [EOS] أو [BOS] seq0 [EOS] seq1 [EOS]
  • "cls_double_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] [SEP] seq1 [SEP]
  • "prefix_suffix": <prefix_tokens> seq0 [seq1] <suffix_tokens>

num_special_tokens_to_add

< >

( pair: bool = False ) → int

المعاملات

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

يعيد

int

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

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

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

prepare_for_model

< >

( ids: listpair_ids: list[int] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Falsemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_length: bool = Falseverbose: bool = Trueprepend_batch_axis: bool = False**kwargs )

المعاملات

  • ids — معرّفات المدخلات المُرمّزة (Tokenized) للتركيبة الأولى.
  • pair_ids — معرّفات المدخلات المُرمّزة للتسلسل الثاني (اختياري).

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

prepare_for_tokenization

< >

( text: stris_split_into_words: bool = False**kwargs ) → tuple[str, dict[str, Any]]

المعاملات

  • text (str) — النص الذي يجب تجهيزه.
  • is_split_into_words (bool، اختياري، القيمة الافتراضية False) — ما إذا كان المدخل مُجزَّأً مسبقاً (على سبيل المثال، مقسَّماً إلى كلمات). إذا تم ضبطه على True، يفترض المُجزِّئ أن المدخل مقسَّم بالفعل إلى كلمات (على سبيل المثال، عن طريق تقسيمه على المسافات) وسيُجزِّئها. هذا مفيد لتصنيف الكيانات الاسمية أو تصنيف الرموز.
  • kwargs (dict[str, Any], اختياري) — حجج الكلمات المفتاحية المستخدمة لعملية الترميز.

يعيد

tuple[str, dict[str, Any]]

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

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

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

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None ) → tuple[str, ...]

المعاملات

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

يعيد

tuple[str, ...]

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

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

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

tokenize

< >

( text: str**kwargs )

المعاملات

  • text — التسلسل المراد ترميزه.
  • **kwargs — تُمرَّر إلى طريقة المعالجة المسبقة prepare_for_tokenization الخاصة بالنموذج.

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

truncate_sequences

< >

( ids: listpair_ids: list[int] | None = Nonenum_tokens_to_remove: int = 0truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first'stride: int = 0 )

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

PreTrainedTokenizerFast

يعتمد PreTrainedTokenizerFast على مكتبة tokenizers. يمكن تحميل المرمّزات (tokenizers) المستمدة من مكتبة 🤗 tokenizers بسهولة كبيرة إلى 🤗 transformers. اطّلع على صفحة استخدام المرمّزات من 🤗 tokenizers لفهم كيفية القيام بذلك.

فئة transformers.TokenizersBackend

< >

( *args**kwargs )

المعاملات

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

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

يرث من PreTrainedTokenizerBase.

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

تحتوي هذه الفئة أيضًا على الرموز المضافة بطريقة موحدة فوق جميع مُجزّئات الرموز، حتى لا نضطر إلى التعامل مع طرق توسيع المفردات المحددة للبنى القاموسية الأساسية المختلفة (BPE، sentencepiece…).

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

  • vocab_files_names (dict[str, str]) — قاموس تكون مفاتيحه أسماء كلمات المفتاح __init__ لكل ملف مفردات مطلوب من النموذج، وقيمته المرتبطة هي اسم الملف لحفظ الملف المرتبط (نص).
  • pretrained_vocab_files_map (dict[str, dict[str, str]]) — قاموس من القواميس، حيث تكون المفاتيح العليا هي اسم كلمة المفتاح __init__ لكل ملف مفردات مطلوب من النموذج، والمفاتيح الدنيا هي short-cut-names للنماذج المُدرَّبة مسبقاً، مع قيم مرتبطة بها هي url لملف المفردات المُدرَّب مسبقاً المرتبط.
  • model_input_names (list[str]) — قائمة بالمُدخلات المتوقعة في مسار الأمامي (forward pass) للنموذج.
  • padding_side (str) — القيمة الافتراضية للجهة التي يجب تطبيق الحشو عليها في النموذج. يجب أن تكون 'right' أو 'left'.
  • truncation_side (str) — القيمة الافتراضية للجهة التي يجب تطبيق القص عليها في النموذج. يجب أن تكون 'right' أو 'left'.

__call__

< >

( 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_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))

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>"

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.

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

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

convert_to_native_format

< >

( trust_remote_code = False**kwargs )

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

get_added_vocab

< >

( ) → dict[str, int]

يعيد

dict[str, int]

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

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

num_special_tokens_to_add

< >

( pair: bool = False ) → int

المعاملات

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

يعيد

int

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

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

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

save_pretrained

< >

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

المعاملات

  • save_format (str، اختياري) — "mistral" للحفظ بصيغة tekken.json الأصلية من خلال نسخ الملف الأصلي (يتطلب توفر ملف مفردات tekken الأصلي). يتم توحيد الاسم إلى tekken.json عند الحفظ، ويجب أن يتطابق المرمّز المُفعّل معه تمامًا. "hf" أو None للصيغة الافتراضية الخاصة بـ HuggingFace.
  • kwargs (dict[str, Any]، اختياري) — حجج إضافية بأسماء تُمرَّر إلى طريقة push_to_hub().

يعيد

سلسلة من str

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

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

يمدّد save_pretrained() بدعم save_format، للمُرمّزات المحوّلة من ملف مفردات أصلي (مثل tekken.json الخاص بـ Mistral). راجع الطريقة الأساسية بخصوص legacy_format وfilename_prefix وpush_to_hub.

set_truncation_and_padding

< >

( padding_strategy: PaddingStrategytruncation_strategy: TruncationStrategymax_length: intstride: intpad_to_multiple_of: int | Nonepadding_side: str | None )

المعاملات

  • padding_strategy (PaddingStrategy) — نوع الحشو الذي سيُطبَّق على المدخلات
  • truncation_strategy (TruncationStrategy) — نوع الاقتطاع الذي سيُطبَّق على المدخلات
  • max_length (int) — الحد الأقصى لحجم التسلسل.
  • stride (int) — الخطوة المستخدمة عند التعامل مع تجاوز الحد.
  • pad_to_multiple_of (int، اختياري) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. وهذا مفيد بشكل خاص لتفعيل استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية معالجة >= 7.5 (Volta).
  • padding_side (str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه.

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

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

train_new_from_iterator

< >

( text_iteratorvocab_sizelength = Nonenew_special_tokens = Nonespecial_tokens_map = None**kwargs ) → PreTrainedTokenizerFast

المعاملات

  • text_iterator (مولّد من نوع list[str]) — مجموعة التدريب. يجب أن يكون مولّداً لدفعات من النصوص، على سبيل المثال قائمة من قوائم النصوص إذا كان لديك كل شيء في الذاكرة.
  • vocab_size (int) — حجم المفردات الذي تريد استخدامه لمُجزّئ النص الخاص بك.
  • length (int، اختياري) — عدد التسلسلات الإجمالي في المُكرِّر. يُستخدم هذا لتقديم تتبع تقدّم ذي معنى
  • new_special_tokens (قائمة من str أو AddedToken، اختياري) — قائمة برموز خاصة جديدة تُضاف إلى مُجزّئ الرموز الذي تقوم بتدريبه.
  • special_tokens_map (dict[str, str], اختياري) — إذا كنت ترغب في إعادة تسمية بعض الرموز الخاصة التي يستخدمها هذا المُجزِّئ، فمرِّر خرائط من اسم الرمز الخاص القديم إلى اسم الرمز الخاص الجديد في هذا المعامل.
  • kwargs (dict[str, Any]، اختياري) — معلمات إضافية تُمرَّر إلى المدرب من مكتبة 🤗 Tokenizers.

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

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

update_post_processor

< >

( )

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

PythonBackend

فئة transformers.PythonBackend

< >

( **kwargs )

المعاملات

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

الفئة الأساسية لجميع المرمّزات البطيئة.

يرث من PreTrainedTokenizerBase.

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

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

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

  • vocab_files_names (dict[str, str]) — قاموس تكون مفاتيحه أسماء كلمات المفتاح __init__ لكل ملف مفردات مطلوب من النموذج، وقيمته المرتبطة هي اسم الملف لحفظ الملف المرتبط (نص).
  • pretrained_vocab_files_map (dict[str, dict[str, str]]) — قاموس من القواميس، حيث تكون المفاتيح العليا هي اسم كلمة المفتاح __init__ لكل ملف مفردات مطلوب من النموذج، والمفاتيح الدنيا هي short-cut-names للنماذج المُدرَّبة مسبقاً، مع قيم مرتبطة بها هي url لملف المفردات المُدرَّب مسبقاً المرتبط.
  • model_input_names (list[str]) — قائمة بالمُدخلات المتوقعة في مسار الأمامي (forward pass) للنموذج.
  • padding_side (str) — القيمة الافتراضية للجهة التي يجب تطبيق الحشو عليها في النموذج. يجب أن تكون 'right' أو 'left'.
  • truncation_side (str) — القيمة الافتراضية للجهة التي يجب تطبيق القص عليها في النموذج. يجب أن تكون 'right' أو 'left'.

build_inputs_with_special_tokens

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

المعاملات

  • token_ids_0 (list[int]) — قائمة بالمعرّفات التي ستُضاف إليها الرموز الخاصة.
  • token_ids_1 (list[int]، اختياري) — قائمة اختيارية ثانية من المعرّفات لأزواج التسلسلات.

يعيد

list[int]

قائمة معرّفات الإدخال مع الرموز الخاصة المناسبة.

أنشئ مدخلات النموذج من تسلسل أو زوج من التسلسلات عن طريق إضافة الرموز الخاصة.

يبني هذا الأسلوب المدخلات ديناميكياً بناءً على special_tokens_pattern الخاص بمجزّئ الرموز:

  • "none": لا توجد رموز خاصة
  • "cls_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] seq1 [SEP]
  • "eos": seq0 [EOS] أو seq0 [EOS] seq1 [EOS]
  • "bos": [BOS] seq0 أو [BOS] seq0 [BOS] seq1
  • "bos_eos": [BOS] seq0 [EOS] أو [BOS] seq0 [EOS] seq1 [EOS]
  • "cls_double_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] [SEP] seq1 [SEP]
  • "prefix_suffix": <prefix_tokens> seq0 [seq1] <suffix_tokens> (بادئة/لاحقة مخصصة مخزنة على مُجزّئ الرموز)

create_token_type_ids_from_sequences

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

المعاملات

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

يعيد

list[int]

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

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

تُبنى معرّفات أنواع الرموز ديناميكيًا بواسطة هذه الطريقة بناءً على سمات إعدادات مُجزّئ الرموز:

  • token_type_ids_pattern: النمط المستخدم (“all_zeros” أو “bert_style”)
  • token_type_ids_include_special_tokens: ما إذا كان يجب أخذ الرموز الخاصة في الاعتبار عند حساب الطول

أمثلة:

# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences

# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairs

get_added_vocab

< >

( ) → dict[str, int]

يعيد

dict[str, int]

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

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

get_special_tokens_mask

< >

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

المعاملات

  • token_ids_0 (list[int]) — قائمة معرّفات (ids) التسلسل الأول.
  • token_ids_1 (list[int]، اختياري) — قائمة معرّفات (ids) للتسلسل الثاني.
  • already_has_special_tokens (bool، اختياري، القيمة الافتراضية False) — ما إذا كانت قائمة الرموز (tokens) منسّقة مسبقًا برموز خاصة للنموذج أم لا.

يعيد

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

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

يسترجع معرّفات التسلسلات من قائمة الرموز التي لم تُضف إليها رموز خاصة. يُستدعى هذا الأسلوب عند إضافة الرموز الخاصة باستخدام أساليب prepare_for_model أو encode_plus في المُرمِّز.

تُبنى قناع الرموز الخاصة ديناميكيًا بواسطة هذه الطريقة بناءً على special_tokens_pattern الخاص بمجزّئ الرموز:

  • "none": لا توجد رموز خاصة (الافتراضي، يعيد جميع القيم 0)
  • "cls_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] seq1 [SEP]
  • "eos": seq0 [EOS] أو seq0 [EOS] seq1 [EOS]
  • "bos": [BOS] seq0 أو [BOS] seq0 [BOS] seq1
  • "bos_eos": [BOS] seq0 [EOS] أو [BOS] seq0 [EOS] seq1 [EOS]
  • "cls_double_sep": [CLS] seq0 [SEP] أو [CLS] seq0 [SEP] [SEP] seq1 [SEP]
  • "prefix_suffix": <prefix_tokens> seq0 [seq1] <suffix_tokens>

num_special_tokens_to_add

< >

( pair: bool = False ) → int

المعاملات

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

يعيد

int

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

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

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

prepare_for_model

< >

( ids: listpair_ids: list[int] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Falsemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_length: bool = Falseverbose: bool = Trueprepend_batch_axis: bool = False**kwargs )

المعاملات

  • ids — معرّفات المدخلات المُرمّزة (Tokenized) للتركيبة الأولى.
  • pair_ids — معرّفات المدخلات المُرمّزة للتسلسل الثاني (اختياري).

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

prepare_for_tokenization

< >

( text: stris_split_into_words: bool = False**kwargs ) → tuple[str, dict[str, Any]]

المعاملات

  • text (str) — النص الذي يجب تجهيزه.
  • is_split_into_words (bool، اختياري، القيمة الافتراضية False) — ما إذا كان المدخل مُجزَّأً مسبقاً (على سبيل المثال، مقسَّماً إلى كلمات). إذا تم ضبطه على True، يفترض المُجزِّئ أن المدخل مقسَّم بالفعل إلى كلمات (على سبيل المثال، عن طريق تقسيمه على المسافات) وسيُجزِّئها. هذا مفيد لتصنيف الكيانات الاسمية أو تصنيف الرموز.
  • kwargs (dict[str, Any], اختياري) — حجج الكلمات المفتاحية المستخدمة لعملية الترميز.

يعيد

tuple[str, dict[str, Any]]

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

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

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

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None ) → tuple[str, ...]

المعاملات

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

يعيد

tuple[str, ...]

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

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

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

tokenize

< >

( text: str**kwargs )

المعاملات

  • text — التسلسل المراد ترميزه.
  • **kwargs — تُمرَّر إلى طريقة المعالجة المسبقة prepare_for_tokenization الخاصة بالنموذج.

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

truncate_sequences

< >

( ids: listpair_ids: list[int] | None = Nonenum_tokens_to_remove: int = 0truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first'stride: int = 0 )

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

TokenizersBackend

فئة transformers.TokenizersBackend

< >

( *args**kwargs )

المعاملات

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

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

يرث من PreTrainedTokenizerBase.

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

تحتوي هذه الفئة أيضًا على الرموز المضافة بطريقة موحدة فوق جميع مُجزّئات الرموز، حتى لا نضطر إلى التعامل مع طرق توسيع المفردات المحددة للبنى القاموسية الأساسية المختلفة (BPE، sentencepiece…).

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

  • vocab_files_names (dict[str, str]) — قاموس تكون مفاتيحه أسماء كلمات المفتاح __init__ لكل ملف مفردات مطلوب من النموذج، وقيمته المرتبطة هي اسم الملف لحفظ الملف المرتبط (نص).
  • pretrained_vocab_files_map (dict[str, dict[str, str]]) — قاموس من القواميس، حيث تكون المفاتيح العليا هي اسم كلمة المفتاح __init__ لكل ملف مفردات مطلوب من النموذج، والمفاتيح الدنيا هي short-cut-names للنماذج المُدرَّبة مسبقاً، مع قيم مرتبطة بها هي url لملف المفردات المُدرَّب مسبقاً المرتبط.
  • model_input_names (list[str]) — قائمة بالمُدخلات المتوقعة في مسار الأمامي (forward pass) للنموذج.
  • padding_side (str) — القيمة الافتراضية للجهة التي يجب تطبيق الحشو عليها في النموذج. يجب أن تكون 'right' أو 'left'.
  • truncation_side (str) — القيمة الافتراضية للجهة التي يجب تطبيق القص عليها في النموذج. يجب أن تكون 'right' أو 'left'.

convert_to_native_format

< >

( trust_remote_code = False**kwargs )

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

get_added_vocab

< >

( ) → dict[str, int]

يعيد

dict[str, int]

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

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

num_special_tokens_to_add

< >

( pair: bool = False ) → int

المعاملات

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

يعيد

int

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

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

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

save_pretrained

< >

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

المعاملات

  • save_format (str، اختياري) — "mistral" للحفظ بصيغة tekken.json الأصلية من خلال نسخ الملف الأصلي (يتطلب توفر ملف مفردات tekken الأصلي). يتم توحيد الاسم إلى tekken.json عند الحفظ، ويجب أن يتطابق المرمّز المُفعّل معه تمامًا. "hf" أو None للصيغة الافتراضية الخاصة بـ HuggingFace.
  • kwargs (dict[str, Any]، اختياري) — حجج إضافية بأسماء تُمرَّر إلى طريقة push_to_hub().

يعيد

سلسلة من str

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

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

يمدّد save_pretrained() بدعم save_format، للمُرمّزات المحوّلة من ملف مفردات أصلي (مثل tekken.json الخاص بـ Mistral). راجع الطريقة الأساسية بخصوص legacy_format وfilename_prefix وpush_to_hub.

set_truncation_and_padding

< >

( padding_strategy: PaddingStrategytruncation_strategy: TruncationStrategymax_length: intstride: intpad_to_multiple_of: int | Nonepadding_side: str | None )

المعاملات

  • padding_strategy (PaddingStrategy) — نوع الحشو الذي سيُطبَّق على المدخلات
  • truncation_strategy (TruncationStrategy) — نوع الاقتطاع الذي سيُطبَّق على المدخلات
  • max_length (int) — الحد الأقصى لحجم التسلسل.
  • stride (int) — الخطوة المستخدمة عند التعامل مع تجاوز الحد.
  • pad_to_multiple_of (int، اختياري) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة. وهذا مفيد بشكل خاص لتفعيل استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية معالجة >= 7.5 (Volta).
  • padding_side (str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه.

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

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

train_new_from_iterator

< >

( text_iteratorvocab_sizelength = Nonenew_special_tokens = Nonespecial_tokens_map = None**kwargs ) → PreTrainedTokenizerFast

المعاملات

  • text_iterator (مولّد من نوع list[str]) — مجموعة التدريب. يجب أن يكون مولّداً لدفعات من النصوص، على سبيل المثال قائمة من قوائم النصوص إذا كان لديك كل شيء في الذاكرة.
  • vocab_size (int) — حجم المفردات الذي تريد استخدامه لمُجزّئ النص الخاص بك.
  • length (int، اختياري) — عدد التسلسلات الإجمالي في المُكرِّر. يُستخدم هذا لتقديم تتبع تقدّم ذي معنى
  • new_special_tokens (قائمة من str أو AddedToken، اختياري) — قائمة برموز خاصة جديدة لإضافتها إلى مُجزّئ الرموز الذي تقوم بتدريبه.
  • special_tokens_map (dict[str, str], اختياري) — إذا كنت ترغب في إعادة تسمية بعض الرموز الخاصة التي يستخدمها هذا المُجزِّئ، فمرِّر خرائط من اسم الرمز الخاص القديم إلى اسم الرمز الخاص الجديد في هذا المعامل.
  • kwargs (dict[str, Any]، اختياري) — معلمات إضافية تُمرَّر إلى المدرب من مكتبة 🤗 Tokenizers.

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

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

update_post_processor

< >

( )

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

SentencePieceBackend

فئة transformers.SentencePieceBackend

< >

( **kwargs )

المعاملات

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

الفئة الأساسية لمُجزِّئات النص المعتمدة على SentencePiece التي تُحمَّل من ملفات sentencepiece.model.

يرث من PreTrainedTokenizer.

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

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

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

  • vocab_files_names (dict[str, str]) — قاموس تكون مفاتيحه أسماء كلمات المفتاح __init__ لكل ملف مفردات مطلوب من النموذج، وقيمته المرتبطة هي اسم الملف لحفظ الملف المرتبط (نص).
  • pretrained_vocab_files_map (dict[str, dict[str, str]]) — قاموس من القواميس، حيث تكون المفاتيح العليا هي اسم كلمة المفتاح __init__ لكل ملف مفردات مطلوب من النموذج، والمفاتيح الدنيا هي short-cut-names للنماذج المُدرَّبة مسبقاً، مع قيم مرتبطة بها هي url لملف المفردات المُدرَّب مسبقاً المرتبط.
  • model_input_names (list[str]) — قائمة بالمُدخلات المتوقعة في مسار الأمامي (forward pass) للنموذج.
  • padding_side (str) — القيمة الافتراضية للجهة التي يجب تطبيق الحشو عليها في النموذج. يجب أن تكون 'right' أو 'left'.
  • truncation_side (str) — القيمة الافتراضية للجهة التي يجب تطبيق القص عليها في النموذج. يجب أن تكون 'right' أو 'left'.

convert_tokens_to_string

< >

( tokens: list )

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

get_vocab

< >

( )

يعيد vocab كقاموس

save_vocabulary

< >

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

المعاملات

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

يعيد

tuple(str)

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

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

BatchEncoding

فئة transformers.BatchEncoding

< >

( data: dict[str, Any] | None = Noneencoding: EncodingFast | Sequence[EncodingFast] | None = Nonetensor_type: None | str | TensorType = Noneprepend_batch_axis: bool = Falsen_sequences: int | None = None )

المعاملات

  • data (dict، اختياري) — قاموس من القوائم/المصفوفات/الموترات التي تُعاد بواسطة طرق __call__/encode_plus/batch_encode_plus (مثل ‘input_ids’ و ‘attention_mask’).
  • encoding (tokenizers.Encoding أو Sequence[tokenizers.Encoding]، اختياري) — إذا كان مُجزِّئ الرموز (tokenizer) من النوع السريع الذي يُخرج معلومات إضافية مثل الترميز من مساحة الكلمات/الأحرف إلى مساحة الرموز، فإن كائن tokenizers.Encoding أو قائمة من الكائنات (للدفات) تحتفظ بهذه المعلومات.
  • tensor_type (Union[None, str, TensorType]، اختياري) — يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.
  • prepend_batch_axis (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إضافة محور الدفعة عند التحويل إلى متجهات (انظر tensor_type أعلاه). لاحظ أن لهذا المعامل تأثيرًا إذا تم تعيين المعامل tensor_type، وإلا فلا يكون له أي تأثير.
  • n_sequences (Optional[int]، اختياري) — عدد تسلسلات الإدخال التي يُمثّلها كل ترميز (None في حال عدم المعرفة، و1 لتسلسل واحد، و2 لزوج من التسلسلات).

يحتوي على مخرجات دالة call()، ومنهجَي ~tokenization_utils_base.PreTrainedTokenizerBase.encode_plus و~tokenization_utils_base.PreTrainedTokenizerBase.batch_encode_plus (الرموز، أقنعة الانتباه، إلخ).

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

char_to_token

< >

( batch_or_char_index: intchar_index: int | None = Nonesequence_index: int = 0 ) → int

المعاملات

  • batch_or_char_index (int) — مؤشر التسلسل في الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا هو مؤشر الحرف داخل التسلسل
  • char_index (int، اختياري) — إذا تم تقديم فهرس الدفعة في batch_or_char_index، فقد يكون هذا هو فهرس الحرف في التسلسل.
  • sequence_index (int, اختياري، القيمة الافتراضية 0) — إذا كان زوج من التسلسلات مشفَّرًا في الدفعة، يمكن استخدام هذا لتحديد التسلسل (0 أو 1) الذي ينتمي إليه فهرس المحرف المُقدَّم ضمن ذلك الزوج.

يعيد

int

مؤشر الرمز، أو None إذا كان مؤشر الحرف يشير إلى رمز يتكون من مسافة فقط وتمت إزالة المسافات باستخدام trim_offsets=True.

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

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

  • self.char_to_token(char_index) إذا كان حجم الدفعة 1
  • self.char_to_token(batch_index, char_index) إذا كان حجم الدفعة أكبر من 1 أو يساويه

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

char_to_word

< >

( batch_or_char_index: intchar_index: int | None = Nonesequence_index: int = 0 ) → int

المعاملات

  • batch_or_char_index (int) — مؤشر التسلسل داخل الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا المؤشر هو مؤشر الحرف في النص الأصلي.
  • char_index (int، اختياري) — إذا تم تقديم فهرس الدفعة في batch_or_char_index، فقد يكون هذا هو فهرس الحرف في النص الأصلي.
  • sequence_index (int, اختياري، القيمة الافتراضية 0) — إذا كان زوج من التسلسلات مشفَّرًا في الدفعة، يمكن استخدام هذا لتحديد التسلسل (0 أو 1) الذي ينتمي إليه فهرس المحرف المُقدَّم ضمن ذلك الزوج.

يعيد

int

مؤشر الكلمة التي تحتوي على الحرف.

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

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

  • self.char_to_word(char_index) إذا كان حجم الدفعة 1
  • self.char_to_word(batch_index, char_index) إذا كان حجم الدفعة أكبر من 1

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

convert_to_tensors

< >

( tensor_type: str | TensorType | None = Noneprepend_batch_axis: bool = False )

المعاملات

  • tensor_type (str أو TensorType، اختياري) — نوع المصفوفات (tensors) المراد استخدامه. إذا كان str، فيجب أن يكون أحد قيم التعداد TensorType. إذا كان None، فلا يتم إجراء أي تعديل.
  • prepend_batch_axis (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إضافة بُعد الدفعة (batch) أثناء التحويل أم لا.

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

sequence_ids

< >

( batch_index: int = 0 ) → list[Optional[int]]

المعاملات

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

يعيد

list[Optional[int]]

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

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

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

إلى

< >

( device: str | torch.device | intnon_blocking: bool = False ) → BatchEncoding

المعاملات

  • device (str أو torch.device أو int) — الجهاز الذي سيتم وضع المصفوفات عليه.
  • non_blocking (bool) — ما إذا كان سيتم تنفيذ النسخ بشكل غير متزامن.

يعيد

BatchEncoding

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

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

token_to_chars

< >

( batch_or_token_index: inttoken_index: int | None = None ) → CharSpan

المعاملات

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

يعيد

CharSpan

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

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

تُعاد نطاقات الأحرف على شكل CharSpan مع:

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

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

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

token_to_sequence

< >

( batch_or_token_index: inttoken_index: int | None = None ) → int

المعاملات

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

يعيد

int

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

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

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

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

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

token_to_word

< >

( batch_or_token_index: inttoken_index: int | None = None ) → int

المعاملات

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

يعيد

int

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

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

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

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

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

رموز

< >

( batch_index: int = 0 ) → list[str]

المعاملات

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

يعيد

list[str]

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

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

word_ids

< >

( batch_index: int = 0 ) → list[Optional[int]]

المعاملات

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

يعيد

list[Optional[int]]

A list indicating the word corresponding to each token. Special tokens added by the tokenizer are mapped to None and other tokens are mapped to the index of their corresponding word (several tokens will be mapped to the same word index if they are parts of that word).

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

word_to_chars

< >

( batch_or_word_index: intword_index: int | None = Nonesequence_index: int = 0 ) → CharSpan

المعاملات

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

يعيد

CharSpan

مدى الحرف أو الأحرف المرتبطة في السلسلة. CharSpan هو NamedTuple يحتوي على:

  • start: فهرس أول حرف مرتبط بالكلمة في السلسلة الأصلية
  • end: فهرس الحرف الذي يلي آخر حرف مرتبط بالكلمة في السلسلة الأصلية

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

تُعاد نطاقات الأحرف على شكل CharSpan من نوع NamedTuple مع:

  • start: فهرس أول حرف في السلسلة الأصلية
  • end: فهرس الحرف الذي يلي الحرف الأخير في السلسلة الأصلية

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

  • self.word_to_chars(word_index) إذا كان حجم الدفعة 1
  • self.word_to_chars(batch_index, word_index) إذا كان حجم الدفعة أكبر من 1 أو يساويه

word_to_tokens

< >

( batch_or_word_index: intword_index: int | None = Nonesequence_index: int = 0 ) → (TokenSpan, optional)

المعاملات

  • batch_or_word_index (int) — مؤشر التسلسل في الدفعة. إذا كانت الدفعة تتكون من تسلسل واحد فقط، فيمكن أن يكون هذا هو مؤشر الكلمة داخل التسلسل.
  • word_index (int، اختياري) — إذا تم تقديم فهرس الدفعة في batch_or_word_index، فقد يكون هذا هو فهرس الكلمة في التسلسل.
  • sequence_index (int, اختياري، القيمة الافتراضية 0) — إذا كان زوج من التسلسلات مشفّرًا في الدفعة، يمكن استخدام هذا لتحديد التسلسل (0 أو 1) الذي ينتمي إليه فهرس الكلمة المُقدَّم ضمن الزوج.

يعيد

(TokenSpan، اختياري)

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

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

تُعاد نطاقات الرموز على شكل TokenSpan مع:

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

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

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

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

Update on GitHub