Content-based filtering
TF-IDF-representaties van items, cosinusgelijkenis, een filmrecommender bouwen op basis van metadata.
Content-based filtering is een gratis Leer AI met Python-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Leer AI met Python. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Leer AI met Python bevat in totaal 4 lessen.
Wat is filtering op basis van inhoud?
Filtering op basis van inhoud beveelt items aan die lijken op items die een gebruiker al goed vond, op basis van de eigen kenmerken van de items (tekst, genre, tags). In tegenstelling tot collaboratieve filtering heeft deze methode geen gegevens van andere gebruikers nodig, waardoor het koudestartprobleem voor items wordt omzeild.
Items als kenmerkvectoren
Het belangrijkste idee: zet elk item om in een numerieke vector die de inhoud beschrijft en meet vervolgens de gelijkheid tussen vectoren. Voor tekstbeschrijvingen is TF-IDF de klassieke manier om zulke vectoren te maken.
Wat is TF-IDF?
TF-IDF (termfrequentie-inverse documentfrequentie) weegt woorden op basis van hoe vaak ze in een item voorkomen, maar verlaagt het gewicht van woorden die in alle items voorkomen. Zeldzame, kenmerkende woorden krijgen hoge gewichten en leggen vast wat een item uniek maakt.
TfidfVectorizer
scikit-learn zet een lijst met itembeschrijvingen in twee regels om in een TF-IDF-matrix.
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(stop_words="english")
tfidf_matrix = vectorizer.fit_transform(df["description"])De vorm van de matrix begrijpen
tfidf_matrix heeft de vorm (n_items, n_terms): één rij per item en één kolom per uniek woord in de woordenschat. De matrix is ijl, omdat de meeste items slechts een fractie van alle woorden gebruiken.
print(tfidf_matrix.shape) # (n_items, vocabulary_size)De vectorizer afstellen
Nuttige parameters: stop_words verwijdert veelvoorkomende woorden, max_features begrenst de omvang van de woordenschat en ngram_range=(1,2) neemt woordgroepen van twee woorden op voor uitgebreidere kenmerken.
vectorizer = TfidfVectorizer(
stop_words="english",
max_features=5000,
ngram_range=(1, 2)
)Cosinusgelijkheid tussen items
Bereken de gelijkheid voor elk paar van alle items. Het resultaat is een matrix van n_items x n_items, waarin elke cel aangeeft hoe gelijk de beschrijvingen van twee items zijn.
from sklearn.metrics.pairwise import cosine_similarity
cosine_sim = cosine_similarity(tfidf_matrix)
print(cosine_sim.shape) # (n_items, n_items)Snelkoppeling met de lineaire kernel
Omdat TF-IDF-vectoren standaard L2-genormaliseerd zijn, geeft linear_kernel hetzelfde resultaat als cosinusgelijkheid, maar sneller. Dit is een veelgebruikte optimalisatie voor grote catalogi.
from sklearn.metrics.pairwise import linear_kernel
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)Titels aan indexen koppelen
Maak een omgekeerde index van titel naar rijpositie om een item op naam op te zoeken.
indices = pd.Series(df.index, index=df["title"]).drop_duplicates()De functie get_recommendations
Haal voor een gegeven titel de bijbehorende gelijkheidsrij op, sorteer aflopend, sla het item zelf over en geef de beste overeenkomsten terug.
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]Sterke punten en beperkingen
Sterke punten: werkt voor volledig nieuwe items en aanbevelingen zijn uitlegbaar ("omdat deze woorden overeenkomen").
Beperkingen: de methode blijft binnen de bekende smaak van een gebruiker (overspecialisatie) en kan geen verrassende treffers uit andere genres ontdekken zoals collaboratieve filtering dat wel kan.
Korte controle
Test je kennis van filtering op basis van inhoud.
Samenvatting
Je hebt filtering op basis van inhoud gebouwd: TfidfVectorizer zet beschrijvingen om in een matrix van (n_items, n_terms), cosine_similarity vergelijkt items en get_recommendations geeft de meest vergelijkbare items terug (waarbij het item zelf wordt overgeslagen). Deze methode lost het koudestartprobleem op, maar brengt het risico van overspecialisatie met zich mee. Volgende onderwerpen: hybride systemen en evaluatiematen.
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 53
- Lessen
- 225
Veelgestelde vragen
Is de les “Content-based filtering” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Leer AI met Python, waaronder “Content-based filtering”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Leer AI met Python bevat in totaal 4 lessen.
Wat leer ik in “Content-based filtering”?
TF-IDF-representaties van items, cosinusgelijkenis, een filmrecommender bouwen op basis van metadata. Je oefent met Leer AI met Python door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Leer AI met Python te beginnen?
Ervaring vooraf is niet nodig. Leer AI met Python op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Content-based filtering”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Leer AI met Python?
Ja. Elke les over Leer AI met Python bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Collaborative filtering: op gebruikers en op items
- Matrixfactorisatie met SVD
- Content-based filtering
- Hybride systemen en evaluatiemetrieken