تصنيف النصوص
Text Classification
خط عمل كامل لتصنيف المستندات: البيانات، والتمثيل، والنموذج، والتقييم، والمقارنة بين الأساليب.
أنواع المسائل
| النوع | المخرج | التنشيط/الخسارة |
|---|---|---|
| ثنائي | فئة من اثنتين | Sigmoid + BCE |
| متعدد الفئات | فئة واحدة من K | Softmax + Cross-Entropy |
| متعدد التسميات | مجموعة فئات | Sigmoid لكل فئة + BCE |
خط العمل
- تعريف الفئات بدقة وكتابة دليل تسمية.
- جمع البيانات وتسميتها وقياس اتفاق المسمّين.
- تقسيم البيانات (مع إزالة المكررات).
- خط أساس: TF-IDF + LinearSVC أو انحدار لوجستي.
- نموذج مدرب مسبقاً بالضبط الدقيق.
- تقييم ومقارنة وتحليل أخطاء.
خط الأساس
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import LinearSVC
from sklearn.pipeline import make_pipeline
from sklearn.metrics import classification_report
cats = ["sci.med", "sci.space", "rec.autos", "comp.graphics"]
train = fetch_20newsgroups(subset="train", categories=cats, remove=("headers", "footers", "quotes"))
test = fetch_20newsgroups(subset="test", categories=cats, remove=("headers", "footers", "quotes"))
clf = make_pipeline(TfidfVectorizer(ngram_range=(1, 2), min_df=2, sublinear_tf=True), LinearSVC())
clf.fit(train.data, train.target)
print(classification_report(test.target, clf.predict(test.data), target_names=test.target_names))خيار remove يحذف الترويسات التي قد تكشف الفئة بشكل زائف، وهو مثال على تجنب الاختصارات.
التصنيف دون أمثلة
from transformers import pipeline
zsc = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")
print(zsc("The new GPU doubles training speed.", candidate_labels=["technology", "sports", "health"]))مفيد للنماذج الأولية حين لا تتوفر بيانات موسومة، لكنه أقل دقة عادة من نموذج مضبوط على بيانات المهمة. لهذا النموذج تحديداً تكون النصوص والفئات بالإنجليزية؛ للعربية اختر نموذجاً متعدد اللغات مناسباً.
اختيار النهج
| الموقف | التوصية |
|---|---|
| بيانات قليلة، موارد محدودة | TF-IDF + نموذج خطي |
| بيانات متوسطة، دقة مهمة | ضبط نموذج مشفر (AraBERT وأمثاله) |
| لا بيانات موسومة | تصنيف دون أمثلة أو نموذج لغوي كبير، ثم جمع بيانات |
مصطلحات الدرس
- التصنيف دون أمثلة Zero-shot Classification
- تصنيف النصوص إلى فئات لم يُدرب عليها النموذج صراحة، اعتماداً على فهمه العام لأسماء الفئات أو أوصافها.
- التصنيف متعدد التسميات Multi-label Classification
- تصنيف يمكن فيه أن ينتمي المستند إلى أكثر من فئة في الوقت نفسه.
الملخص
تصنيف النصوص يسند فئة أو أكثر لمستند، ومن أمثلته تصنيف الأخبار حسب الموضوع وتصفية الرسائل المزعجة وتوجيه طلبات الدعم. قد يكون ثنائياً أو متعدد الفئات أو متعدد التسميات. يمر خط العمل بجمع البيانات وتسميتها، والتمثيل (TF-IDF أو التضمينات أو المحوّلات)، والتدريب، والتقييم بمقاييس مناسبة. المقارنة بين خط أساس كلاسيكي ونموذج مدرب مسبقاً ضرورية لتبرير التعقيد.
أسئلة مراجعة
-
ما الفرق بين التصنيف متعدد الفئات ومتعدد التسميات؟
في متعدد الفئات ينتمي المستند لفئة واحدة من عدة فئات، وفي متعدد التسميات قد ينتمي لعدة فئات معاً.
-
أي دالة تنشيط وخسارة تناسب المخرج متعدد التسميات؟
Sigmoid لكل فئة مع Binary Cross-Entropy، بدلاً من Softmax.
المصادر والمراجع
إكمال الدرس
أكملت كل دروس المسار! يمكنك الآن طلب شهادة إكمال المسار.
اطلب الشهادة