La funzione di raccomandazione
In questo esercizio costruiremo una funzione di raccomandazione get_recommendations(), come discusso nella lezione e nell’esercizio precedente. Come sappiamo, prende in input un titolo, una matrice di similarità coseno e una mappatura tra titolo e indice, e restituisce un elenco di 10 titoli più simili al titolo di partenza (escludendo il titolo stesso).
Ti è stato fornito un insieme di dati metadata che contiene i titoli dei film e le relative trame. L’intestazione di questo insieme di dati è stata stampata in console.
Questo esercizio fa parte del corso
Feature Engineering per NLP in Python
Istruzioni dell'esercizio
- Ottieni l’indice del film che corrisponde al titolo usando la chiave
titlediindices. - Estrai i dieci film più simili da
sim_scorese salva il risultato di nuovo insim_scores.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Generate mapping between titles and index
indices = pd.Series(metadata.index, index=metadata['title']).drop_duplicates()
def get_recommendations(title, cosine_sim, indices):
# Get index of movie that matches title
idx = ____[____]
# Sort the movies based on the similarity scores
sim_scores = list(enumerate(cosine_sim[idx]))
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
# Get the scores for 10 most similar movies
sim_scores = sim_scores[____]
# Get the movie indices
movie_indices = [i[0] for i in sim_scores]
# Return the top 10 most similar movies
return metadata['title'].iloc[movie_indices]