File size: 1,208 Bytes
8773065
 
c6e7c0e
cde0065
8773065
 
c6e7c0e
8773065
 
 
cde0065
8773065
c6e7c0e
 
 
8773065
cde0065
8773065
c6e7c0e
 
8773065
 
c6e7c0e
 
8773065
c6e7c0e
 
8773065
c6e7c0e
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import json
from model2vec import StaticModel
import torch

# Load the Model2Vec pretrained model
model = StaticModel.from_pretrained("minishlab/M2V_base_output")

# Load career options from JSON file
with open("career_options.json", "r") as file:
    career_options = json.load(file)

# Precompute embeddings for career options
career_embeddings = {}
for career, attributes in career_options.items():
    combined_text = attributes["skills"] + ", " + attributes["interests"]
    career_embeddings[career] = model.encode([combined_text])[0]

# Function to generate career recommendations
def get_career_recommendations(skills: str, interests: str):
    user_input = skills + ", " + interests
    user_embedding = model.encode([user_input])[0]

    recommendations = []
    for career, career_embedding in career_embeddings.items():
        similarity = torch.cosine_similarity(torch.tensor(user_embedding), torch.tensor(career_embedding), dim=0).item()
        recommendations.append((career, similarity))
    
    # Sort by similarity score
    recommendations.sort(key=lambda x: x[1], reverse=True)
    
    return [f"{career} (Similarity: {similarity:.2f})" for career, similarity in recommendations[:5]]