Filtraggio basato sul contenuto
Rappresentazioni degli elementi con TF-IDF, similarità coseno, creazione di un recommender di film dai metadati
Filtraggio basato sul contenuto è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Che cos'è il filtraggio basato sul contenuto?
Il filtraggio basato sul contenuto consiglia elementi simili a quelli che un utente ha già apprezzato, in base alle caratteristiche degli elementi stessi (testo, genere, tag). A differenza del filtraggio collaborativo, non richiede dati di altri utenti e aggira quindi il problema del cold start degli elementi.
Gli elementi come vettori di caratteristiche
L'idea chiave è trasformare ogni elemento in un vettore numerico che ne descriva il contenuto, quindi misurare la similarità tra i vettori. Per le descrizioni testuali, TF-IDF è il metodo classico per costruire questi vettori.
Che cos'è TF-IDF?
TF-IDF (Term Frequency-Inverse Document Frequency) assegna un peso alle parole in base alla frequenza con cui compaiono in un elemento, riducendo però il peso delle parole comuni a tutti gli elementi. Le parole rare e distintive ricevono pesi elevati e permettono di catturare ciò che rende unico un elemento.
TfidfVectorizer
scikit-learn trasforma un elenco di descrizioni di elementi in una matrice TF-IDF con due sole righe di codice.
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(stop_words="english")
tfidf_matrix = vectorizer.fit_transform(df["description"])Comprendere la forma della matrice
tfidf_matrix ha forma (n_items, n_terms): una riga per elemento e una colonna per ogni parola unica del vocabolario. È sparsa, poiché la maggior parte degli elementi utilizza solo una frazione di tutte le parole.
print(tfidf_matrix.shape) # (n_items, vocabulary_size)Ottimizzazione del vectorizer
Parametri utili: stop_words elimina le parole comuni, max_features limita le dimensioni del vocabolario e ngram_range=(1,2) include frasi di due parole per ottenere caratteristiche più ricche.
vectorizer = TfidfVectorizer(
stop_words="english",
max_features=5000,
ngram_range=(1, 2)
)Similarità coseno tra gli elementi
Calcoli la similarità a coppie tra tutti gli elementi. Il risultato è una matrice n_items x n_items in cui ogni cella indica quanto sono simili le descrizioni di due elementi.
from sklearn.metrics.pairwise import cosine_similarity
cosine_sim = cosine_similarity(tfidf_matrix)
print(cosine_sim.shape) # (n_items, n_items)Scorciatoia del kernel lineare
Poiché i vettori TF-IDF sono normalizzati L2 per impostazione predefinita, linear_kernel produce lo stesso risultato della similarità coseno, ma più velocemente: è un'ottimizzazione comune per cataloghi di grandi dimensioni.
from sklearn.metrics.pairwise import linear_kernel
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)Mappatura dei titoli agli indici
Per cercare un elemento in base al nome, crei un indice inverso che associ ogni titolo alla posizione della relativa riga.
indices = pd.Series(df.index, index=df["title"]).drop_duplicates()La funzione get_recommendations
Dato un titolo, recuperi la relativa riga di similarità, ordini i risultati in ordine decrescente, escluda l'elemento stesso e restituisca le corrispondenze principali.
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]Punti di forza e limiti
Punti di forza: funziona con elementi completamente nuovi e le raccomandazioni sono spiegabili ("perché condivide queste parole").
Limiti: rimane confinato ai gusti noti di un utente (iper-specializzazione) e non riesce a scoprire risultati sorprendenti tra generi diversi come può fare il filtraggio collaborativo.
Verifica rapida
Verifichi le Sue conoscenze sul filtraggio basato sul contenuto.
Riepilogo
Ha creato un sistema di filtraggio basato sul contenuto: TfidfVectorizer trasforma le descrizioni in una matrice (n_items, n_terms), cosine_similarity confronta gli elementi e get_recommendations restituisce gli elementi più simili, escludendo l'elemento stesso. Gestisce il cold start, ma rischia l'iper-specializzazione. Prossimo argomento: sistemi ibridi e metriche di valutazione.
Domande Frequenti
La lezione «Filtraggio basato sul contenuto» è gratuita?
Sì — il testo completo di «Filtraggio basato sul contenuto» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Filtraggio basato sul contenuto»?
Rappresentazioni degli elementi con TF-IDF, similarità coseno, creazione di un recommender di film dai metadati Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Filtraggio basato sul contenuto»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Filtraggio collaborativo: basato sugli utenti e sugli elementi
- Fattorizzazione delle matrici con SVD
- Filtraggio basato sul contenuto
- Sistemi ibridi e metriche di valutazione