System rekomendacji produktów
W tym ćwiczeniu zbudujesz system rekomendacji dla sklepu internetowego oferującego różnorodne produkty. System poleca użytkownikom trzy podobne produkty, gdy odwiedzą stronę produktu, ale go nie kupią – na podstawie ostatnio przeglądanego produktu.
Dostępna jest lista słowników z produktami oferowanymi w sklepie,
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"
]
},
...
]
oraz słownik z ostatnim produktem odwiedzonym przez użytkownika, przechowywany w zmiennej last_product.
Do dyspozycji masz również następujące funkcje pomocnicze zdefiniowane wcześniej w kursie:
create_embeddings(texts)→ zwraca listę osadzeń (embeddings) dla każdego tekstu z listytexts.create_product_text(product)→ łączy cechy produktuproductw jeden ciąg tekstowy do osadzenia.find_n_closest(query_vector, embeddings, n=3)→ zwracannajbliższych odległości i ich indeksów międzyquery_vectoraembeddings, na podstawie odległości cosinusowej.
To ćwiczenie jest częścią kursu
Wprowadzenie do osadzeń z OpenAI API
Instrukcje do ćwiczenia
- Połącz cechy tekstowe produktu
last_productoraz każdego produktu z listyproducts, używając funkcjicreate_product_text(). - Utwórz osadzenia dla
last_product_textiproduct_textsza pomocą funkcjicreate_embeddings(), dbając o to, abylast_product_embeddingsbył pojedynczą listą. - Znajdź trzy najmniejsze odległości cosinusowe i ich indeksy, używając funkcji
find_n_closest().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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'])