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 intexts.create_product_text(product)→ combineert de kenmerken vanproducttot één string voor embedding.find_n_closest(query_vector, embeddings, n=3)→ retourneert denkleinste afstanden en hun indexen tussen dequery_vectorenembeddings, op basis van cosinusafstanden.
Deze oefening maakt deel uit van de cursus
Introductie tot Embeddings met de OpenAI API
Oefeninstructies
- Combineer de tekstkenmerken in
last_product, en voor elk product inproducts, metcreate_product_text(). - Maak embeddings van
last_product_textenproduct_textsmetcreate_embeddings(), en zorg ervoor datlast_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'])