DeepSoft-Tech commited on
Commit
1cf3592
·
verified ·
1 Parent(s): 7a50f3a

Upload 4 files

Browse files
Files changed (4) hide show
  1. Courses.py +63 -0
  2. README.md +5 -5
  3. app.py +79 -0
  4. requirements.txt +3 -0
Courses.py ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ds_course = [['Machine Learning Crash Course by Google [Free]', 'https://developers.google.com/machine-learning/crash-course'],
2
+ ['Machine Learning A-Z by Udemy','https://www.udemy.com/course/machinelearning/'],
3
+ ['Machine Learning by Andrew NG','https://www.coursera.org/learn/machine-learning'],
4
+ ['Data Scientist Master Program of Simplilearn (IBM)','https://www.simplilearn.com/big-data-and-analytics/senior-data-scientist-masters-program-training'],
5
+ ['Data Science Foundations: Fundamentals by LinkedIn','https://www.linkedin.com/learning/data-science-foundations-fundamentals-5'],
6
+ ['Data Scientist with Python','https://www.datacamp.com/tracks/data-scientist-with-python'],
7
+ ['Programming for Data Science with Python','https://www.udacity.com/course/programming-for-data-science-nanodegree--nd104'],
8
+ ['Programming for Data Science with R','https://www.udacity.com/course/programming-for-data-science-nanodegree-with-R--nd118'],
9
+ ['Introduction to Data Science','https://www.udacity.com/course/introduction-to-data-science--cd0017'],
10
+ ['Intro to Machine Learning with TensorFlow','https://www.udacity.com/course/intro-to-machine-learning-with-tensorflow-nanodegree--nd230']]
11
+
12
+ web_course = [['Django Crash course [Free]','https://youtu.be/e1IyzVyrLSU'],
13
+ ['Python and Django Full Stack Web Developer Bootcamp','https://www.udemy.com/course/python-and-django-full-stack-web-developer-bootcamp'],
14
+ ['React Crash Course [Free]','https://youtu.be/Dorf8i6lCuk'],
15
+ ['ReactJS Project Development Training','https://www.dotnettricks.com/training/masters-program/reactjs-certification-training'],
16
+ ['Full Stack Web Developer - MEAN Stack','https://www.simplilearn.com/full-stack-web-developer-mean-stack-certification-training'],
17
+ ['Node.js and Express.js [Free]','https://youtu.be/Oe421EPjeBE'],
18
+ ['Flask: Develop Web Applications in Python','https://www.educative.io/courses/flask-develop-web-applications-in-python'],
19
+ ['Full Stack Web Developer by Udacity','https://www.udacity.com/course/full-stack-web-developer-nanodegree--nd0044'],
20
+ ['Front End Web Developer by Udacity','https://www.udacity.com/course/front-end-web-developer-nanodegree--nd0011'],
21
+ ['Become a React Developer by Udacity','https://www.udacity.com/course/react-nanodegree--nd019']]
22
+
23
+ android_course = [['Android Development for Beginners [Free]','https://youtu.be/fis26HvvDII'],
24
+ ['Android App Development Specialization','https://www.coursera.org/specializations/android-app-development'],
25
+ ['Associate Android Developer Certification','https://grow.google/androiddev/#?modal_active=none'],
26
+ ['Become an Android Kotlin Developer by Udacity','https://www.udacity.com/course/android-kotlin-developer-nanodegree--nd940'],
27
+ ['Android Basics by Google','https://www.udacity.com/course/android-basics-nanodegree-by-google--nd803'],
28
+ ['The Complete Android Developer Course','https://www.udemy.com/course/complete-android-n-developer-course/'],
29
+ ['Building an Android App with Architecture Components','https://www.linkedin.com/learning/building-an-android-app-with-architecture-components'],
30
+ ['Android App Development Masterclass using Kotlin','https://www.udemy.com/course/android-oreo-kotlin-app-masterclass/'],
31
+ ['Flutter & Dart - The Complete Flutter App Development Course','https://www.udemy.com/course/flutter-dart-the-complete-flutter-app-development-course/'],
32
+ ['Flutter App Development Course [Free]','https://youtu.be/rZLR5olMR64']]
33
+
34
+ ios_course = [['IOS App Development by LinkedIn','https://www.linkedin.com/learning/subscription/topics/ios'],
35
+ ['iOS & Swift - The Complete iOS App Development Bootcamp','https://www.udemy.com/course/ios-13-app-development-bootcamp/'],
36
+ ['Become an iOS Developer','https://www.udacity.com/course/ios-developer-nanodegree--nd003'],
37
+ ['iOS App Development with Swift Specialization','https://www.coursera.org/specializations/app-development'],
38
+ ['Mobile App Development with Swift','https://www.edx.org/professional-certificate/curtinx-mobile-app-development-with-swift'],
39
+ ['Swift Course by LinkedIn','https://www.linkedin.com/learning/subscription/topics/swift-2'],
40
+ ['Objective-C Crash Course for Swift Developers','https://www.udemy.com/course/objectivec/'],
41
+ ['Learn Swift by Codecademy','https://www.codecademy.com/learn/learn-swift'],
42
+ ['Swift Tutorial - Full Course for Beginners [Free]','https://youtu.be/comQ1-x2a1Q'],
43
+ ['Learn Swift Fast - [Free]','https://youtu.be/FcsY1YPBwzQ']]
44
+ uiux_course = [['Google UX Design Professional Certificate','https://www.coursera.org/professional-certificates/google-ux-design'],
45
+ ['UI / UX Design Specialization','https://www.coursera.org/specializations/ui-ux-design'],
46
+ ['The Complete App Design Course - UX, UI and Design Thinking','https://www.udemy.com/course/the-complete-app-design-course-ux-and-ui-design/'],
47
+ ['UX & Web Design Master Course: Strategy, Design, Development','https://www.udemy.com/course/ux-web-design-master-course-strategy-design-development/'],
48
+ ['The Complete App Design Course - UX, UI and Design Thinking','https://www.udemy.com/course/the-complete-app-design-course-ux-and-ui-design/'],
49
+ ['DESIGN RULES: Principles + Practices for Great UI Design','https://www.udemy.com/course/design-rules/'],
50
+ ['Become a UX Designer by Udacity','https://www.udacity.com/course/ux-designer-nanodegree--nd578'],
51
+ ['Adobe XD Tutorial: User Experience Design Course [Free]','https://youtu.be/68w2VwalD5w'],
52
+ ['Adobe XD for Beginners [Free]','https://youtu.be/WEljsc2jorI'],
53
+ ['Adobe XD in Simple Way','https://learnux.io/course/adobe-xd']]
54
+
55
+ resume_videos = ['https://youtu.be/y8YH0Qbu5h4','https://youtu.be/J-4Fv8nq1iA',
56
+ 'https://youtu.be/yp693O87GmM','https://youtu.be/UeMmCex9uTU',
57
+ 'https://youtu.be/dQ7Q8ZdnuN0','https://youtu.be/HQqqQx5BCFY',
58
+ 'https://youtu.be/CLUsplI4xMU','https://youtu.be/pbczsLkv7Cc']
59
+
60
+ interview_videos = ['https://youtu.be/Ji46s5BHdr0','https://youtu.be/seVxXHi2YMs',
61
+ 'https://youtu.be/9FgfsLa_SmY','https://youtu.be/2HQmjLu-6RQ',
62
+ 'https://youtu.be/DQd_AlIvHUw','https://youtu.be/oVVdezJ0e7w'
63
+ 'https://youtu.be/JZK1MZwUyUU','https://youtu.be/CyXLhHQS3KY']
README.md CHANGED
@@ -1,10 +1,10 @@
1
  ---
2
- title: Shortlist Rank Resumes
3
- emoji: 🐠
4
- colorFrom: gray
5
- colorTo: purple
6
  sdk: streamlit
7
- sdk_version: 1.31.0
8
  app_file: app.py
9
  pinned: false
10
  ---
 
1
  ---
2
+ title: Resume Analyser
3
+ emoji: 🐨
4
+ colorFrom: pink
5
+ colorTo: pink
6
  sdk: streamlit
7
+ sdk_version: 1.28.1
8
  app_file: app.py
9
  pinned: false
10
  ---
app.py ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import os
3
+ import fitz # PyMuPDF
4
+ from sklearn.feature_extraction.text import TfidfVectorizer
5
+ from sklearn.metrics.pairwise import cosine_similarity
6
+ from spellchecker import SpellChecker # Import the SpellChecker class from pyspellchecker
7
+ import tempfile
8
+ import pandas as pd
9
+
10
+ st.title("RESUME RANKER")
11
+
12
+ # User input for skills
13
+ skills = st.text_input("Enter Skills (comma-separated):")
14
+
15
+ # User input for job description
16
+ job_description = st.text_area("Enter Job Description:")
17
+
18
+ # User input for uploading multiple PDF resumes
19
+ pdf_resumes = st.file_uploader("Upload Resumes/CVs", type=["pdf"], accept_multiple_files=True)
20
+
21
+ if st.button("Rank Resumes"):
22
+ if not pdf_resumes:
23
+ st.warning("Please upload PDF resumes.")
24
+ else:
25
+ skills = [skill.strip() for skill in skills.split(',')]
26
+ job_description = job_description.lower()
27
+ resume_data = []
28
+
29
+ # Function to extract text from a PDF file using PyMuPDF (fitz)
30
+ def extract_text_from_pdf(pdf_path):
31
+ text = ""
32
+ with fitz.open(pdf_path) as doc:
33
+ for page in doc:
34
+ text += page.get_text()
35
+ return text
36
+
37
+ # Loop through all uploaded PDF resumes and extract text
38
+ for pdf_resume in pdf_resumes:
39
+ if pdf_resume.type == "application/pdf":
40
+ with tempfile.NamedTemporaryFile(delete=False) as temp_pdf:
41
+ temp_pdf.write(pdf_resume.read())
42
+ temp_pdf_name = temp_pdf.name
43
+ pdf_text = extract_text_from_pdf(temp_pdf_name).lower()
44
+ resume_data.append((pdf_resume.name, pdf_text))
45
+ os.remove(temp_pdf_name)
46
+
47
+ if not resume_data:
48
+ st.warning("No PDF resumes found in the uploaded files.")
49
+ else:
50
+ resume_rankings = []
51
+
52
+ # Loop through resumes and check for the presence of input skills
53
+ for resume_name, resume_text in resume_data:
54
+ matching_skills = [skill for skill in skills if skill.lower() in resume_text]
55
+ similarity_score =( len(matching_skills) / len(skills) )# Calculate a simple similarity score
56
+ missing_skills = [skill for skill in skills if skill.lower() not in resume_text]
57
+
58
+ # Calculate the cosine similarity between job description and resume
59
+ tfidf_vectorizer = TfidfVectorizer()
60
+ job_description_matrix = tfidf_vectorizer.fit_transform([job_description])
61
+ resume_matrix = tfidf_vectorizer.transform([resume_text])
62
+ job_description_similarity = cosine_similarity(job_description_matrix, resume_matrix)
63
+ job_description_similarity = (job_description_similarity[0][0])
64
+
65
+ similarity_score = round(similarity_score * 100, 2)
66
+ job_description_similarity = round(job_description_similarity * 100, 2)
67
+
68
+ resume_rankings.append((resume_name, f"{similarity_score}%", f"{job_description_similarity}%", missing_skills))
69
+
70
+ # Sort the resumes by similarity score in descending order
71
+ resume_rankings.sort(key=lambda x: x[1], reverse=True)
72
+
73
+ # Create a DataFrame to display the results
74
+ df = pd.DataFrame(resume_rankings, columns=["File Name", "Skills Match ", "Job Description Match ", "Missing Skills"])
75
+
76
+
77
+
78
+ st.subheader("Ranked Resumes:")
79
+ st.dataframe(df)
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ PyMuPDF
2
+ pyspellchecker
3
+ scikit-learn