From d258ad144242931b2f0442c1397837a08ea384a4 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Wed, 11 Dec 2024 00:33:00 +0300 Subject: [PATCH 01/21] Create sequence_classification.md --- .../ar/tasks/sequence_classification.md | 392 ++++++++++++++++++ 1 file changed, 392 insertions(+) create mode 100644 docs/source/ar/tasks/sequence_classification.md diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md new file mode 100644 index 000000000000..2bbe27aee6c1 --- /dev/null +++ b/docs/source/ar/tasks/sequence_classification.md @@ -0,0 +1,392 @@ + + +# تصنيف النص(Text classification) + +[[open-in-colab]] + + + +تصنيف النص هو مهمة NLP شائعة تقوم بتعيين تسمية أو فئة للنص. تقوم بعض أكبر الشركات بتشغيل تصنيف النص في الإنتاج لمجموعة واسعة من التطبيقات العملية. أحد أكثر أشكال تصنيف النص شيوعًا هو تحليل المشاعر، والذي يقوم بتعيين تسمية مثل 🙂 إيجابية، 🙁 سلبية، أو 😐 محايدة لتسلسل نصي. + +سيوضح لك هذا الدليل كيفية: + +1. ضبط [DistilBERT](https://huggingface.co/distilbert/distilbert-base-uncased) على مجموعة بيانات [IMDb](https://huggingface.co/datasets/imdb) لتحديد ما إذا كانت مراجعة الفيلم إيجابية أو سلبية. +2. استخدام نموذج الضبط الدقيق للتنبؤ. + + + +لرؤية جميع البنى ونقاط التفتيش المتوافقة مع هذه المهمة، نوصي بالتحقق من [صفحة المهمة](https://huggingface.co/tasks/text-classification). + + + +قبل أن تبدأ، تأكد من تثبيت جميع المكتبات الضرورية: + +```bash +pip install transformers datasets evaluate accelerate +``` + +نحن نشجعك على تسجيل الدخول إلى حساب Hugging Face الخاص بك حتى تتمكن من تحميل ومشاركة نموذجك مع المجتمع. عند المطالبة، أدخل رمزك لتسجيل الدخول: + +```py +>>> from huggingface_hub import notebook_login + +>>> notebook_login() +``` + +## تحميل مجموعة بيانات IMDb + +ابدأ بتحميل مجموعة بيانات IMDb من مكتبة 🤗 Datasets: + +```py +>>> from datasets import load_dataset + +>>> imdb = load_dataset("imdb") +``` + +ثم ألق نظرة على مثال: + +```py +>>> imdb["test"][0] +{ + "label": 0, + "text": "I love sci-fi and am willing to put up with a lot. Sci-fi movies/TV are usually underfunded, under-appreciated and misunderstood. I tried to like this, I really did, but it is to good TV sci-fi as Babylon 5 is to Star Trek (the original). Silly prosthetics, cheap cardboard sets, stilted dialogues, CG that doesn't match the background, and painfully one-dimensional characters cannot be overcome with a 'sci-fi' setting. (I'm sure there are those of you out there who think Babylon 5 is good sci-fi TV. It's not. It's clichéd and uninspiring.) While US viewers might like emotion and character development, sci-fi is a genre that does not take itself seriously (cf. Star Trek). It may treat important issues, yet not as a serious philosophy. It's really difficult to care about the characters here as they are not simply foolish, just missing a spark of life. Their actions and reactions are wooden and predictable, often painful to watch. The makers of Earth KNOW it's rubbish as they have to always say \"Gene Roddenberry's Earth...\" otherwise people would not continue watching. Roddenberry's ashes must be turning in their orbit as this dull, cheap, poorly edited (watching it without advert breaks really brings this home) trudging Trabant of a show lumbers into space. Spoiler. So, kill off a main character. And then bring him back as another actor. Jeeez! Dallas all over again.", +} +``` + +هناك حقولان في هذه المجموعة من البيانات: + +- `text`: نص مراجعة الفيلم. +- `label`: قيمة إما `0` لمراجعة سلبية أو `1` لمراجعة إيجابية. + +## المعالجة المسبقة(Preprocess) + +الخطوة التالية هي تحميل مجزء النص DistilBERT للمعالجة المسبقة لحقل `text`: + +```py +>>> from transformers import AutoTokenizer + +>>> tokenizer = AutoTokenizer.from_pretrained("distilbert/distilbert-base-uncased") +``` + +قم بإنشاء وظيفة معالجة مسبقة لتجزئة النص للحقل `text`وبتر السلاسل بحيث لا تكون أطول من طول الإدخال الأقصى لـ DistilBERT: + +```py +>>> def preprocess_function(examples): +... return tokenizer(examples["text"], truncation=True) +``` + +لتطبيق وظيفة المعالجة المسبقة على مجموعة البيانات بأكملها، استخدم وظيفة 🤗 Datasets [`~datasets.Dataset.map`] . يمكنك تسريع `map` عن طريق تعيين `batched=True` لمعالجة عناصر متعددة من مجموعة البيانات في وقت واحد: + +```py +tokenized_imdb = imdb.map(preprocess_function, batched=True) +``` + +الآن قم بإنشاء دفعة من الأمثلة باستخدام [`DataCollatorWithPadding`]. من الأكثر كفاءة *الحشو الديناميكي* للجمل إلى الطول الأطول في دفعة أثناء التجميع، بدلاً من حشو كل مجموعة البيانات إلى الطول الأقصى. + + + + +```py +>>> from transformers import DataCollatorWithPadding + +>>> data_collator = DataCollatorWithPadding(tokenizer=tokenizer) +``` + + + +```py +>>> from transformers import DataCollatorWithPadding + +>>> data_collator = DataCollatorWithPadding(tokenizer=tokenizer, return_tensors="tf") +``` + + + +## التقييم(Evaluate) + +غالبًا ما يكون تضمين مقياس أثناء التدريب مفيدًا لتقييم أداء نموذجك. يمكنك تحميل طريقة تقييم بسرعة باستخدام مكتبة 🤗 [Evaluate](https://huggingface.co/docs/evaluate/index) . بالنسبة لهذه المهمة، قم بتحميل مقياس [الدقة](https://huggingface.co/spaces/evaluate-metric/accuracy) (راجع جولة 🤗 Evaluate [السريعة](https://huggingface.co/docs/evaluate/a_quick_tour) لمعرفة المزيد حول كيفية تحميل وحساب مقياس): + +```py +>>> import evaluate + +>>> accuracy = evaluate.load("accuracy") +``` + +ثم قم بإنشاء وظيفة تقوم بتمرير تنبؤاتك وتصنيفاتك إلى [`~evaluate.EvaluationModule.compute`] لحساب الدقة: + +```py +>>> import numpy as np + +>>> def compute_metrics(eval_pred): +... predictions, labels = eval_pred +... predictions = np.argmax(predictions, axis=1) +... return accuracy.compute(predictions=predictions, references=labels) +``` + +وظيفتك `compute_metrics` جاهزة الآن، وستعود إليها عندما تقوم بإعداد تدريبك. + +## التدريب(Train) + +قبل أن تبدأ في تدريب نموذجك، قم بإنشاء خريطة من المعرفات المتوقعة إلى تسمياتها باستخدام `id2label` و `label2id`: + +```py +>>> id2label = {0: "NEGATIVE", 1: "POSITIVE"} +>>> label2id = {"NEGATIVE": 0, "POSITIVE": 1} +``` + + + + + +إذا لم تكن على دراية بضبط نموذج دقيق باستخدام [`Trainer`], فالق نظرة على البرنامج التعليمي الأساسي [هنا](../training#train-with-pytorch-trainer)! + + + +أنت مستعد الآن لبدء تدريب نموذجك! قم بتحميل DistilBERT مع [`AutoModelForSequenceClassification`] جنبًا إلى جنب مع عدد التصنيفات المتوقعة، وتصنيفات الخرائط: + +```py +>>> from transformers import AutoModelForSequenceClassification, TrainingArguments, Trainer + +>>> model = AutoModelForSequenceClassification.from_pretrained( +... "distilbert/distilbert-base-uncased", num_labels=2, id2label=id2label, label2id=label2id +... ) +``` + +في هذه المرحلة، هناك ثلاث خطوات فقط متبقية: + +1. حدد معلمات التدريب الخاصة بك في [`TrainingArguments`]. المعلمة الوحيدة المطلوبة هي `output_dir` والتي تحدد مكان حفظ النموذج الخاص بك. سوف تقوم بدفع هذا النموذج إلى Hub عن طريق تعيين `push_to_hub=True` (يجب أن تكون مسجلاً الدخول إلى Hugging Face لتحميل نموذجك). في نهاية كل حقبة، سيقوم [`Trainer`] بتقييم الدقة وحفظ نقطة تفتيش التدريب. +2. قم بتمرير معاملات التدريب إلى [`Trainer`] جنبًا إلى جنب مع النموذج، ومجموعة البيانات، والمحلل اللغوي، ومجمع البيانات، ووظيفة `compute_metrics`. +3. قم باستدعاء [`~Trainer.train`] لضبط نموذجك الدقيق. + +```py +>>> training_args = TrainingArguments( +... output_dir="my_awesome_model", +... learning_rate=2e-5, +... per_device_train_batch_size=16, +... per_device_eval_batch_size=16, +... num_train_epochs=2, +... weight_decay=0.01, +... eval_strategy="epoch", +... save_strategy="epoch", +... load_best_model_at_end=True, +... push_to_hub=True, +... ) + +>>> trainer = Trainer( +... model=model, +... args=training_args, +... train_dataset=tokenized_imdb["train"], +... eval_dataset=tokenized_imdb["test"], +... processing_class=tokenizer, +... data_collator=data_collator, +... compute_metrics=compute_metrics, +... ) + +>>> trainer.train() +``` + + + +يطبق [`Trainer`] الحشو الديناميكي بشكل افتراضي عند تمرير `tokenizer` إليه. في هذه الحالة، لا تحتاج إلى تحديد مجمع بيانات بشكل صريح. + + + +بمجرد اكتمال التدريب، شارك نموذجك على Hub باستخدام طريقة [`~transformers.Trainer.push_to_hub`] حتى يتمكن الجميع من استخدام نموذجك: + +```py +>>> trainer.push_to_hub() +``` + + + + +إذا لم تكن على دراية بضبط نموذج باستخدام Keras، قم بالاطلاع على البرنامج التعليمي الأساسي [هنا](../training#train-a-tensorflow-model-with-keras)! + + +لضبط نموذج في TensorFlow، ابدأ بإعداد دالة المحسن، وجدول معدل التعلم، وبعض معلمات التدريب: + +```py +>>> from transformers import create_optimizer +>>> import tensorflow as tf + +>>> batch_size = 16 +>>> num_epochs = 5 +>>> batches_per_epoch = len(tokenized_imdb["train"]) // batch_size +>>> total_train_steps = int(batches_per_epoch * num_epochs) +>>> optimizer, schedule = create_optimizer(init_lr=2e-5, num_warmup_steps=0, num_train_steps=total_train_steps) +``` + +ثم يمكنك تحميل DistilBERT مع [`TFAutoModelForSequenceClassification`] جنبًا إلى جنب مع عدد التصنيفات المتوقعة، وخرائط التصنيف: + +```py +>>> from transformers import TFAutoModelForSequenceClassification + +>>> model = TFAutoModelForSequenceClassification.from_pretrained( +... "distilbert/distilbert-base-uncased", num_labels=2, id2label=id2label, label2id=label2id +... ) +``` + +قم بتحويل مجموعات بياناتك إلى تنسيق `tf.data.Dataset` باستخدام [`~transformers.TFPreTrainedModel.prepare_tf_dataset`]: + +```py +>>> tf_train_set = model.prepare_tf_dataset( +... tokenized_imdb["train"], +... shuffle=True, +... batch_size=16, +... collate_fn=data_collator, +... ) + +>>> tf_validation_set = model.prepare_tf_dataset( +... tokenized_imdb["test"], +... shuffle=False, +... batch_size=16, +... collate_fn=data_collator, +... ) +``` + +قم بتهيئة النموذج للتدريب باستخدام [`compile`](https://keras.io/api/models/model_training_apis/#compile-method). لاحظ أن جميع نماذج Transformers لديها دالة خسارة ذات صلة بالمهمة بشكل افتراضي، لذلك لا تحتاج إلى تحديد واحدة ما لم ترغب في ذلك: + +```py +>>> import tensorflow as tf + +>>> model.compile(optimizer=optimizer) # No loss argument! +``` + +آخر أمرين يجب إعدادهما قبل بدء التدريب هو حساب الدقة من التوقعات، وتوفير طريقة لدفع نموذجك إلى Hub. يتم ذلك باستخدام [Keras callbacks](../main_classes/keras_callbacks). + +قم بتمرير دالة `compute_metrics` الخاصة بك إلى [`~transformers.KerasMetricCallback`]: + +```py +>>> from transformers.keras_callbacks import KerasMetricCallback + +>>> metric_callback = KerasMetricCallback(metric_fn=compute_metrics, eval_dataset=tf_validation_set) +``` + +حدد مكان دفع نموذجك والمجزئ اللغوي في [`~transformers.PushToHubCallback`]: + +```py +>>> from transformers.keras_callbacks import PushToHubCallback + +>>> push_to_hub_callback = PushToHubCallback( +... output_dir="my_awesome_model", +... tokenizer=tokenizer, +... ) +``` + +ثم اربط استدعاءاتك معًا: + +```py +>>> callbacks = [metric_callback, push_to_hub_callback] +``` + +أخيرًا، أنت مستعد لبدء تدريب نموذجك! قم باستدعاء [`fit`](https://keras.io/api/models/model_training_apis/#fit-method) مع مجموعات بيانات التدريب والتحقق، وعدد الحقبات، واستدعاءاتك لضبط النموذج: + +```py +>>> model.fit(x=tf_train_set, validation_data=tf_validation_set, epochs=3, callbacks=callbacks) +``` + +بمجرد اكتمال التدريب، يتم تحميل نموذجك تلقائيًا إلى Hub حتى يتمكن الجميع من استخدامه! + + + + + +للحصول على مثال أكثر عمقًا حول كيفية ضبط نموذج لتصنيف النصوص، قم بالاطلاع على الدفتر المقابل +[دفتر PyTorch](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/text_classification.ipynb) +أو [دفتر TensorFlow](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/text_classification-tf.ipynb). + + + +## الاستدلال(Inference) + +رائع، الآن بعد أن قمت بضبط نموذج، يمكنك استخدامه للاستدلال! + +احصل على بعض النصوص التي ترغب في إجراء الاستدلال عليها: + +```py +>>> text = "This was a masterpiece. Not completely faithful to the books, but enthralling from beginning to end. Might be my favorite of the three." +``` + +أسهل طريقة لتجربة نموذجك المضبوط للاستدلال هي استخدامه في [`pipeline`]. قم بتنفيذ `pipeline` لتحليل المشاعر مع نموذجك، ومرر نصك إليه: + +```py +>>> from transformers import pipeline + +>>> classifier = pipeline("sentiment-analysis", model="stevhliu/my_awesome_model") +>>> classifier(text) +[{'label': 'POSITIVE', 'score': 0.9994940757751465}] +``` + +يمكنك أيضًا تكرار نتائج `pipeline` يدويًا إذا أردت: + + + +قم يتجزئة النص وإرجاع تنسورات PyTorch: + +```py +>>> from transformers import AutoTokenizer + +>>> tokenizer = AutoTokenizer.from_pretrained("stevhliu/my_awesome_model") +>>> inputs = tokenizer(text, return_tensors="pt") +``` + +قم بتمرير مدخلاتك إلى النموذج وإرجاع `logits`: + +```py +>>> from transformers import AutoModelForSequenceClassification + +>>> model = AutoModelForSequenceClassification.from_pretrained("stevhliu/my_awesome_model") +>>> with torch.no_grad(): +... logits = model(**inputs).logits +``` + +احصل على الفئة ذات أعلى احتمال، واستخدم خريطة `id2label` الخاصة بالنموذج لتحويلها إلى تصنيف نصي: + +```py +>>> predicted_class_id = logits.argmax().item() +>>> model.config.id2label[predicted_class_id] +'POSITIVE' +``` + + +قم بتحليل النص وإرجاع تنسيقات TensorFlow: + +```py +>>> from transformers import AutoTokenizer + +>>> tokenizer = AutoTokenizer.from_pretrained("stevhliu/my_awesome_model") +>>> inputs = tokenizer(text, return_tensors="tf") +``` + +قم بتمرير مدخلاتك إلى النموذج وإرجاع `logits`: + +```py +>>> from transformers import TFAutoModelForSequenceClassification + +>>> model = TFAutoModelForSequenceClassification.from_pretrained("stevhliu/my_awesome_model") +>>> logits = model(**inputs).logits +``` + +احصل على الفئة ذات أعلى احتمال، واستخدم خريطة `id2label` الخاصة بالنموذج لتحويلها إلى تصنيف نصي: + +```py +>>> predicted_class_id = int(tf.math.argmax(logits, axis=-1)[0]) +>>> model.config.id2label[predicted_class_id] +'POSITIVE' +``` + + From 68fc5f6afffe3dde307a73ff25864691ac01b230 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Wed, 11 Dec 2024 00:35:35 +0300 Subject: [PATCH 02/21] Update _toctree.yml Add tasks/sequence_classification --- docs/source/ar/_toctree.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/source/ar/_toctree.yml b/docs/source/ar/_toctree.yml index 138d3a1bd8aa..13e05d9c75fa 100644 --- a/docs/source/ar/_toctree.yml +++ b/docs/source/ar/_toctree.yml @@ -30,11 +30,11 @@ - local: conversations title: الدردشة مع المحولات title: البرامج التعليمية -# - sections: -# - isExpanded: false -# sections: -# - local: tasks/sequence_classification -# title: تصنيف النصوص +- sections: + - isExpanded: false + sections: + - local: tasks/sequence_classification + title: تصنيف النصوص # - local: tasks/token_classification # title: تصنيف الرموز # - local: tasks/question_answering @@ -49,7 +49,7 @@ # title: التلخيص # - local: tasks/multiple_choice # title: الاختيار المتعدد -# title: معالجة اللغات الطبيعية + title: معالجة اللغات الطبيعية # - isExpanded: false # sections: # - local: tasks/audio_classification @@ -107,7 +107,7 @@ # - local: tasks/prompting # title: دليل إرشادي لمحفزات النماذج اللغوية الكبيرة # title: الإرشاد -# title: أدلة المهام + title: أدلة المهام - sections: - local: fast_tokenizers title: استخدم مجزئيات النصوص السريعة من 🤗 Tokenizers From 957b9689aaa07df98c96a965903c43c3ec012c0b Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:00:32 +0300 Subject: [PATCH 03/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- .../ar/tasks/sequence_classification.md | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 2bbe27aee6c1..07dfbef09763 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -1,17 +1,12 @@ - # تصنيف النص(Text classification) From 3f6e689262a6f2972c8985fbf18be0fd215db557 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:00:51 +0300 Subject: [PATCH 04/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 07dfbef09763..5e10d5925cdb 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -15,7 +15,7 @@ rendered properly in your Markdown viewer. -تصنيف النص هو مهمة NLP شائعة تقوم بتعيين تسمية أو فئة للنص. تقوم بعض أكبر الشركات بتشغيل تصنيف النص في الإنتاج لمجموعة واسعة من التطبيقات العملية. أحد أكثر أشكال تصنيف النص شيوعًا هو تحليل المشاعر، والذي يقوم بتعيين تسمية مثل 🙂 إيجابية، 🙁 سلبية، أو 😐 محايدة لتسلسل نصي. +تصنيف النص هو مهمة NLP شائعة حيث يُعيّن تصنيفًا أو فئة للنص. تستخدم بعض أكبر الشركات تصنيف النصوص في الإنتاج لمجموعة واسعة من التطبيقات العملية. أحد أكثر أشكال تصنيف النص شيوعًا هو تحليل المشاعر، والذي يقوم بتعيين تسمية مثل 🙂 إيجابية، 🙁 سلبية، أو 😐 محايدة لتسلسل نصي. سيوضح لك هذا الدليل كيفية: From c6d38d0c7cfc49cc129403f147ef996262be0b10 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:01:03 +0300 Subject: [PATCH 05/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 5e10d5925cdb..ffcdd57030d0 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -24,7 +24,7 @@ rendered properly in your Markdown viewer. -لرؤية جميع البنى ونقاط التفتيش المتوافقة مع هذه المهمة، نوصي بالتحقق من [صفحة المهمة](https://huggingface.co/tasks/text-classification). +لرؤية جميع البنى ونقاط التحقق المتوافقة مع هذه المهمة، نوصي بالتحقق من [صفحة المهمة](https://huggingface.co/tasks/text-classification). From 8997520b002e870c171ba6623e4a6bb1c7134e85 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:01:18 +0300 Subject: [PATCH 06/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index ffcdd57030d0..a1a4410f3c96 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -69,7 +69,7 @@ pip install transformers datasets evaluate accelerate ## المعالجة المسبقة(Preprocess) -الخطوة التالية هي تحميل مجزء النص DistilBERT للمعالجة المسبقة لحقل `text`: +الخطوة التالية هي تحميل المُجزِّئ النص DistilBERT لتهيئة لحقل `text`: ```py >>> from transformers import AutoTokenizer From 7900cec1beebe220cdb59f77821d4a08374f777a Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:01:31 +0300 Subject: [PATCH 07/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index a1a4410f3c96..5487b4ddc77e 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -77,7 +77,7 @@ pip install transformers datasets evaluate accelerate >>> tokenizer = AutoTokenizer.from_pretrained("distilbert/distilbert-base-uncased") ``` -قم بإنشاء وظيفة معالجة مسبقة لتجزئة النص للحقل `text`وبتر السلاسل بحيث لا تكون أطول من طول الإدخال الأقصى لـ DistilBERT: +أنشئ دالة لتهيئة حقل `text` وتقصير السلاسل النصية بحيث لا يتجاوز طولها الحد الأقصى لإدخالات DistilBERT: ```py >>> def preprocess_function(examples): From 35215d0eec35b654fdd2f3ddf56b8c373a89e2f0 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:01:54 +0300 Subject: [PATCH 08/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 5487b4ddc77e..135292a193f4 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -84,7 +84,7 @@ pip install transformers datasets evaluate accelerate ... return tokenizer(examples["text"], truncation=True) ``` -لتطبيق وظيفة المعالجة المسبقة على مجموعة البيانات بأكملها، استخدم وظيفة 🤗 Datasets [`~datasets.Dataset.map`] . يمكنك تسريع `map` عن طريق تعيين `batched=True` لمعالجة عناصر متعددة من مجموعة البيانات في وقت واحد: +لتطبيق دالة التهيئة على مجموعة البيانات بأكملها، استخدم دالة 🤗 Datasets [`~datasets.Dataset.map`] . يمكنك تسريع `map` باستخدام `batched=True` لمعالجة دفعات من البيانات: ```py tokenized_imdb = imdb.map(preprocess_function, batched=True) From 752ee943e5fe5a7bf20f683d2fb71357b0efff25 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:02:45 +0300 Subject: [PATCH 09/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 135292a193f4..cf4f7010aa94 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -90,7 +90,7 @@ pip install transformers datasets evaluate accelerate tokenized_imdb = imdb.map(preprocess_function, batched=True) ``` -الآن قم بإنشاء دفعة من الأمثلة باستخدام [`DataCollatorWithPadding`]. من الأكثر كفاءة *الحشو الديناميكي* للجمل إلى الطول الأطول في دفعة أثناء التجميع، بدلاً من حشو كل مجموعة البيانات إلى الطول الأقصى. +الآن قم بإنشاء دفعة من الأمثلة باستخدام [`DataCollatorWithPadding`]. الأكثر كفاءة هو استخدام الحشو الديناميكي لجعل الجمل متساوية في الطول داخل كل دفعة، بدلًا من حشو كامل البيانات إلى الحد الأقصى للطول. From 4dd66d7d3b280d5b5b5fccd9d23a058fe1b223af Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:03:12 +0300 Subject: [PATCH 10/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index cf4f7010aa94..5b8f95b658c7 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -113,7 +113,7 @@ tokenized_imdb = imdb.map(preprocess_function, batched=True) ## التقييم(Evaluate) -غالبًا ما يكون تضمين مقياس أثناء التدريب مفيدًا لتقييم أداء نموذجك. يمكنك تحميل طريقة تقييم بسرعة باستخدام مكتبة 🤗 [Evaluate](https://huggingface.co/docs/evaluate/index) . بالنسبة لهذه المهمة، قم بتحميل مقياس [الدقة](https://huggingface.co/spaces/evaluate-metric/accuracy) (راجع جولة 🤗 Evaluate [السريعة](https://huggingface.co/docs/evaluate/a_quick_tour) لمعرفة المزيد حول كيفية تحميل وحساب مقياس): +يُعدّ تضمين مقياس أثناء التدريب مفيدًا لتقييم أداء النموذج. يمكنك تحميل طريقة تقييم بسرعة باستخدام مكتبة 🤗 [Evaluate](https://huggingface.co/docs/evaluate/index) . بالنسبة لهذه المهمة، قم بتحميل مقياس [الدقة](https://huggingface.co/spaces/evaluate-metric/accuracy) (راجع جولة 🤗 Evaluate [السريعة](https://huggingface.co/docs/evaluate/a_quick_tour) لمعرفة المزيد حول كيفية تحميل وحساب مقياس): ```py >>> import evaluate From ff0ce63327ac6e37b605c22b4758de13032fad5d Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:03:33 +0300 Subject: [PATCH 11/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 5b8f95b658c7..ae29f467c3d2 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -121,7 +121,7 @@ tokenized_imdb = imdb.map(preprocess_function, batched=True) >>> accuracy = evaluate.load("accuracy") ``` -ثم قم بإنشاء وظيفة تقوم بتمرير تنبؤاتك وتصنيفاتك إلى [`~evaluate.EvaluationModule.compute`] لحساب الدقة: +ثم أنشئ دالة تقوم بتمرير تنبؤاتك وتصنيفاتك إلى [`~evaluate.EvaluationModule.compute`] لحساب الدقة: ```py >>> import numpy as np From 760b8118cd1ef0da403cf032e5753715c0f53ac6 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:03:55 +0300 Subject: [PATCH 12/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index ae29f467c3d2..22c56655fc3f 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -132,7 +132,7 @@ tokenized_imdb = imdb.map(preprocess_function, batched=True) ... return accuracy.compute(predictions=predictions, references=labels) ``` -وظيفتك `compute_metrics` جاهزة الآن، وستعود إليها عندما تقوم بإعداد تدريبك. +دالة `compute_metrics` جاهزة الآن، وستعود إليها عند إعداد التدريب. ## التدريب(Train) From 437a67a25d9455cdc68a387eb9e15d06509ef4cb Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:04:16 +0300 Subject: [PATCH 13/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 22c56655fc3f..f71cf1f2c6f7 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -163,9 +163,9 @@ tokenized_imdb = imdb.map(preprocess_function, batched=True) في هذه المرحلة، هناك ثلاث خطوات فقط متبقية: -1. حدد معلمات التدريب الخاصة بك في [`TrainingArguments`]. المعلمة الوحيدة المطلوبة هي `output_dir` والتي تحدد مكان حفظ النموذج الخاص بك. سوف تقوم بدفع هذا النموذج إلى Hub عن طريق تعيين `push_to_hub=True` (يجب أن تكون مسجلاً الدخول إلى Hugging Face لتحميل نموذجك). في نهاية كل حقبة، سيقوم [`Trainer`] بتقييم الدقة وحفظ نقطة تفتيش التدريب. -2. قم بتمرير معاملات التدريب إلى [`Trainer`] جنبًا إلى جنب مع النموذج، ومجموعة البيانات، والمحلل اللغوي، ومجمع البيانات، ووظيفة `compute_metrics`. -3. قم باستدعاء [`~Trainer.train`] لضبط نموذجك الدقيق. +1. حدد مُعامِلات التدريب في [`TrainingArguments`]. المُعامل المطلوب الوحيد هو `output_dir`، لتحديد مكان حفظ النموذج. يمكنك رفع النموذج إلى Hub بتعيين `push_to_hub=True` (يجب تسجيل الدخول إلى Hugging Face لرفع النموذج). سيقوم `Trainer` بتقييم الدقة وحفظ نقاط التحقق في نهاية كل حقبة. +2. مرر مُعامِلات التدريب إلى `Trainer` مع النموذج، ومجموعة البيانات، والمحلل اللغوي، ومُجمِّع البيانات، ووظيفة `compute_metrics`. +3. استدعِ [`~Trainer.train`] لضبط النموذج. ```py >>> training_args = TrainingArguments( From e68d4f989e5bb190c1baffeb2ad97ea424acc28e Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:04:39 +0300 Subject: [PATCH 14/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index f71cf1f2c6f7..12004bdc036f 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -196,7 +196,7 @@ tokenized_imdb = imdb.map(preprocess_function, batched=True) -يطبق [`Trainer`] الحشو الديناميكي بشكل افتراضي عند تمرير `tokenizer` إليه. في هذه الحالة، لا تحتاج إلى تحديد مجمع بيانات بشكل صريح. +يستخدم [`Trainer`] الحشو الديناميكي افتراضيًا عند تمرير `tokenizer` إليه. في هذه الحالة، لا تحتاج لتحديد مُجمِّع البيانات صراحةً. From 2cc7ef28b277c2409820e8f283ef60d80bb9f823 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:04:57 +0300 Subject: [PATCH 15/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 12004bdc036f..1f63a8360908 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -200,7 +200,7 @@ tokenized_imdb = imdb.map(preprocess_function, batched=True) -بمجرد اكتمال التدريب، شارك نموذجك على Hub باستخدام طريقة [`~transformers.Trainer.push_to_hub`] حتى يتمكن الجميع من استخدام نموذجك: +بعد اكتمال التدريب، شارك نموذجك على Hub باستخدام الطريقة [`~transformers.Trainer.push_to_hub`] ليستخدمه الجميع: ```py >>> trainer.push_to_hub() From 5911cf0ef537597572be9435b8ae24c01d188935 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:05:44 +0300 Subject: [PATCH 16/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 1f63a8360908..7a9d2a828af0 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -225,7 +225,7 @@ tokenized_imdb = imdb.map(preprocess_function, batched=True) >>> optimizer, schedule = create_optimizer(init_lr=2e-5, num_warmup_steps=0, num_train_steps=total_train_steps) ``` -ثم يمكنك تحميل DistilBERT مع [`TFAutoModelForSequenceClassification`] جنبًا إلى جنب مع عدد التصنيفات المتوقعة، وخرائط التصنيف: +ثم يمكنك تحميل DistilBERT مع [`TFAutoModelForSequenceClassification`] بالإضافة إلى عدد التصنيفات المتوقعة، وتعيينات التسميات: ```py >>> from transformers import TFAutoModelForSequenceClassification From 34bfa048123e21e6113f66d898e741d150e01459 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:06:06 +0300 Subject: [PATCH 17/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 7a9d2a828af0..9985ccefa672 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -282,7 +282,7 @@ tokenized_imdb = imdb.map(preprocess_function, batched=True) ... ) ``` -ثم اربط استدعاءاتك معًا: +ثم اجمع الاستدعاءات معًا: ```py >>> callbacks = [metric_callback, push_to_hub_callback] From 5d5a4840d19babb8f9f8ce56bf27c645471e17a1 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:06:24 +0300 Subject: [PATCH 18/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 9985ccefa672..20db483ae8f1 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -316,7 +316,7 @@ tokenized_imdb = imdb.map(preprocess_function, batched=True) >>> text = "This was a masterpiece. Not completely faithful to the books, but enthralling from beginning to end. Might be my favorite of the three." ``` -أسهل طريقة لتجربة نموذجك المضبوط للاستدلال هي استخدامه في [`pipeline`]. قم بتنفيذ `pipeline` لتحليل المشاعر مع نموذجك، ومرر نصك إليه: +أسهل طريقة لتجربة النموذج المضبوط للاستدلال هي استخدامه ضمن [`pipeline`]. قم بإنشاء `pipeline` لتحليل المشاعر مع نموذجك، ومرر نصك إليه: ```py >>> from transformers import pipeline From e9f22562b6b551861dfe2a526a9ef0a558e25e0f Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:06:36 +0300 Subject: [PATCH 19/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 20db483ae8f1..5de32abc46d7 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -339,7 +339,7 @@ tokenized_imdb = imdb.map(preprocess_function, batched=True) >>> inputs = tokenizer(text, return_tensors="pt") ``` -قم بتمرير مدخلاتك إلى النموذج وإرجاع `logits`: +مرر المدخلات إلى النموذج واسترجع `logits`: ```py >>> from transformers import AutoModelForSequenceClassification From a44d7d53343d66cda5c4fb66e5e666508b6bc8c3 Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:06:45 +0300 Subject: [PATCH 20/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 5de32abc46d7..526d01203004 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -349,7 +349,7 @@ tokenized_imdb = imdb.map(preprocess_function, batched=True) ... logits = model(**inputs).logits ``` -احصل على الفئة ذات أعلى احتمال، واستخدم خريطة `id2label` الخاصة بالنموذج لتحويلها إلى تصنيف نصي: +استخرج الفئة ذات الاحتمالية الأعلى، واستخدم `id2label` لتحويلها إلى تصنيف نصي: ```py >>> predicted_class_id = logits.argmax().item() From 3ed3bb41b8f09cc5bb749c1cea0a28e1bcc03f7c Mon Sep 17 00:00:00 2001 From: Ahmed Almaghz <53489256+AhmedAlmaghz@users.noreply.github.com> Date: Sat, 18 Jan 2025 03:06:57 +0300 Subject: [PATCH 21/21] Update docs/source/ar/tasks/sequence_classification.md Co-authored-by: Abdullah Mohammed <554032+abodacs@users.noreply.github.com> --- docs/source/ar/tasks/sequence_classification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/ar/tasks/sequence_classification.md b/docs/source/ar/tasks/sequence_classification.md index 526d01203004..a98964957b47 100644 --- a/docs/source/ar/tasks/sequence_classification.md +++ b/docs/source/ar/tasks/sequence_classification.md @@ -376,7 +376,7 @@ tokenized_imdb = imdb.map(preprocess_function, batched=True) >>> logits = model(**inputs).logits ``` -احصل على الفئة ذات أعلى احتمال، واستخدم خريطة `id2label` الخاصة بالنموذج لتحويلها إلى تصنيف نصي: +استخرج الفئة ذات الاحتمالية الأعلى، واستخدم `id2label` لتحويلها إلى تصنيف نصي: ```py >>> predicted_class_id = int(tf.math.argmax(logits, axis=-1)[0])