Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from sentence_transformers import SentenceTransformer, util | |
| import re | |
| def load_model(): | |
| return SentenceTransformer('sentence-transformers/all-mpnet-base-v2') | |
| model = load_model() | |
| def keyword_match(job_desc, resume): | |
| job_keywords = set(re.findall(r'\b\w+\b', job_desc.lower())) | |
| resume_keywords = set(re.findall(r'\b\w+\b', resume.lower())) | |
| common_keywords = job_keywords.intersection(resume_keywords) | |
| return len(common_keywords) / len(job_keywords) * 100 if job_keywords else 0 | |
| st.title("Enhanced Resume and Job Description Similarity Checker") | |
| job_description = st.text_area("Paste the job description here:", height=200) | |
| resume_text = st.text_area("Paste your resume here:", height=200) | |
| if st.button("Compare"): | |
| if job_description.strip() and resume_text.strip(): | |
| # Calculate embeddings-based similarity | |
| job_description_embedding = model.encode(job_description) | |
| resume_embedding = model.encode(resume_text) | |
| similarity_score = util.cos_sim(job_description_embedding, resume_embedding).item() * 100 | |
| # Calculate keyword-based similarity | |
| keyword_score = keyword_match(job_description, resume_text) | |
| # Combine scores (you could adjust the weights as needed) | |
| overall_score = (similarity_score * 0.6) + (keyword_score * 0.4) | |
| st.write(f"**Similarity Score:** {overall_score:.2f}%") | |
| # Adjusted grading scale based on combined score | |
| if overall_score > 80: | |
| st.success("Excellent match! Your resume closely aligns with the job description.") | |
| elif overall_score > 65: | |
| st.info("Strong match! Your resume aligns well, but a few minor tweaks could help.") | |
| elif overall_score > 50: | |
| st.warning("Moderate match. Your resume has some relevant information, but consider emphasizing relevant skills.") | |
| elif overall_score > 35: | |
| st.error("Low match. Your resume does not align well. Consider revising to highlight key skills.") | |
| else: | |
| st.error("Very low match. Your resume is significantly different from the job description. Major revisions may be needed.") | |
| else: | |
| st.error("Please paste both the job description and your resume to proceed.") |