def metric_rewrite(self, possible_rules, narrative): candidate_narratives = [] candidate_rules = [] #Check all possible rules for result_rule_pair in possible_rules: #Make a new candidate narrative candidate_narrative = narrative.Copy() #Get a new candidate rule candidate_rule = result_rule_pair[1] #Check if the rule has social results social_results = self.get_social_results(candidate_rule, candidate_narrative) #If so we have a potential narrative/rule if len(social_results) > 0: result_candidate = self.applyRule(result_rule_pair, social_results, candidate_narrative) candidate_narratives.append(result_candidate) candidate_rules.append(candidate_rule) #If we have potential rules, we can now pick the best narrative #based off of metrics if len(candidate_narratives) > 0: #First gather all the metrics metric_results = [] for candidate_narrative in candidate_narratives: metrics = Metrics(candidate_narrative.Copy(), self._metrics_to_optimize_name_only, self._social_graph.get_preconditions()) metric_results.append(metrics.getMetrics(True)) #Now, using these results and our weights, pick the best metric optimal_narrative = self.pick_optimal_narrative(metric_results) #Increment the number of applications self.inc_num_applications(candidate_rules[optimal_narrative]) #Set the new narrative self._final_narrative = candidate_narratives[optimal_narrative]
def metric_rewrite(self, possible_rules, narrative): candidate_narratives = [] candidate_rules = [] #Check all possible rules for result_rule_pair in possible_rules: #Make a new candidate narrative candidate_narrative = narrative.Copy() #Get a new candidate rule candidate_rule = result_rule_pair[1] #Check if the rule has social results social_results = self.get_social_results(candidate_rule, candidate_narrative) #If so we have a potential narrative/rule if len(social_results) > 0: result_candidate = self.applyRule(result_rule_pair, social_results, candidate_narrative) candidate_narratives.append(result_candidate) candidate_rules.append(candidate_rule) #If we have potential rules, we can now pick the best narrative #based off of metrics if len(candidate_narratives) > 0: #First gather all the metrics metric_results = [] for candidate_narrative in candidate_narratives: metrics = Metrics(candidate_narrative.Copy(), self._metrics_to_optimize_name_only, self._social_graph.get_preconditions()) metric_results.append(metrics.getMetrics(True)) #Now, using these results and our weights, pick the best metric optimal_narrative = self.pick_optimal_narrative(metric_results) #Increment the number of applications self.inc_num_applications(candidate_rules[optimal_narrative]) #Set the new narrative self._final_narrative = candidate_narratives[optimal_narrative]