Classificazione del sentiment delle recensioni
Ora che hai calcolato gli embeddings, è il momento di calcolare le distanze coseno ed estrarre l’etichetta più simile.
Lo farai definendo una funzione chiamata find_closest(), che può essere usata per confrontare gli embeddings tra un vettore e molti altri, restituendo la distanza più vicina e il relativo indice. Poi farai un loop sulle recensioni e userai find_closest() per trovare la distanza più vicina per ciascuna recensione, estraendo l’etichetta classificata usando l’indice.
Gli oggetti class_embeddings e review_embeddings che hai creato nell’esercizio precedente sono a tua disposizione, così come reviews e sentiments.
Questo esercizio fa parte del corso
Introduzione agli Embeddings con l'API di OpenAI
Istruzioni dell'esercizio
- Definisci una funzione chiamata
find_closest()che restituisca la distanza e l’indice dell’embedding più simile aquery_vector. - Usa
find_closest()per trovare la distanza minima tra gli embeddings di ogni recensione e iclass_embeddings. - Usa l’
'index'diclosestper filtraresentimentsed estrarre il'label'.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# Define a function to return the minimum distance and its index
def find_closest(query_vector, embeddings):
distances = []
for index, embedding in enumerate(embeddings):
dist = distance.cosine(____, ____)
distances.append({"distance": dist, "index": index})
return ____(distances, key=lambda x: x["distance"])
for index, review in enumerate(reviews):
# Find the closest distance and its index using find_closest()
closest = ____(review_embeddings[____], ____)
# Subset sentiments using the index from closest
label = ____
print(f'"{review}" was classified as {label}')