skill-checker / logic.py
JanaAlbader's picture
Update logic.py
b797157 verified
raw
history blame contribute delete
915 Bytes
from keybert import KeyBERT
from sentence_transformers import SentenceTransformer, util
kw_model = KeyBERT()
model = SentenceTransformer('all-MiniLM-L6-v2')
def extract_keywords(text, top_n=10):
return [kw[0] for kw in kw_model.extract_keywords(text, stop_words='english', top_n=top_n)]
def compare_skills(job_text, user_text):
job_keywords = extract_keywords(job_text, top_n=8)
user_keywords = extract_keywords(user_text, top_n=10)
job_embeds = model.encode(job_keywords, convert_to_tensor=True)
user_embeds = model.encode(user_keywords, convert_to_tensor=True)
results = []
for i, job_kw in enumerate(job_keywords):
sim_scores = util.cos_sim(job_embeds[i], user_embeds)[0]
max_score = float(sim_scores.max())
is_matched = max_score > 0.5
results.append((job_kw, is_matched))
return job_keywords, [kw for kw, matched in results if not matched]