e-commerce / backend /recommend.py
VincentA2K's picture
Product Recommendation RestAPI
480e694
import pickle
import numpy as np
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
# Load model embeddings
with open("../models/product_embeddings.pkl", "rb") as f:
data = pickle.load(f)
# Load transformer model
model = SentenceTransformer('all-MiniLM-L6-v2')
def recommend_products(user_query, top_n=5):
"""Find similar products based on user search"""
query_embedding = model.encode(user_query).reshape(1, -1)
# Compute similarity scores
similarities = cosine_similarity(query_embedding, data["embeddings"])
top_indices = np.argsort(similarities[0])[-top_n:][::-1] # Get top matches
recommendations = []
for i in top_indices:
recommendations.append({
"search_query": data["search_queries"][i],
"product": data["product_names"][i],
"score": float(similarities[0][i])
})
return recommendations
# Example test
if __name__ == "__main__":
query = "gaming laptop"
results = recommend_products(query)
for r in results:
print(f"🔹 {r['product']} (Score: {r['score']:.2f})")