0Pricing
Learn AI with Python · Lekcja

Filtrowanie oparte na treści

Reprezentacje elementów TF-IDF, podobieństwo cosinusowe, tworzenie systemu rekomendacji filmów na podstawie metadanych.

Filtrowanie oparte na treści to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Czym jest filtrowanie oparte na treści?

Filtrowanie oparte na treści rekomenduje elementy podobne do tych, które użytkownik już polubił, na podstawie własnych cech elementów (tekstu, gatunku, tagów). W przeciwieństwie do filtrowania kolaboracyjnego nie wymaga danych o innych użytkownikach, więc omija problem zimnego startu nowych elementów.

Elementy jako wektory cech

Główna idea polega na przekształceniu każdego elementu w wektor liczbowy opisujący jego treść, a następnie zmierzeniu podobieństwa między wektorami. W przypadku opisów tekstowych klasyczną metodą tworzenia takich wektorów jest TF-IDF.

Czym jest TF-IDF?

TF-IDF (Term Frequency-Inverse Document Frequency) przypisuje słowom wagi zależnie od tego, jak często występują w danym elemencie, jednocześnie zmniejszając wagę słów wspólnych dla wszystkich elementów. Rzadkie, charakterystyczne słowa otrzymują wysokie wagi, dzięki czemu można uchwycić cechy wyróżniające element.

TfidfVectorizer

scikit-learn przekształca listę opisów elementów w macierz TF-IDF za pomocą dwóch wierszy kodu.

from sklearn.feature_extraction.text import TfidfVectorizer

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

Zrozumienie kształtu macierzy

Obiekt tfidf_matrix ma kształt (n_items, n_terms): jeden wiersz przypada na każdy element, a jedna kolumna na każde unikalne słowo w słowniku. Macierz jest rzadka, ponieważ większość elementów używa tylko części wszystkich słów.

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

Strojenie wektoryzatora

Przydatne parametry to: stop_words, który usuwa często występujące słowa, max_features, który ogranicza rozmiar słownika, oraz ngram_range=(1,2), który uwzględnia frazy dwuwyrazowe i pozwala uzyskać bogatszy zestaw cech.

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

Podobieństwo cosinusowe między elementami

Należy obliczyć podobieństwo parami dla wszystkich elementów. Wynikiem jest macierz n_items x n_items, w której każda komórka określa podobieństwo opisów dwóch elementów.

from sklearn.metrics.pairwise import cosine_similarity

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

Skrót z użyciem jądra liniowego

Ponieważ wektory TF-IDF są domyślnie normalizowane w normie L2, linear_kernel daje ten sam wynik co podobieństwo cosinusowe, ale działa szybciej. Jest to częsta optymalizacja w przypadku dużych katalogów.

from sklearn.metrics.pairwise import linear_kernel

cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)

Mapowanie tytułów na indeksy

Aby wyszukiwać elementy po nazwie, należy zbudować indeks odwrotny mapujący tytuł na pozycję wiersza.

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

Funkcja get_recommendations

Dla podanego tytułu należy pobrać odpowiedni wiersz podobieństwa, posortować go malejąco, pominąć sam element i zwrócić najtrafniejsze wyniki.

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]

Zalety i ograniczenia

Zalety: działa dla zupełnie nowych elementów, a rekomendacje można wyjaśnić („ponieważ zawiera te słowa”).

Ograniczenia: pozostaje w obrębie znanych upodobań użytkownika (nadmierna specjalizacja) i nie potrafi odkrywać zaskakujących rekomendacji z innych gatunków tak jak filtrowanie kolaboracyjne.

Szybki test

Sprawdź swoją wiedzę na temat filtrowania opartego na treści.

Podsumowanie

Zbudowano filtrowanie oparte na treści: TfidfVectorizer przekształca opisy w macierz (n_items, n_terms), cosine_similarity porównuje elementy, a get_recommendations zwraca najbardziej podobne elementy (pomijając sam element). Metoda radzi sobie z problemem zimnego startu, ale grozi nadmierną specjalizacją. Następny temat: systemy hybrydowe i metryki oceny.

Często zadawane pytania

Czy lekcja „Filtrowanie oparte na treści” jest bezpłatna?

Tak — pełny tekst „Filtrowanie oparte na treści” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „Filtrowanie oparte na treści”?

Reprezentacje elementów TF-IDF, podobieństwo cosinusowe, tworzenie systemu rekomendacji filmów na podstawie metadanych. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Filtrowanie oparte na treści”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Filtrowanie kolaboratywne: oparte na użytkownikach i elementach
  2. Faktoryzacja macierzy za pomocą SVD
  3. Filtrowanie oparte na treści
  4. Systemy hybrydowe i metryki oceny
← Powrót do Learn AI with Python