from sentence_transformers import SentenceTransformer from sklearn.metrics.pairwise import cosine_similarity import numpy as np import joblib import logging import os logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def load_model(model_path): try: model = SentenceTransformer(model_path) logger.info(f"Loaded SBERT model from {model_path}") return model except Exception as e: logger.error(f"Error loading SBERT model: {e}") return None def calculate_similarity(model, text1, text2): try: embeddings = model.encode([text1, text2]) similarity = cosine_similarity([embeddings[0]], [embeddings[1]])[0][0] return max(0, min(1, similarity)) * 100 # Convert to percentage except Exception as e: logger.error(f"SBERT similarity calculation error: {e}") return 0.0 def get_job_embeddings(model, job_taxonomy): return model.encode(job_taxonomy)