Spaces:
Sleeping
Sleeping
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]] | |