Inizia subitoInizia gratis

Embedding di descrizioni più dettagliate

Una delle ultime etichette previste non sembrava rappresentare bene la recensione; probabilmente perché, facendo l'embedding solo delle etichette di classe, si catturano poche informazioni. Questa volta verranno invece incorporare le descrizioni di ciascuna classe, così il modello "capisce" meglio che stai classificando recensioni di ristoranti.

Sono disponibili i seguenti oggetti:

sentiments = [{'label': 'Positive',
               'description': 'A positive restaurant review'},
              {'label': 'Neutral',
               'description':'A neutral restaurant review'},
              {'label': 'Negative',
               'description': 'A negative restaurant review'}]

reviews = ["The food was delicious!",
           "The service was a bit slow but the food was good",
           "The food was cold, really disappointing!"]

Questo esercizio fa parte del corso

Introduzione agli Embeddings con l'API di OpenAI

Visualizza corso

Istruzioni dell'esercizio

  • Estrai un elenco con le descrizioni dei sentiment e crea i rispettivi embedding.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# Extract and embed the descriptions from sentiments
class_descriptions = ____
class_embeddings = ____
review_embeddings = create_embeddings(reviews)

def find_closest(query_vector, embeddings):
  distances = []
  for index, embedding in enumerate(embeddings):
    dist = distance.cosine(query_vector, embedding)
    distances.append({"distance": dist, "index": index})
  return min(distances, key=lambda x: x["distance"])

for index, review in enumerate(reviews):
  closest = find_closest(review_embeddings[index], class_embeddings)
  label = sentiments[closest['index']]['label']
  print(f'"{review}" was classified as {label}')
Modifica ed esegui il codice