الترشيح القائم على المحتوى
تمثيلات العناصر باستخدام TF-IDF، والتشابه الجيبي، وبناء نظام توصية للأفلام من البيانات الوصفية
الترشيح القائم على المحتوى درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ما الترشيح القائم على المحتوى؟
يوصي الترشيح القائم على المحتوى بعناصر مشابهة للعناصر التي أعجب بها المستخدم مسبقًا، اعتمادًا على سمات العناصر نفسها، مثل النص والنوع والوسوم. وعلى خلاف الترشيح التعاوني، لا يحتاج هذا الأسلوب إلى مستخدمين آخرين، ولذلك يتجاوز مشكلة البداية الباردة للعناصر.
العناصر بوصفها متجهات سمات
الفكرة الأساسية هي تحويل كل عنصر إلى متجه رقمي يصف محتواه، ثم قياس التشابه بين المتجهات. وبالنسبة إلى الأوصاف النصية، يُعد TF-IDF الأسلوب التقليدي لبناء هذه المتجهات.
ما TF-IDF؟
يمنح TF-IDF (تكرار المصطلح وعكس تكرار المستند) الكلمات أوزانًا وفق معدل ظهورها في أحد العناصر، مع تقليل أوزان الكلمات الشائعة في جميع العناصر. وتحصل الكلمات النادرة والمميزة على أوزان مرتفعة، مما يلتقط ما يجعل العنصر فريدًا.
TfidfVectorizer
تحوّل scikit-learn قائمة من أوصاف العناصر إلى مصفوفة TF-IDF في سطرين.
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(stop_words="english")
tfidf_matrix = vectorizer.fit_transform(df["description"])فهم شكل المصفوفة
يكون شكل tfidf_matrix هو (n_items, n_terms): صف واحد لكل عنصر وعمود واحد لكل كلمة فريدة في المفردات. وتكون المصفوفة متناثة، لأن معظم العناصر تستخدم جزءًا صغيرًا فقط من جميع الكلمات.
print(tfidf_matrix.shape) # (n_items, vocabulary_size)ضبط أداة إنشاء المتجهات
تتضمن المعلمات المفيدة ما يلي: تحذف stop_words الكلمات الشائعة، وتحدّ max_features حجم المفردات، وتضمّن ngram_range=(1,2) العبارات المكوّنة من كلمتين للحصول على سمات أكثر ثراءً.
vectorizer = TfidfVectorizer(
stop_words="english",
max_features=5000,
ngram_range=(1, 2)
)التشابه الجيبي بين العناصر
احسبوا التشابه الزوجي بين جميع العناصر. والنتيجة هي مصفوفة n_items x n_items، حيث تبيّن كل خلية مدى تشابه وصفي عنصرين.
from sklearn.metrics.pairwise import cosine_similarity
cosine_sim = cosine_similarity(tfidf_matrix)
print(cosine_sim.shape) # (n_items, n_items)اختصار النواة الخطية
بما أن متجهات TF-IDF تكون مطبّعة وفق L2 افتراضيًا، فإن linear_kernel يعطي النتيجة نفسها التي يعطيها التشابه الجيبي، ولكن بسرعة أكبر، وهو تحسين شائع للكتالوجات الكبيرة.
from sklearn.metrics.pairwise import linear_kernel
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)ربط العناوين بالفهارس
للبحث عن عنصر بالاسم، أنشئوا فهرسًا عكسيًا يربط العنوان بموضع الصف.
indices = pd.Series(df.index, index=df["title"]).drop_duplicates()الدالة get_recommendations
عند إعطائها عنوانًا، تجلب الدالة صف التشابه الخاص به، وترتّبه تنازليًا، وتتجاوز العنصر نفسه، ثم تعيد أفضل العناصر المطابقة.
def get_recommendations(title, n=10):
idx = indices[title]
scores = list(enumerate(cosine_sim[idx]))
scores = sorted(scores, key=lambda x: x[1], reverse=True)
top = scores[1:n+1] # skip itself at position 0
item_idxs = [i for i, _ in top]
return df["title"].iloc[item_idxs]نقاط القوة والقيود
نقاط القوة: تعمل مع العناصر الجديدة تمامًا، كما أن التوصيات قابلة للتفسير («لأنه يشارك هذه الكلمات»).
القيود: تظل ضمن أذواق المستخدم المعروفة (التخصص المفرط)، ولا تستطيع اكتشاف العناصر المفاجئة الناجحة عبر الأنواع المختلفة بالطريقة التي يستطيع بها الترشيح التعاوني.
اختبار سريع
اختبروا معرفتكم بالترشيح القائم على المحتوى.
مراجعة
بنيتم ترشيحًا قائمًا على المحتوى: إذ تحوّل TfidfVectorizer الأوصاف إلى مصفوفة (n_items, n_terms)، وتقارن cosine_similarity بين العناصر، وتعيد get_recommendations العناصر الأكثر تشابهًا (مع تجاوز العنصر نفسه). ويتعامل هذا الأسلوب مع مشكلة البداية الباردة، لكنه قد يؤدي إلى التخصص المفرط. التالي: الأنظمة الهجينة ومقاييس التقييم.
الأسئلة الشائعة
هل درس «الترشيح القائم على المحتوى» مجاني؟
نعم — نص درس «الترشيح القائم على المحتوى» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «الترشيح القائم على المحتوى»؟
تمثيلات العناصر باستخدام TF-IDF، والتشابه الجيبي، وبناء نظام توصية للأفلام من البيانات الوصفية تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «الترشيح القائم على المحتوى»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الترشيح التعاوني: القائم على المستخدم والقائم على العنصر
- تحليل المصفوفات بالعوامل باستخدام SVD
- الترشيح القائم على المحتوى
- الأنظمة الهجينة ومقاييس التقييم