Aan de slagBegin gratis

Aanbevelingssysteem voor producten

In deze oefening bouw je een aanbevelingssysteem voor een online retailer die verschillende producten verkoopt. Dit systeem raadt drie vergelijkbare producten aan aan gebruikers die een productpagina bezoeken maar niets kopen, gebaseerd op het laatste product dat ze bekeken.

Je hebt een lijst met woordenboeken gekregen van producten die op de site beschikbaar zijn,

products = [
    {
        "title": "Smartphone X1",
        "short_description": "The latest flagship smartphone with AI-powered features and 5G connectivity.",
        "price": 799.99,
        "category": "Electronics",
        "features": [
            "6.5-inch AMOLED display",
            ...
            "Fast wireless charging"
        ]
    },
    ...
]

en een woordenboek voor het laatste product dat de gebruiker heeft bezocht, opgeslagen in last_product.

De volgende aangepaste functies die eerder in de cursus zijn gedefinieerd, zijn ook beschikbaar om te gebruiken:

  • create_embeddings(texts) → retourneert een lijst met embeddings voor elke tekst in texts.
  • create_product_text(product) → combineert de kenmerken van product tot één string voor embedding.
  • find_n_closest(query_vector, embeddings, n=3) → retourneert de n kleinste afstanden en hun indexen tussen de query_vector en embeddings, op basis van cosinusafstanden.

Deze oefening maakt deel uit van de cursus

Introductie tot Embeddings met de OpenAI API

Bekijk cursus

Oefeninstructies

  • Combineer de tekstkenmerken in last_product, en voor elk product in products, met create_product_text().
  • Maak embeddings van last_product_text en product_texts met create_embeddings(), en zorg ervoor dat last_product_embeddings één enkele lijst is.
  • Vind de drie kleinste cosinusafstanden en hun indexen met find_n_closest().

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# Combine the features for last_product and each product in products
last_product_text = ____
product_texts = ____

# Embed last_product_text and product_texts
last_product_embeddings = ____
product_embeddings = ____

# Find the three smallest cosine distances and their indexes
hits = ____(____, product_embeddings)

for hit in hits:
  product = products[hit['index']]
  print(product['title'])
Code bewerken en uitvoeren