İçerik Tabanlı Filtreleme
TF-IDF öğe gösterimleri, kosinüs benzerliği, üst verilerden film öneri sistemi oluşturma.
İçerik Tabanlı Filtreleme, CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn AI with Python öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn AI with Python kursu toplamda 4 dersten oluşur.
İçerik Tabanlı Filtreleme Nedir?
İçerik tabanlı filtreleme, kullanıcının daha önce beğendiği öğelere, öğelerin kendi özelliklerine (metin, tür, etiketler) dayanarak benzeyen öğeleri önerir. İşbirlikçi filtrelemenin aksine başka kullanıcıların verilerine ihtiyaç duymaz; bu nedenle öğe soğuk başlangıcı sorununu aşar.
Öğeleri Özellik Vektörleri Olarak Temsil Etme
Temel fikir şudur: Her öğeyi içeriğini açıklayan sayısal bir vektöre dönüştürün, ardından vektörler arasındaki benzerliği ölçün. Metin açıklamaları için TF-IDF, bu vektörleri oluşturmanın klasik yöntemidir.
TF-IDF Nedir?
TF-IDF (Terim Sıklığı-Ters Belge Sıklığı), sözcükleri bir öğede ne kadar sık göründüklerine göre ağırlıklandırır; ancak tüm öğelerde yaygın olan sözcüklerin ağırlığını azaltır. Nadir ve ayırt edici sözcükler yüksek ağırlıklar alır ve bir öğeyi benzersiz kılan özellikleri yakalar.
TfidfVectorizer
scikit-learn, öğe açıklamalarından oluşan bir listeyi iki satırda TF-IDF matrisine dönüştürür.
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(stop_words="english")
tfidf_matrix = vectorizer.fit_transform(df["description"])Matris Boyutunu Anlama
tfidf_matrix şu şekle sahiptir: (n_items, n_terms). Her öğe için bir satır, sözlükteki her benzersiz sözcük için bir sütun bulunur. Çoğu öğe tüm sözcüklerin yalnızca küçük bir bölümünü kullandığı için matris seyrektir.
print(tfidf_matrix.shape) # (n_items, vocabulary_size)Vektörleştiriciyi Ayarlama
Yararlı parametreler şunlardır: stop_words yaygın sözcükleri çıkarır, max_features sözlük boyutunu sınırlar ve ngram_range=(1,2) daha zengin özellikler için iki sözcüklü ifadeleri de içerir.
vectorizer = TfidfVectorizer(
stop_words="english",
max_features=5000,
ngram_range=(1, 2)
)Öğeler Arasındaki Kosinüs Benzerliği
Tüm öğeler arasındaki ikili benzerliği hesaplayın. Sonuç, her hücresinde iki öğenin açıklamalarının ne kadar benzer olduğunu gösteren n_items x n_items boyutlu bir matristir.
from sklearn.metrics.pairwise import cosine_similarity
cosine_sim = cosine_similarity(tfidf_matrix)
print(cosine_sim.shape) # (n_items, n_items)Doğrusal Çekirdek Kestirmesi
TF-IDF vektörleri varsayılan olarak L2 ile normalleştirildiği için linear_kernel, kosinüs benzerliğiyle aynı sonucu daha hızlı verir. Bu, büyük kataloglar için yaygın bir iyileştirmedir.
from sklearn.metrics.pairwise import linear_kernel
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)Başlıkları İndekslere Eşleme
Bir öğeyi adına göre aramak için başlıktan satır konumuna ters bir indeks oluşturun.
indices = pd.Series(df.index, index=df["title"]).drop_duplicates()get_recommendations İşlevi
Bir başlık verildiğinde, başlığın benzerlik satırını alın, azalan sırada sıralayın, öğenin kendisini atlayın ve en iyi eşleşmeleri döndürün.
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]Güçlü Yönler ve Sınırlamalar
Güçlü yönler: tamamen yeni öğeler için çalışır ve öneriler açıklanabilirdir ("çünkü bu sözcükleri paylaşır").
Sınırlamalar: bir kullanıcının bilinen zevkleriyle sınırlı kalır (aşırı özelleşme) ve işbirlikçi filtrelemenin yapabildiği gibi şaşırtıcı türler arası keşifler yapamaz.
Hızlı Kontrol
İçerik tabanlı filtreleme konusundaki bilginizi test edin.
Özet
İçerik tabanlı filtreleme oluşturdunuz: TfidfVectorizer, açıklamaları (n_items, n_terms) matrisine dönüştürür; cosine_similarity öğeleri karşılaştırır ve get_recommendations en benzer öğeleri, öğenin kendisini atlayarak döndürür. Soğuk başlangıç sorununu ele alır; ancak aşırı özelleşme riski taşır. Sıradaki konu: hibrit sistemler ve değerlendirme ölçütleri.
Sıkça Sorulan Sorular
“İçerik Tabanlı Filtreleme” dersi ücretsiz mi?
Evet — “İçerik Tabanlı Filtreleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn AI with Python kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn AI with Python kursu toplamda 4 dersten oluşur.
“İçerik Tabanlı Filtreleme” dersinde ne öğreneceğim?
TF-IDF öğe gösterimleri, kosinüs benzerliği, üst verilerden film öneri sistemi oluşturma. Learn AI with Python ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn AI with Python öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn AI with Python, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“İçerik Tabanlı Filtreleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn AI with Python dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn AI with Python dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- İşbirlikçi Filtreleme: Kullanıcı ve Öğe Tabanlı
- SVD ile Matris Çarpanlarına Ayırma
- İçerik Tabanlı Filtreleme
- Hibrit Sistemler ve Değerlendirme Ölçütleri