-
Notifications
You must be signed in to change notification settings - Fork 0
/
Controller.py
104 lines (86 loc) · 2.95 KB
/
Controller.py
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
from cvConverter import Converter
from cvEvaluator.EduEvaluator import EduEvaluator
from cvEvaluator.ExpEvaluator import ExpEvaluator
from cvEvaluator.LangEvaluator import LangEvaluator
from cvEvaluator.OtherEvaluator import OtherEvaluator
from cvEvaluator.SkillEvaluator import SkillEvaluator
from cvParser.Parser import Parser
from cvEvaluator import Evaluator
import pprint
from cvScorer.Scorer import Scorer
__author__ = 'siwei'
class Controller():
def __init__(self):
self.evaluator = Evaluator.Evaluator()
self.parser = Parser()
self.converter = Converter.DocConverter()
self.scorer = Scorer()
self.cv_list = []
self.cv_scores = []
self.setup_evaluators()
self.job_function = ""
def setup_evaluators(self):
language_evaluator = LangEvaluator()
skill_evaluator = SkillEvaluator()
education_evaluator = EduEvaluator()
experience_evaluator = ExpEvaluator()
other_evaluator = OtherEvaluator()
self.evaluator.add(language_evaluator)
self.evaluator.add(skill_evaluator)
self.evaluator.add(education_evaluator)
self.evaluator.add(experience_evaluator)
self.evaluator.add(other_evaluator)
def clear(self):
self.cv_list = []
self.cv_scores = []
def setup_requirement(self, requirement):
self.evaluator.set_requirement(requirement)
def set_weight(self, weight):
self.scorer.set_weight(weight)
def set_job_function(self, job_function):
""
def evaluate(self, cvs):
self.clear()
for cv in cvs:
CV_Text = self.converter.documentToText(cv).decode('unicode_escape').encode('ascii','ignore')
cvobj = self.parser.convertToObj(CV_Text)
#pp.pprint(cvobj)
self.cv_list.append(cvobj)
self.evaluator.set_cv(cvobj)
self.cv_scores.append(self.evaluator.evaluate())
#x.print_rank()
def get_scores(self):
return self.scorer.cal_all_score(self.cv_scores)
def get_cv_list(self):
return self.cv_list
def get_cv_score(self):
return self.cv_scores
if __name__ == "__main__":
requirement = {
'education':['bachelor'],
'skill': {
'must': ['windows','vpn','Web Development'],
'good': ['xp','iOS']
},
'language':{
'must': ['English'],
'good': ['Chinese']
},
'experience':{
'must': ['engineer'],
'good': []
},
'other':['Google','reading']
}
cvs = [
"cv/LinkedIn/YaminiBhaskar.pdf",
"cv/LinkedIn/DonnabelleEmbodo.pdf",
"cv/LinkedIn/PraveenDeorani.pdf",
"cv/LinkedIn/RussellOng.pdf",
"cv/LinkedIn/YaminiBhaskar.pdf"]
pp = pprint.PrettyPrinter(indent=4)
ctrl = Controller()
ctrl.setup_evaluators()
ctrl.setup_requirement(requirement)
ctrl.evaluate(cvs)
pp.pprint(ctrl.get_scores())