File size: 3,735 Bytes
9e80f82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import streamlit as st
from pdf_loader import load_btyes_io
from core import pipeline

# Developer Details
developer_details = {
    "Sudhir Sharma": {
        "Education": "B.Tech in Computer Science and Engineering, IIT Bhilai, 2024",
        "Email": "[email protected]",
        "GitHub": "[GitHub Profile](https://github.com/Sudhir878786)",
        "LinkedIn": "[LinkedIn Profile](https://www.linkedin.com/in/sudhirsharma87/)"
    }
}


def inference(query, files, embedding_type):

    # pdfReader = PyPDF2.PdfReader(files[0])
    # text = ''
    # for page in pdfReader.pages:
    #     text += page.extract_text()
    # st.write(text)

    results, _ = pipeline(query, load_btyes_io(files), embedding_type=embedding_type)
    prob_per_documents = {result['name']: result['similarity'] for result in results}
    return prob_per_documents

st.sidebar.header("Developer Details")
selected_developer = st.sidebar.selectbox("Select a developer", list(developer_details.keys()))
st.sidebar.markdown(developer_details[selected_developer]["Education"])
st.sidebar.markdown(developer_details[selected_developer]["Email"])
st.sidebar.markdown(developer_details[selected_developer]["GitHub"])
st.sidebar.markdown(developer_details[selected_developer]["LinkedIn"])

sample_files = [
    "documents/business.pdf",
    "documents/data_science.pdf",
]        

sample_job_descriptions = {
    "Software Engineer": """We are looking for a software engineer with experience in Python and web development. The ideal candidate should have a strong background in building scalable and robust applications. Knowledge of frameworks such as Flask and Django is a plus. Experience with front-end technologies like HTML, CSS, and JavaScript is desirable. The candidate should also have a good understanding of databases and SQL. Strong problem-solving and communication skills are required for this role.
    """,
    "Data Scientist": """We are seeking a data scientist with expertise in machine learning and statistical analysis. The candidate should have a solid understanding of data manipulation, feature engineering, and model development. Proficiency in Python and popular data science libraries such as NumPy, Pandas, and Scikit-learn is required. Experience with deep learning frameworks like TensorFlow or PyTorch is a plus. Strong analytical and problem-solving skills are essential for this position.
    """
}

st.sidebar.header("Sample Files")
for sample_file in sample_files:
    st.sidebar.markdown(f"[{sample_file}](./sample_files/{sample_file})")

st.sidebar.header("Sample Job Descriptions")
selected_job = st.sidebar.selectbox("Select a job description", list(sample_job_descriptions.keys()))
st.sidebar.markdown("```")
st.sidebar.code(sample_job_descriptions[selected_job])
st.title("👨🏼‍🎓Resume Ranker ")

query = st.text_area("Job Description", height=200, value=sample_job_descriptions[selected_job])
uploaded_files = st.file_uploader("Upload Resume", accept_multiple_files=True, type=["txt", "pdf"])
embedding_type = st.selectbox("Embedding Type", ["bert", "minilm", "tfidf"])

if st.button("Submit"):
    if not query:
        st.warning("Please enter a job description.")
    elif not uploaded_files:
        st.warning("Please upload one or more resumes.")
    else:
        with st.spinner("Processing..."):
            results = inference(query, uploaded_files,embedding_type)
        st.subheader("Results")
        for document, similarity in results.items():
            # make similiarty round to 2 decimal place
            if similarity >= 1:
                similarity = round(similarity, 2)
            st.write(f"- {document}:")
            st.progress(similarity, text=f"{similarity:.2%}")