Система рекомендации товаров
В этом упражнении вы создадите систему рекомендаций для интернет-магазина, предлагающего самые разные товары. Система рекомендует пользователям три похожих товара, если они просмотрели страницу товара, но не совершили покупку, — основываясь на последнем просмотренном товаре.
Вам предоставлен список словарей с товарами, доступными на сайте:
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"
]
},
...
]
а также словарь с последним просмотренным пользователем товаром, хранящийся в переменной last_product.
Кроме того, вам доступны следующие пользовательские функции, определённые ранее в курсе:
create_embeddings(texts)→ возвращает список эмбеддингов (векторных представлений) для каждого текста изtexts.create_product_text(product)→ объединяет характеристикиproductв одну строку для построения эмбеддинга.find_n_closest(query_vector, embeddings, n=3)→ возвращаетnнаименьших косинусных расстояний и их индексы междуquery_vectorиembeddings.
Это упражнение является частью курса
Введение в эмбеддинги с OpenAI API
Инструкции к упражнению
- Объедините текстовые характеристики
last_product, а также каждого товара изproducts, используя функциюcreate_product_text(). - Постройте эмбеддинги для
last_product_textиproduct_textsс помощьюcreate_embeddings(), убедившись, чтоlast_product_embeddingsпредставляет собой единственный список. - Найдите три наименьших косинусных расстояния и их индексы с помощью
find_n_closest().
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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'])