Lær AI med Python · leksjon

Innholdsbasert filtrering

TF-IDF-representasjoner av elementer, cosinuslikhet og bygging av en filmanbefaler fra metadata.

Leksjon 3 av 413 trinn

Innholdsbasert filtrering er en gratis leksjon i Lær AI med Python på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lær AI med Python, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.

Hva er innholdsbasert filtrering?

Innholdsbasert filtrering anbefaler elementer som ligner på elementer en bruker allerede har likt, basert på elementenes egne egenskaper (tekst, sjanger, tagger). I motsetning til kollaborativ filtrering trenger metoden ingen andre brukere og unngår dermed kaldstartproblemet for elementer.

Elementer som egenskapsvektorer

Hovedideen er å gjøre hvert element om til en numerisk vektor som beskriver innholdet, og deretter måle likheten mellom vektorene. For tekstbeskrivelser er TF-IDF den klassiske metoden for å bygge slike vektorer.

Hva er TF-IDF?

TF-IDF (Term Frequency-Inverse Document Frequency) vekter ord etter hvor ofte de forekommer i et element, men reduserer vekten til ord som er vanlige på tvers av alle elementer. Sjeldne og særpregede ord får høy vekt og fanger opp det som gjør et element unikt.

TfidfVectorizer

scikit-learn gjør om en liste med elementbeskrivelser til en TF-IDF-matrise på to linjer.

from sklearn.feature_extraction.text import TfidfVectorizer

vectorizer = TfidfVectorizer(stop_words="english")
tfidf_matrix = vectorizer.fit_transform(df["description"])

Forstå matrisens form

tfidf_matrix har formen (n_items, n_terms): én rad per element og én kolonne per unikt ord i ordforrådet. Den er gles, siden de fleste elementer bare bruker en brøkdel av alle ordene.

print(tfidf_matrix.shape)  # (n_items, vocabulary_size)

Justere vektoriseringen

Nyttige parametere er: stop_words, som fjerner vanlige ord, max_features, som begrenser størrelsen på ordforrådet, og ngram_range=(1,2), som inkluderer fraser på to ord for å gi mer innholdsrike egenskaper.

vectorizer = TfidfVectorizer(
    stop_words="english",
    max_features=5000,
    ngram_range=(1, 2)
)

Kosinulikhet mellom elementer

Beregn parvis likhet mellom alle elementene. Resultatet er en matrise på n_items x n_items, der hver celle angir hvor like beskrivelsene av to elementer er.

from sklearn.metrics.pairwise import cosine_similarity

cosine_sim = cosine_similarity(tfidf_matrix)
print(cosine_sim.shape)  # (n_items, n_items)

Snarvei med lineær kjerne

Fordi TF-IDF-vektorer som standard er L2-normaliserte, gir linear_kernel samme resultat som kosinulikhet, men raskere. Dette er en vanlig optimalisering for store kataloger.

from sklearn.metrics.pairwise import linear_kernel

cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)

Koble titler til indekser

For å slå opp et element etter navn oppretter De en omvendt indeks fra tittel til radposisjon.

indices = pd.Series(df.index, index=df["title"]).drop_duplicates()

Funksjonen get_recommendations

Gitt en tittel henter De raden med likheter, sorterer i synkende rekkefølge, hopper over selve elementet og returnerer de beste treffene.

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]

Styrker og begrensninger

Styrker: fungerer for helt nye elementer, og anbefalingene kan forklares («fordi det deler disse ordene»).

Begrensninger: metoden holder seg innenfor brukerens kjente smak (overdreven spesialisering) og kan ikke oppdage overraskende treff på tvers av sjangere slik kollaborativ filtrering kan.

Kort kontroll

Test kunnskapene Deres om innholdsbasert filtrering.

Oppsummering

De bygde innholdsbasert filtrering: TfidfVectorizer gjør beskrivelser om til en matrise med formen (n_items, n_terms), cosine_similarity sammenligner elementer, og get_recommendations returnerer de mest like elementene (uten selve elementet). Metoden håndterer kaldstart, men kan føre til overdreven spesialisering. Neste tema: hybridsystemer og evalueringsmål.

Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
53
Leksjoner
225

Ofte stilte spørsmål

Er leksjonen «Innholdsbasert filtrering» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lær AI med Python, inkludert «Innholdsbasert filtrering», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.

Hva lærer jeg i «Innholdsbasert filtrering»?

TF-IDF-representasjoner av elementer, cosinuslikhet og bygging av en filmanbefaler fra metadata. Du øver på Lær AI med Python med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Lær AI med Python?

Ingen tidligere erfaring er nødvendig. Lær AI med Python på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Innholdsbasert filtrering»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Lær AI med Python-leksjonen?

Ja. Alle Lær AI med Python-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Kollaborativ filtrering: brukerbasert og elementbasert
  2. Matrise-faktorisering med SVD
  3. Innholdsbasert filtrering
  4. Hybridsystemer og evalueringsmål
← Tilbake til Lær AI med Python