RecSys_Skills / recommender.py
NithyaAla's picture
Update recommender.py
e608159 verified
from skill_extraction import get_skill_embedding
import numpy as np
def generate_recommendations(db, user_id):
# Step 1: Get recommended skills
rec_skills = db.get_recommendations(user_id) # list of skill names
# Step 2: Get existing user skills
user_skill_data = db.get_user_skills(user_id) # returns [(skill, conf), ...]
user_skill_embeddings = [
get_skill_embedding(skill)
for skill, _ in user_skill_data
if get_skill_embedding(skill) is not None
]
results = []
for rec_skill in rec_skills:
rec_emb = get_skill_embedding(rec_skill)
if rec_emb is None:
results.append((rec_skill, "")) # fallback
db.log_interaction(user_id, "VIEWED_RECOMMENDATION", skill=rec_skill)
continue
# Compute similarity to user's best skill
sims = [np.dot(rec_emb, emb) for emb in user_skill_embeddings] if user_skill_embeddings else []
max_sim = float(max(sims)) if sims else 0.40
# Scale & normalize confidence
conf_score = min(round(max_sim * 1.2, 2), 0.98)
results.append((rec_skill, conf_score))
# Log
db.log_interaction(user_id, "VIEWED_RECOMMENDATION", skill=rec_skill)
return sorted(results, key=lambda x: x[1], reverse=True)