0Pricing
Learn AI with Python · درس

تصنيف النصوص باستخدام BERT

‏HuggingFace transformers وAutoTokenizer وAutoModelForSequenceClassification والضبط الدقيق

تصنيف النصوص باستخدام BERT درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

حدود التضمينات الثابتة

يمنح Word2Vec وGloVe كل كلمة متجهًا ثابتًا واحدًا. لكن كلمة "bank" تحمل معاني مختلفة في العبارتين "river bank" و"savings bank". وتعالج النماذج السياقية مثل BERT هذه المشكلة.

ما هو BERT

يُعد BERT نموذجًا من نماذج المحوِّلات، يقرأ الجملة بأكملها دفعةً واحدة وينتج تضمينات واعية بالسياق. وبما أنه مدرَّب مسبقًا على كميات هائلة من النصوص، يمكن ضبطه بدقة لمهام مثل التصنيف.

مكتبة transformers من Hugging Face

تتيح مكتبة transformers الوصول بسهولة إلى BERT وآلاف النماذج المدرَّبة مسبقًا، مع فئات متسقة لبرامج ترميز الرموز والنماذج.

from transformers import AutoTokenizer, AutoModelForSequenceClassification

name = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(name)
model = AutoModelForSequenceClassification.from_pretrained(name)

AutoTokenizer

تُحمّل AutoTokenizer أداة الترميز الصحيحة للنموذج. وهي تقسّم النص إلى رموز فرعية وتحوّلها إلى المعرّفات التي يتوقعها النموذج.

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
print(tokenizer.tokenize("unbelievable"))
# subwords like ["un", "##bel", "##ievable"]

AutoModelForSequenceClassification

تُحمّل AutoModelForSequenceClassification نموذج BERT مع رأس تصنيف في أعلاه، وتُخرج درجة واحدة لكل فئة في التسلسل بأكمله.

from transformers import AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained(
    "distilbert-base-uncased-finetuned-sst-2-english"
)

ترميز المدخلات

استدعوا أداة الترميز على النص باستخدام truncation وpadding وreturn_tensors للحصول على موترات جاهزة للنموذج. يحدّ اقتطاع النصوص من طول المدخلات الكبيرة، بينما يساوي الحشو أطوال العناصر داخل الدفعة.

inputs = tokenizer(
    "This movie was fantastic!",
    truncation=True,
    padding=True,
    return_tensors="pt",
)
print(inputs["input_ids"].shape)

الرموز الخاصة

يضيف BERT رموزًا خاصة تلقائيًا: [CLS] في البداية (تلخّص حالته المخفية التسلسل) و[SEP] بين الجمل أو بعدها. ويقرأ المصنّف تمثيل [CLS].

تشغيل النموذج

مرّروا المدخلات المرمّزة إلى النموذج للحصول على logits، وهي درجات الفئات الخام غير المطبَّعة.

import torch

with torch.no_grad():
    outputs = model(**inputs)
logits = outputs.logits
print(logits)

من Logits إلى التنبؤات

طبّقوا softmax على logits للحصول على الاحتمالات، ثم argmax للحصول على فهرس الفئة المتوقعة. بعد ذلك اربطوا هذا الفهرس بتسمية.

import torch

probs = torch.softmax(logits, dim=-1)
pred = torch.argmax(probs, dim=-1).item()
print(model.config.id2label[pred])

الضبط الدقيق لمهمتكم

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

from transformers import Trainer, TrainingArguments

args = TrainingArguments(output_dir="out", num_train_epochs=3)
trainer = Trainer(model=model, args=args, train_dataset=train_ds)
trainer.train()

الاختصار pipeline

للاستدلال السريع، يغلّف المساعد pipeline عمليات الترميز والتشغيل وفك الترميز في استدعاء واحد، مما يجعله مثاليًا لإنشاء النماذج الأولية.

from transformers import pipeline

clf = pipeline("sentiment-analysis")
print(clf("I love this product!"))
# [{"label": "POSITIVE", "score": 0.99...}]

تحقق سريع

اختبروا معرفتكم بـ BERT.

خلاصة

الخلاصة: ينتج BERT تضمينات واعية بالسياق باستخدام المحوِّلات. استخدموا AutoTokenizer لترميز النص باستخدام truncation/padding/return_tensors، واستخدموا AutoModelForSequenceClassification للحصول على logits. حوّلوا logits باستخدام softmax ثم argmax. أجروا الضبط الدقيق باستخدام Trainer، أو أنشئوا نموذجًا أوليًا سريعًا باستخدام pipeline.

الأسئلة الشائعة

هل درس «تصنيف النصوص باستخدام BERT» مجاني؟

نعم — نص درس «تصنيف النصوص باستخدام BERT» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «تصنيف النصوص باستخدام BERT»؟

‏HuggingFace transformers وAutoTokenizer وAutoModelForSequenceClassification والضبط الدقيق تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «تصنيف النصوص باستخدام BERT»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ‏Word2Vec: ‏Skip-gram وCBOW
  2. تضمينات GloVe وFastText
  3. تصنيف النصوص باستخدام BERT
  4. التشابه الدلالي وتضمينات الجمل
← العودة إلى Learn AI with Python