Zacznij terazZacznij za darmo

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 listy texts.
  • create_product_text(product) → łączy cechy produktu product w jeden ciąg tekstowy do osadzenia.
  • find_n_closest(query_vector, embeddings, n=3) → zwraca n najbliższych odległości i ich indeksów między query_vector a embeddings, na podstawie odległości cosinusowej.

To ćwiczenie jest częścią kursu

Wprowadzenie do osadzeń z OpenAI API

Zobacz kurs

Instrukcje do ćwiczenia

  • Połącz cechy tekstowe produktu last_product oraz każdego produktu z listy products, używając funkcji create_product_text().
  • Utwórz osadzenia dla last_product_text i product_texts za pomocą funkcji create_embeddings(), dbając o to, aby last_product_embeddings był 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'])
Edytuj i uruchom kod