معالجة اللغات الطبيعية مبتدئ · Beginner 12 دقيقة

TF-IDF

وزن الكلمات بأهميتها: تكرارها في المستند مقابل ندرتها في المجموعة.

تقدّمك في المسار0%

الصيغة

$$\text{tfidf}(t, d) = \text{tf}(t, d) \times \text{idf}(t), \qquad \text{idf}(t) = \log\frac{N}{\text{df}(t)}$$

حيث \(N\) عدد المستندات و\(\text{df}(t)\) عدد المستندات التي تحتوي الكلمة.

في scikit-learn الصيغة الافتراضية منعَّمة:

$$\text{idf}(t) = \ln\frac{1 + N}{1 + \text{df}(t)} + 1$$

مثال: بحث بسيط

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

docs = ["مقدمة في تعلم الآلة والانحدار الخطي",
        "الشبكات العصبية الالتفافية لتصنيف الصور",
        "تحليل المشاعر في النصوص العربية",
        "تقييم نماذج تعلم الآلة والتحقق المتقاطع"]
vec = TfidfVectorizer()
D = vec.fit_transform(docs)
q = vec.transform(["تعلم الآلة"])
scores = cosine_similarity(q, D).ravel()
for i in scores.argsort()[::-1]:
    print(round(scores[i], 3), docs[i])

تصنيف النصوص

TF-IDF مع الانحدار اللوجستي أو SVM الخطي خط أساس قوي جداً لتصنيف النصوص، وغالباً يصعب التفوق عليه بفارق كبير في البيانات الصغيرة دون نماذج مدربة مسبقاً.

خيارات مفيدة

  • ngram_range=(1, 2): إضافة الأزواج.
  • analyzer="char_wb", ngram_range=(2, 5): n-grams حرفية، مفيدة للعربية واللهجات والأخطاء الإملائية.
  • sublinear_tf=True: استخدام \(1 + \log(\text{tf})\) لتخفيف أثر التكرار الكبير.
  • min_df وmax_df: حذف الكلمات النادرة جداً أو الشائعة جداً.

الحدود

مثل BoW، لا يلتقط الترادف ولا السياق: «سيارة» و«مركبة» لا تشابه بينهما في TF-IDF. هذا ما تعالجه التضمينات في المستوى التالي.

مصطلحات الدرس

تشابه جيب التمام Cosine Similarity
جيب تمام الزاوية بين متجهين، ويقيس تشابه اتجاههما بغض النظر عن طولهما.
تكرار المصطلح Term Frequency
عدد مرات ظهور الكلمة في المستند، أو نسبة ذلك إلى طول المستند.
معكوس تكرار المستند Inverse Document Frequency
مقياس لندرة الكلمة عبر المجموعة، يرتفع للكلمات التي تظهر في مستندات قليلة.

الملخص

TF-IDF يعطي كل كلمة في مستند وزناً يساوي تكرارها في المستند (TF) مضروباً في معكوس تكرارها عبر المستندات (IDF)، فترتفع أوزان الكلمات المميزة للمستند وتنخفض أوزان الكلمات الشائعة في كل المستندات. يُستخدم في البحث واسترجاع المعلومات وتصنيف النصوص، ويُطبَّع المتجه عادة بالمعيار L2 لمقارنة المستندات بتشابه جيب التمام.

أسئلة مراجعة

  1. لماذا يكون وزن كلمة مثل «في» منخفضاً في TF-IDF؟

    لأنها تظهر في معظم المستندات فيكون IDF الخاص بها قريباً من الحد الأدنى.

  2. ما فائدة التطبيع بمعيار L2؟

    جعل المستندات الطويلة والقصيرة قابلة للمقارنة، فيصبح الضرب النقطي مساوياً لتشابه جيب التمام.

المصادر والمراجع

  1. scikit-learn — Tf–idf term weighting
  2. Salton & Buckley (1988) Term-weighting approaches in automatic text retrieval — Information Processing & Management
  3. Manning, Raghavan & Schütze — Introduction to Information Retrieval

إكمال الدرس