示例#1
0
    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]
示例#2
0
	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]