mrfirdauss commited on
Commit
d22d262
·
verified ·
1 Parent(s): 7202869

Update classificator.py

Browse files
Files changed (1) hide show
  1. classificator.py +51 -51
classificator.py CHANGED
@@ -1,52 +1,52 @@
1
- from sentence_transformers import SentenceTransformer
2
- from sklearn.metrics.pairwise import cosine_similarity
3
- import numpy as np
4
- import pandas as pd
5
- import pickle
6
- st = SentenceTransformer('all-mpnet-base-v2')
7
- filename = 'svc.pkl'
8
-
9
- with open(filename, 'rb') as file:
10
- model = pickle.load(file)
11
-
12
- # role_req-exp 0.341522
13
- # role_pos 0.350747
14
- # major_similarity 0.846268
15
- # skill_similarity 0.774542
16
- # score 0.986356
17
- # cv = {
18
- # "experiences": str(body.cv.experiences),
19
- # "positions": str(positions),
20
- # "userMajors": str(userMajors),
21
- # "skills": str(body.cv.skills),
22
- # "yoe": yoe
23
- # }
24
- # job = {
25
- # "jobDesc": body.job.jobDesc,
26
- # "role": body.job.role,
27
- # "majors": str(body.job.majors),
28
- # "skills": str(body.job.skills),
29
- # "minYoE": body.job.minYoE
30
- # }
31
-
32
- def predict(cv, job):
33
- diffYoe = cv['yoe'] - job['minYoE']
34
- results = {}
35
- role_req_exp = cosine_similarity(st.encode(cv['experiences']).reshape(1,-1), st.encode(job['role']+'\n'+job['jobDesc']).reshape(1,-1))[0][0]
36
- role_pos = cosine_similarity(st.encode(cv['positions']).reshape(1,-1), st.encode(job['role']).reshape(1,-1))[0][0]
37
- major_similarity = cosine_similarity(st.encode(cv['userMajors']).reshape(1,-1), st.encode(job['majors']).reshape(1,-1))[0][0]
38
- skill_similarity = cosine_similarity(st.encode(cv['skills']).reshape(1,-1), st.encode(job['skills']).reshape(1,-1))[0][0]
39
- score_yoe = 0.5 if diffYoe == -1 else (0 if diffYoe < 0 else 1)
40
- score = 0.35 * role_req_exp + 0.1 * role_pos + 0.15 * major_similarity + 0.3* score_yoe + 0.1 * skill_similarity
41
- data = [{
42
- 'role_req-exp': role_req_exp,
43
- 'role_pos': role_pos,
44
- 'major_similarity': major_similarity,
45
- 'skill_similarity': skill_similarity,
46
- 'score': score
47
- }]
48
- X = pd.DataFrame.from_dict(data)
49
- res = model.predict(X)
50
- results['score'] = model.predict_proba(X)[:, 1]
51
- results['is_accepted'] = np.argmax(res)
52
  return results
 
1
+ from sentence_transformers import SentenceTransformer
2
+ from sklearn.metrics.pairwise import cosine_similarity
3
+ import numpy as np
4
+ import pandas as pd
5
+ import pickle
6
+ st = SentenceTransformer('all-mpnet-base-v2')
7
+ filename = 'svc.pkl'
8
+
9
+ with open(filename, 'rb') as file:
10
+ model = pickle.load(file)
11
+
12
+ # role_req-exp 0.341522
13
+ # role_pos 0.350747
14
+ # major_similarity 0.846268
15
+ # skill_similarity 0.774542
16
+ # score 0.986356
17
+ # cv = {
18
+ # "experiences": str(body.cv.experiences),
19
+ # "positions": str(positions),
20
+ # "userMajors": str(userMajors),
21
+ # "skills": str(body.cv.skills),
22
+ # "yoe": yoe
23
+ # }
24
+ # job = {
25
+ # "jobDesc": body.job.jobDesc,
26
+ # "role": body.job.role,
27
+ # "majors": str(body.job.majors),
28
+ # "skills": str(body.job.skills),
29
+ # "minYoE": body.job.minYoE
30
+ # }
31
+
32
+ def predict(cv, job):
33
+ diffYoe = cv['yoe'] - job['minYoE']
34
+ results = {}
35
+ role_req_exp = cosine_similarity(st.encode(cv['experiences']).reshape(1,-1), st.encode(job['role']+'\n'+job['jobDesc']).reshape(1,-1))[0][0] if cv['experiences'] != '[]' else 0
36
+ role_pos = cosine_similarity(st.encode(cv['positions']).reshape(1,-1), st.encode(job['role']).reshape(1,-1))[0][0] if cv['positions'] != '[]' else 0
37
+ major_similarity = cosine_similarity(st.encode(cv['userMajors']).reshape(1,-1), st.encode(job['majors']).reshape(1,-1))[0][0] if cv['useMajors'] != '[]' else 0
38
+ skill_similarity = cosine_similarity(st.encode(cv['skills']).reshape(1,-1), st.encode(job['skills']).reshape(1,-1))[0][0] if cv['skills'] != '[]' else 0
39
+ score_yoe = 0.5 if diffYoe == -1 else (0 if diffYoe < 0 else 1)
40
+ score = 0.35 * role_req_exp + 0.1 * role_pos + 0.15 * major_similarity + 0.3* score_yoe + 0.1 * skill_similarity
41
+ data = [{
42
+ 'role_req-exp': role_req_exp,
43
+ 'role_pos': role_pos,
44
+ 'major_similarity': major_similarity,
45
+ 'skill_similarity': skill_similarity,
46
+ 'score': score
47
+ }]
48
+ X = pd.DataFrame.from_dict(data)
49
+ res = model.predict(X)
50
+ results['score'] = model.predict_proba(X)[:, 1]
51
+ results['is_accepted'] = np.argmax(res)
52
  return results