def start(self): """ Prepares the internal information to start predicting. """ self.rule_regexes = [ (compile_rule(rule, self.relation), rule.answer) for rule in self.rules ]
def run_from_command_line(): opts = docopt(__doc__, version=iepy.__version__) relation_name = opts.get("<relation>") limit = opts.get("--limit") rule_name = opts.get("--rule") shuffle = opts.get("--shuffle") create_evidences = opts.get("--create-evidences") if limit is None: limit = -1 try: limit = int(limit) except ValueError: logging.error("Invalid limit value, it must be a number") sys.exit(1) try: relation = models.Relation.objects.get(name=relation_name) except ObjectDoesNotExist: logging.error("Relation {!r} not found".format(relation_name)) sys.exit(1) # Load rules rules = get_rules(rule_name) rule_regexes = [(rule.__name__, compile_rule(rule, relation), rule.answer) for rule in rules] # Load evidences if EvidenceCandidate.objects.all().count() == 0: create_evidences = True evidences = CandidateEvidenceManager.candidates_for_relation( relation, create_evidences, seg_limit=limit, shuffle_segs=shuffle) conflict_solver = CandidateEvidenceManager.conflict_resolution_newest_wins answers = CandidateEvidenceManager.labels_for(relation, evidences, conflict_solver) run_tests(rule_regexes, evidences, answers)
def inner(evidence): regex = compile_rule(rule_feature, relation) tokens_to_match = generate_tokens_to_match(evidence) return int(bool(refo.match(regex, tokens_to_match)))