YoussefMorad1 commited on
Commit
cac6615
·
1 Parent(s): 163016e

fixed model to handle empty skill list

Browse files
semantic_similarity/semantic_similarity.py CHANGED
@@ -31,6 +31,13 @@ def match_skills(req: SkillsMatchingRequest):
31
  user_skills = req.userSkills
32
  threshold = req.similarityThreshold
33
 
 
 
 
 
 
 
 
34
  job_texts = [j.skill for j in job_skills]
35
  user_texts = [u.skill for u in user_skills]
36
 
@@ -72,17 +79,30 @@ def match_projects_skills(req: ProjectsMatchingRequest):
72
  projects = req.projects
73
  threshold = req.similarityThreshold
74
 
 
 
 
 
 
 
 
75
  job_texts = [job.skill for job in job_skills]
76
  job_embeddings = model.encode(job_texts, convert_to_tensor=True)
77
 
78
  matched_projects: List[MatchedProject] = []
79
 
80
  for project in projects:
 
 
 
 
 
 
 
81
  project_texts = [ps.skill for ps in project.skills]
82
  project_embeddings = model.encode(project_texts, convert_to_tensor=True)
83
 
84
  similarity_matrix = util.cos_sim(job_embeddings, project_embeddings)
85
-
86
  matched_skills: List[MatchedProjectSkill] = []
87
 
88
  for i, job_skill in enumerate(job_skills):
@@ -105,7 +125,6 @@ def match_projects_skills(req: ProjectsMatchingRequest):
105
 
106
  return MatchingProjectsResponse(allAnalyzedProjects=matched_projects)
107
 
108
-
109
  # uvicorn semantic_similarity:app --host 0.0.0.0 --port 8001
110
  # if __name__ == "__main__":
111
  # uvicorn.run(app, host="0.0.0.0", port=8001, reload=False)
 
31
  user_skills = req.userSkills
32
  threshold = req.similarityThreshold
33
 
34
+ if not job_skills or not user_skills:
35
+ return MatchingSkillsResponse(
36
+ matchedSkills=[],
37
+ unmatchedJobSkills=job_skills,
38
+ unmatchedUserSkills=user_skills
39
+ )
40
+
41
  job_texts = [j.skill for j in job_skills]
42
  user_texts = [u.skill for u in user_skills]
43
 
 
79
  projects = req.projects
80
  threshold = req.similarityThreshold
81
 
82
+ if not job_skills:
83
+ return MatchingProjectsResponse(allAnalyzedProjects=[
84
+ MatchedProject(project=project, matchedSkills=[], matchedSkillsCount=0) for project in projects
85
+ ])
86
+ elif not projects:
87
+ return MatchingSkillsResponse(allAnalyzedProjects=[])
88
+
89
  job_texts = [job.skill for job in job_skills]
90
  job_embeddings = model.encode(job_texts, convert_to_tensor=True)
91
 
92
  matched_projects: List[MatchedProject] = []
93
 
94
  for project in projects:
95
+ if not project.skills:
96
+ matched_projects.append(MatchedProject(
97
+ project=project,
98
+ matchedSkills=[],
99
+ matchedSkillsCount=0
100
+ ))
101
+ continue
102
  project_texts = [ps.skill for ps in project.skills]
103
  project_embeddings = model.encode(project_texts, convert_to_tensor=True)
104
 
105
  similarity_matrix = util.cos_sim(job_embeddings, project_embeddings)
 
106
  matched_skills: List[MatchedProjectSkill] = []
107
 
108
  for i, job_skill in enumerate(job_skills):
 
125
 
126
  return MatchingProjectsResponse(allAnalyzedProjects=matched_projects)
127
 
 
128
  # uvicorn semantic_similarity:app --host 0.0.0.0 --port 8001
129
  # if __name__ == "__main__":
130
  # uvicorn.run(app, host="0.0.0.0", port=8001, reload=False)