Transformers documentation
أدوات لمعالجات الرموز
أدوات لمعالجات الرموز
تُدرج هذه الصفحة جميع دوال الأداة المستخدمة في مُرمّزيات الرموز، وتحديداً الفئة PreTrainedTokenizerBase التي تنفّذ الطرق المشتركة بين PreTrainedTokenizer وPreTrainedTokenizerFast.
لا تُفيد معظم تلك العناصر إلا إذا كنت تدرس كود مُجزّئات الرموز في المكتبة.
PreTrainedTokenizerBase
فئة transformers.PreTrainedTokenizerBase
< source >( **kwargs )
المعاملات
- model_max_length (
int, اختياري) — الحد الأقصى للطول (بعدد الرموز) للمدخلات إلى نموذج التحويل. عند تحميل مُجزّئ الرموز باستخدام from_pretrained()، سيتم تعيينه إلى القيمة المخزنة للنموذج المرتبط به فيmax_model_input_sizes(انظر أعلاه). إذا لم يتم تقديم قيمة، فسيكون الافتراضي VERY_LARGE_INTEGER (int(1e30)). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - truncation_side (
str، اختياري) — الجهة التي يجب تطبيق القص عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - chat_template (
str، اختياري) — نص قالب Jinja يُستخدم لتنسيق قوائم رسائل الدردشة. راجع https://huggingface.co/docs/transformers/chat_templating للحصول على وصف كامل. - model_input_names (
list[string]، اختياري) — قائمة المدخلات التي يقبلها المسار الأمامي للنموذج (مثل"token_type_ids"أو"attention_mask"). القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - bos_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل بداية الجملة. - eos_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل نهاية الجملة. - unk_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل رمزًا خارج نطاق المفردات. - sep_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يفصل بين جملتين مختلفتين في نفس المدخل (يُستخدم في BERT على سبيل المثال). - pad_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يُستخدم لجعل مصفوفات الرموز متساوية الحجم لأغراض الدفع (batching). ثم يتم تجاهله من قبل آليات الانتباه أو حساب الخسارة. - cls_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل فئة الإدخال (يُستخدم في BERT على سبيل المثال). - mask_token (
strأوtokenizers.AddedToken، اختياري) — رمز خاص يمثل الرمز المقنّع (يُستخدم في أهداف ما قبل التدريب لنمذجة اللغة المقنّعة، مثل BERT). سيُربط بـself.mask_tokenوself.mask_token_id. - extra_special_tokens (قائمة من
strأوtokenizers.AddedToken، اختياري) — قائمة من الرموز الخاصة الإضافية المحددة للنموذج. أضفها هنا للتأكد من تجاوزها عند فك الترميز عندما يكونskip_special_tokensمضبوطاً على True. إذا لم تكن جزءاً من المفردات، فسيتم إضافتها في نهاية المفردات. - split_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب تقسيم الرموز الخاصة أثناء عملية الترميز. تمرير القيمة سيؤثر على الحالة الداخلية للمرمِّز. السلوك الافتراضي هو عدم تقسيم الرموز الخاصة. وهذا يعني أنه إذا كان<s>هوbos_token، فإنtokenizer.tokenize("<s>") = ['<s>]. وإلا، إذا كانsplit_special_tokens=True، فإنtokenizer.tokenize("<s>")سيعطي['<','s', '>'].
الفئة الأساسية لجميع واجهات برمجة التطبيقات الخاصة بالمقسّمات.
خصائص الفئة (المُعاد تعريفها في الفئات المشتقة)
- vocab_files_names (
dict[str, str]) — قاموس تكون مفاتيحه أسماء كلمات المفتاح__init__لكل ملف مفردات مطلوب من النموذج، وقيمته المرتبطة هي اسم الملف لحفظ الملف المرتبط (نص). - pretrained_vocab_files_map (
dict[str, dict[str, str]]) — قاموس من القواميس، حيث تكون المفاتيح العليا هي اسم كلمة المفتاح__init__لكل ملف مفردات مطلوب من النموذج، والمفاتيح الدنيا هيshort-cut-namesللنماذج المُدرَّبة مسبقاً، مع قيم مرتبطة بها هيurlلملف المفردات المُدرَّب مسبقاً المرتبط. - model_input_names (
list[str]) — قائمة بالمُدخلات المتوقعة في مسار الأمامي (forward pass) للنموذج. - padding_side (
str) — القيمة الافتراضية للجهة التي يجب تطبيق الحشو عليها في النموذج. يجب أن تكون'right'أو'left'. - truncation_side (
str) — القيمة الافتراضية للجهة التي يجب تطبيق القص عليها في النموذج. يجب أن تكون'right'أو'left'.
__call__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
المعاملات
- text (
str،list[str]،list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نصوص مُقسّمة مسبقًا إلى رموز). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسّمة مسبقًا)، فيجب تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - text_pair (
str،list[str]،list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نصوص مُقسّمة مسبقًا إلى رموز). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسّمة مسبقًا)، فيجب تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - text_target (
str،list[str]،list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات التي سيتم ترميزها كنصوص هدف. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُقسَّم مسبقًا إلى وحدات). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مُقسَّمة مسبقًا)، فيجب عليك تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - text_pair_target (
str،list[str]،list[list[str]]، اختياري) — التسلسل أو الدفعة من التسلسلات التي سيتم ترميزها كنصوص هدف. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُقسَّم مسبقًا إلى وحدات). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مُقسَّمة مسبقًا)، فيجب عليك تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - tokenizer_kwargs (
dict[str, Any], اختياري) — معاملات إضافية (kwargs) تُمرَّر إلى مُجزِّئ النص (tokenizer). سيتم دمج هذه المعاملات مع المعاملات الصريحة ومعاملات أخرى، مع إعطاء الأولوية للمعاملات الصريحة. - add_special_tokens (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إضافة الرموز الخاصة عند ترميز التسلسلات أم لا. سيستخدم هذا الدالة الأساسيةPretrainedTokenizerBase.build_inputs_with_special_tokens، التي تحدد الرموز التي تُضاف تلقائيًا إلى معرّفات الإدخال. يكون هذا مفيدًا إذا كنت ترغب في إضافة رموزbosأوeosتلقائيًا. - padding (
bool,strأو PaddingStrategy, اختياري, الافتراضي هوFalse) — يُفعّل التحكم في الحشو. يقبل القيم التالية:Trueأو'longest': يتم ملء التسلسلات حتى أطول تسلسل في الدفعة (أو لا يتم أي ملء إذا تم تقديم تسلسل واحد فقط).'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجةmax_lengthأو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.Falseأو'do_not_pad'(الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
- truncation (
bool,strأو TruncationStrategy, اختياري, الافتراضي هوFalse) — تفعيل التحكم في القص. يقبل القيم التالية:Trueأو'longest_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. يتم هذا القص رمزًا تلو الآخر، حيث يُزال رمز من أطول تسلسل في الزوج إذا كان قد قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).'only_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يُقصّ هذا الخيار سوى التسلسل الأول من الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).'only_second': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يتم قصّ النص الثاني من الزوج إلا إذا قُدِّم زوج من النصوص (أو دفعة من الأزواج).Falseأو'do_not_truncate'(الافتراضي): لا يوجد اقتطاع (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال في النموذج).
- max_length (
int, اختياري) — يتحكم في الحد الأقصى للطول الذي ستستخدمه إحدى معاملات القص/الحشو.إذا تُرك غير مُعيَّن أو عُدِّل إلى
None، فسيتم استخدام الطول الأقصى المُعرَّف مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب طولًا أقصى. وإذا لم يكن للنموذج طول إدخال أقصى محدد (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى طول أقصى. - stride (
int، اختياري، القيمة الافتراضية 0) — إذا تم تعيينه إلى رقم معmax_length، فستحتوي الرموز الزائدة المُعاد عندreturn_overflowing_tokens=Trueعلى بعض الرموز من نهاية التسلسل المُقتطع المُعاد، لتوفير بعض التداخل بين التسلسلات المُقتطعة والتسلسلات الزائدة. تحدد قيمة هذا الحجة عدد الرموز المتداخلة. - is_split_into_words (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان المدخل مُجزَّأً مسبقاً (على سبيل المثال، مقسَّماً إلى كلمات). إذا تم ضبطه علىTrue، يفترض المُجزِّئ أن المدخل مقسَّم بالفعل إلى كلمات (على سبيل المثال، عن طريق تقسيمه على المسافات) وسيُجزِّئها. هذا مفيد لتصنيف الكيانات الاسمية أو تصنيف الرموز. - pad_to_multiple_of (
int, اختياري) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المقدمة. يتطلب تفعيلpadding. هذا مفيد بشكل خاص لتمكين استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية حساب>= 7.5(Volta). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات بدلاً من قائمة من الأعداد الصحيحة في Python. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن نوع Numpy.
- return_token_type_ids (
bool, اختياري) — ما إذا كان يجب إرجاع معرّفات أنواع الرموز. إذا تُركت القيمة الافتراضية، فسيتم إرجاع معرّفات أنواع الرموز وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما تحددها خاصيةreturn_outputs. - return_attention_mask (
bool, اختياري) — ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما هو معرّف بواسطةreturn_outputsالخاصية. - return_overflowing_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم إرجاع تسلسلات الرموز الزائدة أم لا. إذا تم تقديم زوج من تسلسلات معرفات الإدخال (أو دفعة من الأزواج) معtruncation_strategy = longest_firstأوTrue، فسيتم رفع خطأ بدلاً من إرجاع الرموز الزائدة. - return_special_tokens_mask (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع معلومات قناع الرموز الخاصة أم لا. - return_offsets_mapping (
bool, اختياري, الافتراضي هوFalse) — ما إذا كان يجب إرجاع(char_start, char_end)لكل رمز.يتوفر هذا فقط على مُرمّزيات سريعة ترث من PreTrainedTokenizerFast، فإذا كنت تستخدم مُرمّزي Python، فسيُطلق هذا الدالة
NotImplementedError. - return_length (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع أطوال المدخلات المُرمّزة أم لا. - verbose (
bool، اختياري، الافتراضيTrue) — ما إذا كان يجب طباعة مزيد من المعلومات والتحذيرات أم لا. - **kwargs — تُمرَّر إلى طريقة
self.tokenize()
يعيد
BatchEncoding يحتوي على الحقول التالية:
-
input_ids — قائمة معرّفات الرموز التي تُغذّى بها النموذج.
-
token_type_ids — قائمة معرّفات أنواع الرموز التي تُمرَّر إلى النموذج (عندما يكون
return_token_type_ids=Trueأو إذا كان “token_type_ids” ضمنself.model_input_names). -
attention_mask — قائمة بالفهارس تحدد الرموز التي ينبغي للنموذج الانتباه إليها (عندما يكون
return_attention_mask=Trueأو إذا كان “attention_mask” ضمنself.model_input_names). -
overflowing_tokens — قائمة تسلسلات الرموز المتجاوزة (عند تحديد
max_lengthوreturn_overflowing_tokens=True). -
num_truncated_tokens — عدد الرموز المقصوصة (عند تحديد
max_lengthوreturn_overflowing_tokens=True). -
special_tokens_mask — قائمة من الأصفار والواحدات، حيث تشير الواحدة إلى الرموز الخاصة المضافة وتصفّر إلى رموز التسلسل العادية (عندما يكون
add_special_tokens=Trueوreturn_special_tokens_mask=True). -
length — طول المدخلات (عندما يكون
return_length=True)
الطريقة الرئيسية لتجزئة (tokenization) وتجهيز تسلسل واحد أو عدة تسلسلات، أو زوج واحد أو عدة أزواج من التسلسلات، للنموذج.
add_special_tokens
< source >( special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]]replace_extra_special_tokens = True ) → int
المعاملات
- special_tokens_dict (قاموس نص إلى نص,
tokenizers.AddedToken, أوSequence[Union[str, AddedToken]]) — يجب أن تكون المفاتيح ضمن قائمة السمات الخاصة المحددة مسبقًا: [bos_token,eos_token,unk_token,sep_token,pad_token,cls_token,mask_token,extra_special_tokens].تُضاف الرموز فقط إذا لم تكن موجودة مسبقاً في قاموس الكلمات (يتم التحقق من ذلك بفحص ما إذا كان مُجزّئ النص يُسند إليها فهرس
unk_token). - replace_extra_special_tokens (
bool، اختياري، القيمة الافتراضيةTrue) — إذا كانتTrue، فسيتم استبدال القائمة الحالية للرموز الخاصة الإضافية بالقائمة المقدمة فيspecial_tokens_dict. وإلا، فسيتم توسيعextra_special_tokens. في الحالة الأولى، لن يتم حذف الرموز من المفردات الكاملة لمحلل الرموز - بل يتم فقط تصنيفها كرموز غير خاصة. تذكّر، هذا يؤثر فقط على الرموز التي يتم تجاوزها أثناء فك الترميز، وليس علىadded_tokens_encoderوadded_tokens_decoder. وهذا يعني أنextra_special_tokensالسابقة لا تزال رموزاً مضافة، ولن يتم تقسيمها بواسطة النموذج.
يعيد
int
عدد الرموز المضافة إلى المفردات.
أضف قاموسًا للرموز الخاصة (eos، pad، cls، إلخ) إلى المُشفِّر واربطها بخصائص الفئة. إذا لم تكن الرموز الخاصة موجودة في قاموس الكلمات، تُضاف إليه (مُرقّمةً بدءًا من آخر فهرس في قاموس الكلمات الحالي).
عند إضافة رموز جديدة إلى المفردات، يجب التأكد من تغيير حجم مصفوفة تضمين الرموز في النموذج بحيث تتطابق مصفوفة التضمين مع مُجزّئ الرموز.
للقيام بذلك، يرجى استخدام طريقة resize_token_embeddings().
يضمن استخدام add_special_tokens إمكانية استخدام الرموز الخاصة بعدة طرق:
- يمكن تخطي الرموز الخاصة عند فك الترميز باستخدام
skip_special_tokens = True. - تُعالَج الرموز الخاصة بعناية من قِبل مُجزّئ النص (فلا يتم تقسيمها أبداً)، على غرار
AddedTokens. - يمكنك بسهولة الإشارة إلى الرموز الخاصة باستخدام سمات فئة المُجزِّئ مثل
tokenizer.cls_token. وهذا يسهّل تطوير سكربتات تدريب وضبط دقيق لا تعتمد على نموذج محدد.
عندما يكون ذلك ممكناً، تكون الرموز الخاصة مسجّلة مسبقاً للنماذج المُدرَّبة مسبقاً المُقدَّمة (على سبيل المثال، BertTokenizer cls_token مسجّل مسبقاً ليكون '[CLS]'، وكذلك رمز XLM مسجّل ليكون '</s>').
أمثلة:
# Let's see how to add a new classification token to GPT-2
tokenizer = GPT2Tokenizer.from_pretrained("openai-community/gpt2")
model = GPT2Model.from_pretrained("openai-community/gpt2")
special_tokens_dict = {"cls_token": "<CLS>"}
num_added_toks = tokenizer.add_special_tokens(special_tokens_dict)
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))
assert tokenizer.cls_token == "<CLS>"add_tokens
< source >( new_tokens: str | AddedToken | Sequence[str | AddedToken]special_tokens: bool = False ) → int
المعاملات
- new_tokens (
strأوtokenizers.AddedTokenأو تسلسل من str أوtokenizers.AddedToken) — تُضاف الرموز فقط إذا لم تكن موجودة مسبقًا في المفردات. يغلّفtokenizers.AddedTokenرمزًا نصيًا ليتيح لك تخصيص سلوكه: ما إذا كان يجب أن يطابق هذا الرمز كلمة واحدة فقط، وما إذا كان يجب أن يزيل جميع المسافات المحتملة على الجانب الأيسر، وما إذا كان يجب أن يزيل جميع المسافات المحتملة على الجانب الأيمن، وما إلى ذلك. - special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — يحدد ما إذا كان الرمز خاصًا. يغيّر هذا بشكل رئيسي سلوك التطبيع. راجع التفاصيل الخاصة بـtokenizers.AddedTokenفي مكتبة HuggingFace tokenizers.
يعيد
int
عدد الرموز المضافة إلى المفردات.
#TODO احذف هذا من هنا! يجب أن يكون PreTrainedTokenizerBase غير مرتبط بـ AddedToken.
أضف قائمةً برموز جديدة. إذا لم تكن الرموز الجديدة موجودةً في قاموس الكلمات، فستُضاف إلى نهايته. وبالتالي، لا يُعامل الرمز المضاف والرموز المستمدة من قاموس خوارزمية التقطيع بنفس الطريقة.
تضيف مُقسِّمات الرموز السريعة التي تستخدم مُقسِّمًا مسبقًا من نوع
Metaspaceمعprepend_scheme="always"(مثل NLLB) الرمز"▁"إلى النص الذي يلي الرمز المضاف. بعد تنفيذtokenizer.add_tokens(["abcd"])، يتم تقسيم"abcdgym"إلى["abcd", "▁gym"]ويُفكّك إلى"abcd gym". إذا كان بإمكان الرموز المضافة أن تظهر داخل الكلمات، فبدّل المُقسِّم المسبقإلى
prepend_scheme="first"بحيث يُضاف البادئة إلى بداية الإدخال فقط:from tokenizers import pre_tokenizers pre_tokenizer = tokenizer.backend_tokenizer.pre_tokenizer tokenizer.backend_tokenizer.pre_tokenizer = pre_tokenizers.Metaspace( replacement=pre_tokenizer.replacement, prepend_scheme="first", split=pre_tokenizer.split )
أمثلة:
# Let's see how to increase the vocabulary of Bert model and tokenizer
tokenizer = BertTokenizerFast.from_pretrained("google-bert/bert-base-uncased")
model = BertModel.from_pretrained("google-bert/bert-base-uncased")
num_added_toks = tokenizer.add_tokens(["new_tok1", "my_new-tok2"])
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))apply_chat_template
< source >( conversation: list[dict[str, str]] | list[list[dict[str, str]]]tools: list[dict | Callable] | None = Nonedocuments: list[dict[str, str]] | None = Nonechat_template: str | None = Noneadd_generation_prompt: bool = Falsecontinue_final_message: bool | str = Falsetokenize: bool = Truesanitize_control_tokens: bool = Falsepadding: bool | str | PaddingStrategy = Falsetruncation: bool = Falsemax_length: int | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_dict: bool = Truereturn_assistant_tokens_mask: bool = Falsetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → Union[list[int], Dict]
المعاملات
- conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) — قائمة من القواميس (dicts) تحتوي على مفاتيح “role” و “content” وتمثل سجل المحادثة حتى الآن.
- tools (
list[Union[Dict, Callable]]، اختياري) — قائمة بالأدوات (دوال قابلة للاستدعاء) التي ستكون متاحة للنموذج. إذا لم يدعم القالب استدعاء الدوال، فلن يكون لهذا الحجة أي تأثير. يجب تمرير كل أداة كمخطط JSON Schema، مع تحديد اسم الأداة ووصفها وأنواع الحجج الخاصة بها. راجد دليلنا حول استخدام الأدوات لمزيد من المعلومات. - documents (
list[dict[str, str]]، اختياري) — قائمة من القواميس (dicts) تمثل مستندات ستكون متاحة للنموذج إذا كان يقوم بتوليد معزز بالاسترجاع (RAG). إذا لم يدعم القالب (template) تقنية RAG، فلن يكون لهذا الحجة أي تأثير. ننصح بأن يكون كل مستند قاموسًا يحتوي على مفتاحي “title” و “text”. - chat_template (
str، اختياري) — قالب Jinja يُستخدم لهذا التحويل. عادةً لا يكون من الضروري تمرير أي شيء إلى هذا الحجة، إذ يُستخدم قالب النموذج افتراضيًا. - add_generation_prompt (bool، اختياري) — إذا تم تعيين هذا، فسيتم إرفاق موجه يحتوي على الرمز (أو الرموز) التي تشير إلى بداية رسالة المساعد في المخرجات المنسّقة. وهذا مفيد عندما تريد توليد رد من النموذج. لاحظ أن هذا الحُجج سيُمرَّر إلى قالب المحادثة، وبالتالي يجب أن يدعمه القالب حتى يكون لهذا الحُجج أي تأثير.
- continue_final_message (bool or str، اختياري) —
إذا تم تعيين هذا، فسيتم تنسيق المحادثة بحيث تكون الرسالة الأخيرة في المحادثة مفتوحة النهاية، دون أي رموز EOS. سيواصل النموذج هذه الرسالة بدلاً من بدء رسالة جديدة. يتيح لك ذلك “تعبئة مسبقة” لجزء من استجابة النموذج. إذا تم تمرير نص، فسيتم استخدامه كمفتاح للحقل الذي يجب استمراره (مثل “reasoning_content”). لا يمكن استخدامه في الوقت نفسه مع
add_generation_prompt. - tokenize (
bool، القيمة الافتراضيةTrue) — ما إذا كان سيتم ترميز المخرجات. إذا كانتFalse، فستكون المخرجات نصًا. - sanitize_control_tokens (
bool)، القيمة الافتراضيةFalse— إذا تم ضبطه، تُرمَّز رموز التحكم التي تظهر في الرسائل أو الأدوات أو المستندات كنص عادي، بحيث تُرمَّز فقط رموز التحكم المكتوبة بواسطة قالب المحادثة نفسه كرموز. رموز التحكم هي الرموز الخاصة لمجزّئ النص، بالإضافة إلى الرموز المضافة فيtokenizer.chat_control_tokens. إذا لم يتم ضبط ذلك المتغير، تُستنتج رموز التحكم من الرموز المضافة التي تظهر في نص قالب المحادثة والسلاسل النصية. يتم تعقيم رموز التحكم الكاملة فقط، لذا إذا كان القالب يجمع سلاسل من الإدخال لتكوين رموز تحكم (مثل'<|' + message['role'] + '|>')، يجب التحقق من صحة تلك السلاسل على حدة. مفاتيح القواميس لا يتم تعقيمها أيضًا. - padding (
bool,strأو PaddingStrategy, اختياري, الافتراضي هوFalse) — اختر استراتيجية لإضافة الحشو إلى التسلسلات المُعادَة (وفقًا لجانب الحشو وفهرس الحشو الخاص بالنموذج) من بين الخيارات التالية:Trueأو'longest': يتم ملء التسلسلات حتى أطول تسلسل في الدفعة (أو لا يتم أي ملء إذا تم تقديم تسلسل واحد فقط).'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجةmax_lengthأو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.Falseأو'do_not_pad'(الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
- truncation (
bool، القيمة الافتراضيةFalse) — ما إذا كان سيتم تقصير التسلسلات عند الحد الأقصى للطول. لا يؤثر إذا كان tokenize هوFalse. - max_length (
int, اختياري) — الحد الأقصى للطول (بالرموز) المستخدم للتعبئة أو الاقتطاع. لا يؤثر إذا كان tokenize هوFalse. إذا لم يُحدد، فسيتم استخدام خاصيةmax_lengthلمُقسّم النص كقيمة افتراضية. - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُرجع تينسورات لإطار عمل معين. لا يؤثر إذا كان tokenize هوFalse. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن NumPy.
- return_dict (
bool، القيمة الافتراضيةTrue) — ما إذا كان يجب إرجاع قاموس بمخرجات مُسماة. لا يؤثر إذا كان tokenize هوFalse. - tokenizer_kwargs (
dict[str -- Any]، اختياري): معاملات إضافية لإيصالها إلى مُجزّئ النص. - return_assistant_tokens_mask (
bool، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع قناع (mask) للرموز التي ولّدها المساعد. بالنسبة للرموز التي ولّدها المساعد، سيحتوي القناع على القيمة 1. أما بالنسبة لرموز المستخدم والنظام، فسيحتوي القناع على القيمة 0. هذه الميزة متاحة فقط للقوالب الدردشة التي تدعمها عبر الكلمة المفتاحية{% generation %}. - **kwargs — معاملات إضافية تُمرَّر إلى مُصيِّر القالب. ستكون متاحة لقالب المحادثة.
يعيد
Union[list[int], Dict]
قائمة من معرّفات الرموز (token ids) تمثل المحادثة المُرمَّزة حتى الآن، بما في ذلك رموز التحكم. هذا المخرج جاهز للتقديم إلى النموذج، إما مباشرةً أو عبر طرق مثل generate(). إذا تم تعيين return_dict، فسيُعاد قاموس (dict) لمخرجات المُرمِّز بدلاً من ذلك.
يحوّل قائمة من القواميس التي تحتوي على المفاتيح "role" و"content" إلى قائمة من معرّفات الرموز. صُمِّم هذا الأسلوب للاستخدام مع نماذج المحادثة، حيث يقرأ خاصية chat_template في مُجزّئ الرموز لتحديد التنسيق ورموز التحكم التي يجب استخدامها أثناء التحويل.
batch_decode
< source >( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]
المعاملات
- sequences (
Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — قائمة من معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة__call__. - skip_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا. - clean_up_tokenization_spaces (
bool, اختياري) — ما إذا كان سيتم تنظيف مسافات الترميز أم لا. إذا كانتNone، فسيتم افتراضself.clean_up_tokenization_spaces. - kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — سيتم تمريرها إلى طريقة فك الترميز المحددة للنموذج الأساسي.
يعيد
list[str]
قائمة الجمل المُفكَّكة.
تحويل قائمة من قوائم معرّفات الرموز إلى قائمة من النصوص عن طريق استدعاء decode.
يُوفَّر هذا الأسلوب من أجل التوافق مع الإصدارات السابقة. يتعامل أسلوب decode الآن مع المدخلات المجمعة بشكل أصلي،
لذا يمكنك استخدام decode مباشرة بدلاً من batch_decode.
تنظيف مسافات الترميز في نص معيّن. يُستخدم هذا الأسلوب بشكل رئيسي لدعم الشيفرة البعيدة.
convert_ids_to_tokens
< source >( ids: int | list[int]skip_special_tokens: bool = False ) → str or list[str]
يحوّل فهرسًا واحدًا أو تسلسلًا من الفهارس في رمز أو تسلسل من الرموز، باستخدام قاموس الرموز والرموز المضافة.
convert_tokens_to_ids
< source >( tokens: str | list[str] ) → int or list[int]
يحوّل سلسلة رموز (أو تسلسلًا من الرموز) إلى معرّف صحيح واحد (أو تسلسلًا من المعرّفات)، باستخدام قاموس الرموز.
convert_tokens_to_string
< source >( tokens: list[str] ) → str
يحوّل تسلسل الرموز في سلسلة نصية واحدة. أبسط طريقة للقيام بذلك هي " ".join(tokens) لكننا غالبًا ما نرغب في إزالة آثار تجزئة تحت الكلمة في الوقت نفسه.
decode
< source >( token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = False**kwargs ) → Union[str, list[str]]
المعاملات
- token_ids (
Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]) — تسلسل واحد أو دفعة (قائمة من التسلسلات) من معرّفات المدخلات المُرمّزة. يمكن الحصول عليها باستخدام طريقة__call__. - skip_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إزالة الرموز الخاصة أثناء فك الترميز أم لا. - kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — سيتم تمريرها إلى طريقة فك الترميز المحددة للنموذج الأساسي.
يعيد
Union[str, list[str]]
النص المُفكَّك تسلسل واحد، أو قائمة من النصوص المُفكَّكة لدفعة من التسلسلات.
يحوّل تسلسلًا من المعرّفات إلى نص، أو قائمة من التسلسلات إلى قائمة من النصوص، باستخدام مُجزّئ الرموز (tokenizer) وقاموس الرموز (vocabulary)، مع خيارات لإزالة الرموز الخاصة وتنظيف مسافات تجزئة الرموز.
يشبه ذلك القيام بـ self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).
encode
< source >( text: TextInput | PreTokenizedInput | EncodedInputtext_pair: TextInput | PreTokenizedInput | EncodedInput | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0padding_side: str | None = Nonereturn_tensors: str | TensorType | None = None**kwargs ) → list[int], torch.Tensor, or np.ndarray
المعاملات
- text (
strأوlist[str]أوlist[int]) — التسلسل الأول الذي سيتم ترميزه. يمكن أن يكون نصًا، أو قائمة من النصوص (نص مُرمَّز باستخدام طريقةtokenize)، أو قائمة من الأعداد الصحيحة (معرّفات النصوص المُرمَّزة باستخدام طريقةconvert_tokens_to_ids). - text_pair (
strأوlist[str]أوlist[int]، اختياري) — التسلسل الثاني الاختياري الذي سيتم ترميزه. يمكن أن يكون نصًا، أو قائمة من النصوص (نص مُرمَّز باستخدام طريقةtokenize)، أو قائمة من الأعداد الصحيحة (معرّفات النصوص المُرمَّزة باستخدام طريقةconvert_tokens_to_ids). - add_special_tokens (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إضافة الرموز الخاصة عند ترميز التسلسلات أم لا. سيستخدم هذا الدالة الأساسيةPretrainedTokenizerBase.build_inputs_with_special_tokens، التي تحدد الرموز التي تُضاف تلقائيًا إلى معرّفات الإدخال. يكون هذا مفيدًا إذا كنت ترغب في إضافة رموزbosأوeosتلقائيًا. - padding (
bool,strأو PaddingStrategy, اختياري, الافتراضي هوFalse) — يُفعّل التحكم في الحشو. يقبل القيم التالية:Trueأو'longest': يتم ملء التسلسلات حتى أطول تسلسل في الدفعة (أو لا يتم أي ملء إذا تم تقديم تسلسل واحد فقط).'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجةmax_lengthأو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.Falseأو'do_not_pad'(الافتراضي): لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
- truncation (
bool,strأو TruncationStrategy, اختياري, الافتراضي هوFalse) — تفعيل التحكم في القص. يقبل القيم التالية:Trueأو'longest_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. يتم هذا القص رمزًا تلو الآخر، حيث يُزال رمز من أطول تسلسل في الزوج إذا كان قد قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).'only_first': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يُقصّ هذا الخيار سوى التسلسل الأول من الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج).'only_second': يُقصّ النص إلى الحد الأقصى للطول المحدد عبر الحجةmax_lengthأو إلى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. لن يتم قصّ النص الثاني من الزوج إلا إذا قُدِّم زوج من النصوص (أو دفعة من الأزواج).Falseأو'do_not_truncate'(الافتراضي): لا يوجد اقتطاع (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال في النموذج).
- max_length (
int, اختياري) — يتحكم في الحد الأقصى للطول الذي ستستخدمه إحدى معاملات القص/الحشو.إذا تُرك غير مُعيَّن أو عُدِّل إلى
None، فسيتم استخدام الطول الأقصى المُعرَّف مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب طولًا أقصى. وإذا لم يكن للنموذج طول إدخال أقصى محدد (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى طول أقصى. - stride (
int، اختياري، القيمة الافتراضية 0) — إذا تم تعيينه إلى رقم معmax_length، فستحتوي الرموز الزائدة المُعاد عندreturn_overflowing_tokens=Trueعلى بعض الرموز من نهاية التسلسل المُقتطع المُعاد، لتوفير بعض التداخل بين التسلسلات المُقتطعة والتسلسلات الزائدة. تحدد قيمة هذا الحجة عدد الرموز المتداخلة. - is_split_into_words (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان المدخل مُجزَّأً مسبقاً (على سبيل المثال، مقسَّماً إلى كلمات). إذا تم ضبطه علىTrue، يفترض المُجزِّئ أن المدخل مقسَّم بالفعل إلى كلمات (على سبيل المثال، عن طريق تقسيمه على المسافات) وسيُجزِّئها. هذا مفيد لتصنيف الكيانات الاسمية أو تصنيف الرموز. - pad_to_multiple_of (
int, اختياري) — إذا تم ضبطه، سيتم توسيط التسلسل إلى مضاعف للقيمة المقدمة. يتطلب تفعيلpadding. هذا مفيد بشكل خاص لتمكين استخدام نوى Tensor على أجهزة NVIDIA التي تتمتع بقابلية حساب>= 7.5(Volta). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات بدلاً من قائمة من الأعداد الصحيحة في Python. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن نوع Numpy.
- **kwargs — تُمرَّر إلى طريقة
.tokenize().
يعيد
list[int] أو torch.Tensor أو np.ndarray
المعرّفات المُرمّزة للنص.
يحوّل نصًا إلى تسلسل من المعرّفات (أعداد صحيحة)، باستخدام مُجزّئ النص (tokenizer) والمفردات (vocabulary).
نفس ما يتم عند تنفيذ self.convert_tokens_to_ids(self.tokenize(text)).
encode_message_with_chat_template
< source >( message: dict[str, str]conversation_history: list[dict[str, str]] | None = None**kwargs ) → list[int]
المعاملات
- message (
dict) — قاموس يحتوي على مفتاحَي “role” و “content”، ويمثل الرسالة التي سيتم تحويلها إلى رموز. - conversation_history (
list[dict], اختياري) — قائمة من القواميس تحتوي على مفاتيح “role” و “content”، وتمثل سجل المحادثة حتى الآن. إذا كنت تقوم بتحويل الرسائل إلى رموز (tokenization) واحدة تلو الأخرى، فيجب عليك تمرير الرسائل السابقة في المحادثة هنا. - **kwargs —
معلمات إضافية لإمرارها إلى طريقة
apply_chat_template.
يعيد
list[int]
قائمة من معرّفات الرموز (token ids) تمثل الرسالة المُرمَّزة.
تجزئة رسالة واحدة. هذه الطريقة هي غلاف مريح حول apply_chat_template يتيح لك تجزئة الرسائل واحدة تلو الأخرى. هذا مفيد لأشياء مثل البث الرقمية تلو الأخرى.
لا يُكفل أن تكون هذه الطريقة مثالية. بالنسبة لبعض النماذج، قد يكون من المستحيل تجزئة الرسائل بشكل مستقل بشكل قوي. على سبيل المثال، إذا أضاف قالب المحادثة رموزًا بعد كل رسالة، وكان لديه أيضًا بادئة تُضاف إلى المحادثة بأكملها، فسيكون من المستحيل التمييز بين رمز بداية المحادثة ورمز بداية الرسالة.
في هذه الحالات، ستبذل هذه الطريقة قصارى جهدها لإيجاد التجزئة الصحيحة، لكنها قد لا تكون مثالية. ملاحظة: لا تدعم هذه الطريقة add_generation_prompt. إذا كنت ترغب في إضافة موجه توليد،
فيجب عليك القيام بذلك بشكل منفصل بعد تجزئة المحادثة.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike*init_inputscache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'trust_remote_code = False**kwargs )
المعاملات
- pretrained_model_name_or_path (
strأوos.PathLike) — يمكن أن يكون:- سلسلة نصية، وهي معرف النموذج لمُقسِّم محدد مسبقًا مستضاف داخل مستودع نموذج على huggingface.co.
- مسار إلى مجلد يحتوي على ملفات المفردات المطلوبة للمجزّئ، على سبيل المثال تلك المحفوظة باستخدام طريقة save_pretrained()، مثل
./my_model_directory/. - (مُتقادم، لا ينطبق على جميع الفئات المشتقة) مسار إلى ملف مفرد محفوظ للمفردات (إذا كان المُجزّئ يتطلب ملف مفردات واحدًا فقط، كما في حالة Bert أو XLNet)، على سبيل المثال
./my_model_directory/vocab.txt.
- cache_dir (
strأوos.PathLike، اختياري) — المسار إلى مجلد يجب تخزين ملفات مفردات المرمّز المسبق التعريف المُحمّلة فيه إذا لم يُستخدم المجلد المؤقت القياسي. - force_download (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إجبار إعادة تنزيل ملفات المفردات وتجاوز النسخ المخزنة مؤقتًا في حال وجودها. - proxies (
dict[str, str]، اختياري) — قاموس لخوادم الوكيل (proxy) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. تُستخدم هذه الوكلاء في كل طلب. - token (
strأو bool، اختياري) — الرمز الذي يُستخدم كتفويض حامل HTTP للملفات البعيدة. إذا كانTrue، فسيتم استخدام الرمز الذي تم إنشاؤه عند تشغيلhf auth login(المخزَّن في~/.huggingface). - local_files_only (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب الاعتماد على الملفات المحلية فقط دون محاولة تنزيل أي ملفات. - revision (
str، اختياري، القيمة الافتراضية"main") — الإصدار المحدد من النموذج الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف commit، نظرًا لاستخدامنا نظامًا قائمًا على git لتخزين النماذج والمخرجات الأخرى على huggingface.co، لذا يمكن أن يكونrevisionأي معرّف يسمح به git. - subfolder (
str، اختياري) — في حال كانت الملفات ذات الصلة موجودة داخل مجلد فرعي من مستودع النموذج على huggingface.co (مثل facebook/rag-token-base)، حددها هنا. - inputs (حجج موضعية إضافية، اختيارية) —
سيتم تمريرها إلى طريقة
__init__في Tokenizer. - trust_remote_code (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم السماح بالنماذج المخصصة المعرّفة على Hub في ملفات نمذجة خاصة بها. يجب ضبط هذا الخيار علىTrueفقط للمستودعات التي تثق بها والتي قرأتَ كودها، لأنه سيقوم بتنفيذ الكود الموجود على Hub على جهازك المحلي. - kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) —
سيتم تمريرها إلى طريقة
__init__في Tokenizer. يمكن استخدامها لضبط الرموز الخاصة مثلbos_token،eos_token،unk_token،sep_token،pad_token،cls_token،mask_token،extra_special_tokens. راجع المعلمات في__init__لمزيد من التفاصيل.
أنشئ كائنًا من PreTrainedTokenizerBase (أو فئة مشتقة منها) من مُجزِّئ محدد مسبقًا.
يُعد تمرير
token=Trueإلزامياً عند رغبتك في استخدام نموذج خاص.
أمثلة:
# We can't instantiate directly the base class *PreTrainedTokenizerBase* so let's show our examples on a derived class: BertTokenizer
# Download vocabulary from huggingface.co and cache.
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased")
# Download vocabulary from huggingface.co (user-uploaded) and cache.
tokenizer = BertTokenizer.from_pretrained("dbmdz/bert-base-german-cased")
# If vocabulary files are in a directory (e.g. tokenizer was saved using *save_pretrained('./test/saved_model/')*)
tokenizer = BertTokenizer.from_pretrained("./test/saved_model/")
# If the tokenizer uses a single vocabulary file, you can point directly to this file
tokenizer = BertTokenizer.from_pretrained("./test/saved_model/my_vocab.txt")
# You can link tokens to special vocabulary when instantiating
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased", unk_token="<unk>")
# You should be sure '<unk>' is in the vocabulary when doing that.
# Otherwise use tokenizer.add_special_tokens({'unk_token': '<unk>'}) instead)
assert tokenizer.unk_token == "<unk>"get_chat_template
< source >( chat_template: str | None = Nonetools: list[dict] | None = None ) → str
المعاملات
- chat_template (
str، اختياري) — قالب Jinja أو اسم قالب يُستخدم لهذا التحويل. عادةً لا يكون من الضروري تمرير أي شيء إلى هذا الحجة، حيث يُستخدم قالب النموذج افتراضيًا. - tools (
list[Dict]، اختياري) — قائمة بالأدوات (دوال قابلة للاستدعاء) التي ستكون متاحة للنموذج. إذا لم يدعم القالب استدعاء الدوال، فلن يكون لهذا الحجة أي تأثير. يجب تمرير كل أداة كمخطط JSON Schema، مع تحديد اسم الأداة ووصفها وأنواع الحجج الخاصة بها. راجد دليلنا حول قوالب المحادثة لمزيد من المعلومات.
يعيد
str
نص قالب المحادثة.
استرجع سلسلة قالب المحادثة المستخدمة لتجزئة رسائل المحادثة. يُستخدم هذا القالب داخليًا بواسطة طريقة apply_chat_template ويمكن أيضًا استخدامه خارجيًا لاسترجاع قالب المحادثة الخاص بالنموذج من أجل تتبع أفضل للتوليد.
get_response_parser
< source >( response_template: dict | None = Noneprefix: str | list[int] | np.ndarray | torch.Tensor | None = Nonetools: list[dict | Callable] | None = None )
أعدّ ResponseParser بحالة (stateful) لتحليل استجابة مُبَثَّة بشكل تدريجي. يستخدم خاصية response_template الخاصة بالمُرمِّز (tokenizer) ما لم يتم تجاوزها.
prefix (سلسلة نصية، أو قائمة معرّفات الرموز، أو متجه أحادي البعد) إلزامي: يتم تهيئة التدفق في الحالة المستنتجة من سياق محادثة الأوامر (مقصوص من اليمين بعد start_anchor في المواصفة)، لذا تُصنَّف المقاطع المولّدة المُرسلة عبر stream.feed() بشكل صحيح حتى عندما تُصدر قالب المحادثة محتوى لجولة المساعد (مثل <think>\n) الذي يستمر النموذج من بعده. يؤدي حذفه إلى رفع استثناء؛ وإذا بدأ التدفق فعليًا من جولة مساعد نظيفة، فمرّر prefix="" للخروج من هذا السلوك.
tools (list[Union[Dict, Callable]]، اختياري): الأدوات المتاحة للنموذج، بنفس الصيغة التي يقبلها apply_chat_template. عند ضبطه، تُحوَّل حُجج استدعاء الأدوات باستخدام مخطط JSON للأداة المستدعاة عند إغلاق كل منطقة، بحيث تحمل أحداث region_close البثّية حُججًا مُنمَّطة.
get_special_tokens_mask
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
المعاملات
- token_ids_0 — قائمة بالمعرّفات (IDs) للتسلسل (الذي قد يكون مُنسّقًا بالفعل).
- token_ids_1 — غير مستخدم عندما يكون
already_has_special_tokens=True. يجب أن يكون None في هذه الحالة. - already_has_special_tokens — ما إذا كانت التسلسلة منسّقة مسبقًا باستخدام الرموز الخاصة.
يعيد
قائمة من الأعداد الصحيحة في المدى [0, 1]
1 لرمز خاص، 0 لرمز التسلسل.
استرجاع معرّفات التسلسلات من قائمة الرموز التي لم تُضف إليها أي رموز خاصة.
للمُرمِّزات السريعة، تستدعي مُجمِّعات البيانات هذه الدالة مع already_has_special_tokens=True لبناء قناع فوق تسلسل مُنسَّق مسبقًا. في تلك الحالة، نحسب القناع عن طريق التحقق من العضوية في all_special_ids.
يعيد المفردات على شكل قاموس يربط كل رمز بمؤشره.
tokenizer.get_vocab()[token] مكافئ لـ tokenizer.convert_tokens_to_ids(token) عندما يكون token ضمن
المفردات.
pad
< source >( encoded_inputs: BatchEncoding | list[BatchEncoding] | dict[str, EncodedInput] | dict[str, list[EncodedInput]] | list[dict[str, EncodedInput]]padding: bool | str | PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_attention_mask: bool | None = Nonereturn_tensors: str | TensorType | None = Noneverbose: bool = True )
المعاملات
- encoded_inputs (BatchEncoding, قائمة من BatchEncoding,
dict[str, list[int]],dict[str, list[list[int]]أوlist[dict[str, list[int]]]) — مدخلات مُرمَّزة. يمكن أن تمثل مدخلًا واحدًا (BatchEncoding أوdict[str, list[int]]) أو دفعة من المدخلات المُرمَّزة (قائمة من BatchEncoding, dict[str, list[list[int]]] أو list[dict[str, list[int]]]) لذا يمكنك استخدام هذه الطريقة أثناء المعالجة المسبقة وكذلك في دالة collate الخاصة بـ PyTorch Dataloader.بدلاً من
list[int]يمكنك استخدام الموترات (مصفوفات numpy، أو موترات PyTorch)، راجع الملاحظة أعلاه حول نوع الإرجاع. - padding (
bool,strأو PaddingStrategy, اختياري, الافتراضي هوTrue) — اختر استراتيجية لحشو التسلسلات المُعادَة (وفقًا لجانب الحشو وفهرس الحشو الخاص بالنموذج) من بين الخيارات التالية:Trueأو'longest'(الافتراضي): يُضيف الحشو حتى أطول تسلسل في الدفعة (أو لا يُضيف حشوًا إذا تم تقديم تسلسل واحد فقط).'max_length': يتم ملء النص حتى الطول الأقصى المحدد عبر الحجةmax_lengthأو حتى الطول الأقصى المقبول لإدخال النموذج إذا لم تُقدَّم تلك الحجة.Falseأو'do_not_pad': لا يوجد حشو (أي، يمكن إخراج دفعة تحتوي على تسلسلات بطول مختلف).
- max_length (
int، اختياري) — الحد الأقصى لطول القائمة المُعادَة وطول الحشو بشكل اختياري (انظر أعلاه). - pad_to_multiple_of (
int, اختياري) — إذا تم تعيينه، سيتم توسيط التسلسل إلى مضاعف للقيمة المُقدَّمة.يُعدّ هذا مفيدًا بشكل خاص لتفعيل استخدام نوى التينسور (Tensor Cores) على أجهزة NVIDIA التي تتمتع بقابلية معالجة
>= 7.5(Volta). - padding_side (
str، اختياري) — الجهة التي يجب تطبيق الحشو عليها في النموذج. يجب اختيارها من بين [‘right’، ‘left’]. القيمة الافتراضية تُختار من سمة الفئة التي تحمل الاسم نفسه. - return_attention_mask (
bool, اختياري) — ما إذا كان يجب إرجاع قناع الانتباه. إذا تُركت القيمة الافتراضية، فسيتم إرجاع قناع الانتباه وفقًا للقيمة الافتراضية الخاصة بمجزّئ الرموز المحدد، كما هو معرّف بواسطةreturn_outputsالخاصية. - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات بدلاً من قائمة من الأعداد الصحيحة في Python. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن نوع Numpy.
- verbose (
bool، اختياري، الافتراضيTrue) — ما إذا كان يجب طباعة مزيد من المعلومات والتحذيرات أم لا.
ملء مدخل مُرمَّز واحد أو دفعة من المدخلات المُرمَّزة حتى طول محدد مسبقًا أو حتى أقصى طول تسلسل في الدفعة.
تُعرَّف معرّفات رموز الحشو (يسار/يمين) على مستوى مُجزّئ النص (باستخدام self.padding_side وself.pad_token_id وself.pad_token_type_id).
يرجى ملاحظة أنه عند استخدام مُقسِّم سريع، فإن استخدام طريقة __call__ أسرع من استخدام طريقة لتشفير النص تليها استدعاء لطريقة pad للحصول على تشفير مُملأ.
إذا كانت
encoded_inputsالمُمرَّرة عبارة عن قاموس من مصفوفات numpy، أو من تينسورات PyTorch، فسيستخدم الناتج نفس النوع ما لم تُقدِّم نوع تينسور مختلفًا عبرreturn_tensors. في حالة تينسورات PyTorch، ستفقد الجهاز المحدد الخاص بتنسوراتك.
parse_response
< source >( response: str | list[int] | list[str] | list[list[int]] | np.ndarray | torch.Tensorschema: dict | None = Noneprefix: str | list[int] | list[str] | list[list[int]] | np.ndarray | torch.Tensor | None = Nonetools: list[dict | Callable] | None = None )
المعاملات
- response (
str، معرفات الرموز، مصفوفة أحادية/ثنائية الأبعاد، أو قائمة من هذه) — المخرجات التي يولّدها النموذج. إما نص مُفكك الترميز أو معرفات رموز، كسلسلة واحدة (str/list[int]/ مصفوفة أحادية الأبعاد / مصفوفة أحادية الأبعاد) أو دفعة (list[str]/list[list[int]]/ مصفوفة ثنائية الأبعاد / مصفوفة ثنائية الأبعاد). لاحظ أن هذا يجب أن يحتوي على مخرجات النموذج فقط، وليس أي نص موجه سابق (يُوضع ذلك فيprefix). - schema (
dict، اختياري) — قالب استجابة يحدد تنسيق المخرجات المتوقع وكيفية إجراء التحليل. إذا لم يُقدَّم، فسيتم استخدام خاصيةresponse_templateالخاصة بمجزّئ الرموز. - prefix (
str، معرّفات الرموز، متجه أحادي/ثنائي الأبعاد، أو قائمة من هذه) — الموجّه الذي سبق التوليد. هذا ضروري لأن العديد من قوالب المحادثة تكتب جزءًا من الرسالة مسبقًا، لذا نحتاج إلى رؤية الموجّه للتحليل بشكل صحيح. في حالةresponseالمجمّع، مرّر إما بادئة واحدة (تُذاع لكل عنصر) أو بادئة واحدة لكل عنصر. - tools (
list[Union[Dict, Callable]]، اختياري) — الأدوات المتاحة للنموذج، بنفس الصيغة التي يقبلهاapply_chat_template. عند تمريرها، يتم تحويل معاملات استدعاء الأدوات باستخدام مخطط JSON للأداة المستدعاة: يصبح"7"هو7لمعامل صحيح، لكنه يبقى"7"لمعامل نصي.
يحوّل سلسلة الإخراج التي تم إنشاؤها عن طريق توليد نص من نموذج إلى قاموس رسائل مُحلَّل.
يُعدّ هذا الأسلوب مخصصًا للاستخدام مع نماذج المحادثة، وسيقرأ خاصية response_template لمُرمِّز الرموز (tokenizer) للتحكم في التحليل، ما لم يتم تمرير حجة schema مباشرة.
يقبل تسلسلاً واحداً أو دفعة. يعيد التسلسل الواحد (سلسلة نصية، أو تسلسل أحادي البعد من معرّفات الرموز) رسالة واحدة مُحلَّلة على شكل dict؛ بينما تعيد الدفعة (قائمة من السلاسل النصية، قائمة من تسلسلات معرّفات الرموز، أو مصفوفة/مصفوفة ثنائية الأبعاد) list من قواميس الرسائل المُحلَّلة، واحدة لكل عنصر.
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
المعاملات
- repo_id (
str) — اسم المستودع الذي تريد دفع مُجزّئك (tokenizer) إليه. يجب أن يحتوي على اسم مؤسستك عند الدفع إلى مؤسسة محددة. - commit_message (
str، اختياري) — الرسالة التي سيتم الالتزام بها أثناء الدفع. ستكون الافتراضية"Upload tokenizer". - commit_description (
str, اختياري) — وصف الالتزام الذي سيتم إنشاؤه - private (
bool، اختياري) — ما إذا كان سيتم جعل المستودع خاصًا. إذا كانNone(الافتراضي)، فسيكون المستودع عامًا ما لم يكن الافتراضي للمنظمة هو الخاص. يتم تجاهل هذه القيمة إذا كان المستودع موجودًا بالفعل. - token (
boolأوstr، اختياري) — الرمز الذي يُستخدم كتفويض حامل HTTP للملفات البعيدة. إذا كانTrue(الافتراضي)، فسيتم استخدام الرمز الذي تم إنشاؤه عند تشغيلhf auth login(المخزَّن في~/.huggingface). - revision (
str، اختياري) — الفرع الذي سيتم دفع الملفات المرفوعة إليه. - create_pr (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم إنشاء طلب سحب (PR) بالملفات المرفوعة أم الالتزام مباشرة. - max_shard_size (
intأوstr، اختياري، القيمة الافتراضية"50GB") — ينطبق على النماذج فقط. الحد الأقصى لحجم نقطة التفتيش قبل تقسيمها إلى أجزاء. ستكون نقاط التفتيش المقسمة كل منها بحجم أقل من هذا الحجم. إذا تم التعبير عنه كنص، فيجب أن يتكون من أرقام تليها وحدة (مثل"5MB"). - tags (
list[str]، اختياري) — قائمة بالوسوم التي سيتم دفعها إلى Hub.
ارفع ملفات مُجزّئ الرموز إلى 🤗 Model Hub.
أمثلة:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")
# Push the tokenizer to your namespace with the name "my-finetuned-bert".
tokenizer.push_to_hub("my-finetuned-bert")
# Push the tokenizer to an organization with the name "my-finetuned-bert".
tokenizer.push_to_hub("huggingface/my-finetuned-bert")register_for_auto_class
< source >( auto_class = 'AutoTokenizer' )
سجّل هذه الفئة مع فئة تلقائية محددة. يجب استخدام هذا فقط لمعالجات الرموز المخصصة، لأن المعالجات الموجودة في المكتبة مُربط مسبقًا مع AutoTokenizer.
save_chat_templates
< source >( save_directory: str | os.PathLiketokenizer_config: dictfilename_prefix: str | Nonesave_jinja_files: bool )
تكتب قوالب المحادثة في مجلد الحفظ إذا كنا نستخدم التنسيق الجديد، وتزيلها من إعدادات المُجزّئ (tokenizer) إذا كانت موجودة. أما إذا كنا نستخدم التنسيق القديم، فلا تكتب أي ملفات، بل تكتب القوالب في إعدادات المُجزّئ بالتنسيق الصحيح.
save_pretrained
< source >( save_directory: str | os.PathLikelegacy_format: bool | None = Nonefilename_prefix: str | None = Nonepush_to_hub: bool = False**kwargs ) → A tuple of str
المعاملات
- save_directory (
strأوos.PathLike) — المسار إلى المجلد الذي سيتم حفظ مُجزّئ النص فيه. - legacy_format (
bool, اختياري) — ينطبق فقط على مُجزِّئ سريع. إذا لم يُضبط (الافتراضي)، فسيتم حفظ المُجزِّئ في تنسيق JSON الموحّد وكذلك في التنسيق القديم إذا كان موجودًا، أي مع مفردات خاصة بالمُجزِّئ وملف added_tokens منفصل.إذا كانت
False، فسيتم حفظ مُجزّئ الرموز (tokenizer) فقط بالتنسيق الموحّد JSON. هذا التنسيق غير متوافق مع مُجزّئات الرموز “البطيئة” (التي لا تعمل بمكتبة tokenizers)، لذا لن يكون بإمكان مُجزّئ الرموز “البطيء” المقابل تحميله.إذا كان
True، سيتم حفظ مُجزّئ النص (tokenizer) بالتنسيق القديم. إذا لم يكن مُجزّئ النص “البطيء” موجودًا، فسيتم رفع خطأ قيمة (value error). - filename_prefix (
str, اختياري) — بادئة تُضاف إلى أسماء الملفات المحفوظة بواسطة مُجزّئ النص. - push_to_hub (
bool، اختياري، الافتراضيFalse) — ما إذا كان سيتم دفع نموذجك إلى مركز نماذج Hugging Face بعد حفظه. يمكنك تحديد المستودع الذي تريد الدفع إليه باستخدامrepo_id(سيكون الافتراضي هو اسمsave_directoryفي نطاقك). - kwargs (
dict[str, Any]، اختياري) — حجج إضافية بأسماء تُمرَّر إلى طريقة push_to_hub().
يعيد
سلسلة من str
الملفات المحفوظة.
احفظ حالة المرمّز الكاملة.
تضمن هذه الطريقة إمكانية إعادة تحميل مُجزِّئ النص الكامل باستخدام طريقة الفئة ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained.
Warning,None لن يحفظ هذا التعديلات التي قد تكون قد طبقتها على مُجزّئ النص بعد إنشاء الكائن (على سبيل المثال، تعديل tokenizer.do_lower_case بعد الإنشاء).
save_vocabulary
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple(str)
احفظ مفردات مُجزّئ النص فقط (المفردات + الرموز المضافة).
لن تحفظ هذه الطريقة إعدادات المرمّز (tokenizer) وخرائط الرموز الخاصة. استخدم _save_pretrained() لحفظ الحالة الكاملة للمرمّز.
tokenize
< source >( text: strpair: str | None = Noneadd_special_tokens: bool = False**kwargs ) → list[str]
المعاملات
- text (
str) — التسلسل المراد ترميزه. - pair (
str، اختياري) — تسلسل ثانٍ ليتم ترميزه مع التسلسل الأول. - add_special_tokens (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إضافة الرموز الخاصة المرتبطة بالنموذج المقابل أم لا. - kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — سيتم تمريرها إلى طريقة الترميز المحددة للنموذج الأساسي. راجع التفاصيل في call()
يعيد
list[str]
قائمة الرموز.
يحوّل سلسلة نصية إلى تسلسل من الرموز، مع استبدال الرموز غير المعروفة بـ unk_token.
التعدادات و namedtuples
فئة transformers.tokenization_utils_base.TruncationStrategy
< source >( valuenames = Nonemodule = Nonequalname = Nonetype = Nonestart = 1boundary = None )
القيم الممكنة لحجة truncation في PreTrainedTokenizerBase.call(). مفيدة لإكمال الأوامر تلقائيًا في
بيئة تطوير متكاملة.
class transformers.CharSpan
< source >( start: ForwardRef('int')end: ForwardRef('int') )
مدى الأحرف في النص الأصلي.
فئة transformers.TokenSpan
< source >( start: ForwardRef('int')end: ForwardRef('int') )
مدى الرمز في سلسلة مشفّرة (قائمة من الرموز).