def __init__(self,sentence, nlp=None):
        self.sentence = sentence
        self.variables = find_variables(sentence, nlp, with_unit=True)
        # Add last unknown manually because find_unknown_variable only finds one unknown:
        self.variables.append(Variable(symbols[len(self.variables)], self.variables[2].name[2:], '?'))

        self.total_objects = self.variables[0]
        self.total_price = self.variables[-3]
        self.unknown_variables = self.variables[-2:]
        self.prices = self.variables[1:-3]

        self.nlp = nlp
Beispiel #2
0
    def __init__(self, sentence, nlp=None):
        self.sentence = sentence
        self.variables = find_variables(sentence, nlp, with_percent=True)
        # Add last unknown manually because find_unknown_variable only finds one unknown:
        self.variables.append(
            Variable(symbols[len(self.variables)], self.variables[2].name[5:],
                     '?'))

        self.total_amount = self.variables[0]
        self.total_proportion = self.variables[-3]
        self.unknown_variables = self.variables[-2:]
        self.proportions = self.variables[1:-len(self.unknown_variables) - 1]

        self.nlp = nlp
Beispiel #3
0
    def __init__(self,sentence, nlp=None):
        self.sentence = sentence
        self.variables = find_variables(sentence, nlp)
        self.nlp = nlp

        self.total_hotels = self.variables.pop(0).value

        self.variable_dict = {}

        # assigning variable to hotels
        for i in range(self.total_hotels):
            self.variable_dict[i+1] = symbols[i]

        first_plural_noun, first_singular_noun = self.get_variable_nouns()

        self.formatted_formulas = []
        formula_functions = find_more_or_less(sentence, nlp)

        # create formula's of the 8 more in a than b
        for i in range(len(formula_functions)):
            formula = formula_functions[i]

            # filter on sentence
            current_variables = self.variables[i*3:(i+1)*3]

            tourist_var = [x for x in current_variables if x.name == first_plural_noun][0]
            hotel_vars = [x for x in current_variables if x.name == first_singular_noun]

            hotelvar1 = self.variable_dict[hotel_vars[0].value]
            hotelvar2 = self.variable_dict[hotel_vars[1].value]

            formatted_formula = formula(hotelvar1, hotelvar2, tourist_var.value)

            self.formatted_formulas.append(formatted_formula)

        # format the final result
        self.format_result_formulas()
 def __init__(self, sentence, nlp=None):
     self.sentence = sentence
     self.variables = find_variables(sentence, nlp)
    def __init__(self, sentence, nlp=None):
        self.sentence = sentence
        self.variables = find_variables(sentence, nlp)
        self.nlp = nlp
        
        # Data
        trains = []
        time_difference = None
        initial_distance = None
        # Questions
        time_meeting = None
        distance_meeting = None
        
        questions = self.find_questions()
        assert len(questions) > 0
        
        self.variables += questions
        for variable in self.variables:
            name = variable.name
            if name == "km/h":
                trains.append(variable)
            elif name == "h":
                time_difference = variable
            elif name == "km":
                initial_distance = variable
            elif name == "time":
                time_meeting = variable
            elif name == "distance":
                distance_meeting = variable
        assert len(trains) == 2
        assert time_difference or initial_distance
       

        self.formatted_formulas = []
        self.formatted_formulas.append("# Data #")
        self.formatted_formulas.append(
                f"trains: {trains[0]} and {trains[1]}")
        if initial_distance:
            self.formatted_formulas.append(
                f"initial distance: {initial_distance}")
        if time_difference:
            self.formatted_formulas.append(
                f"time difference: {time_difference}")
        
        if not time_meeting:
            time_meeting = Variable(get_symbol(), "time", "(auxiliar)")
#        if not distance_meeting:
#            distance_meeting = Variable(get_symbol(), "distance", "(auxiliar)")

        self.formatted_formulas.append(str(time_meeting))
        if distance_meeting:
            self.formatted_formulas.append(str(distance_meeting))


        self.formatted_formulas.append("# Solution #")        
        t1_meeting_distance = f"{trains[0].symbol} * {time_meeting.symbol}"
        e1 = t1_meeting_distance
        t1_initial_distance = None
        if time_difference:
            t1_initial_distance = f"{trains[0].symbol} * {time_difference.symbol}"
            e1 += f" + {t1_initial_distance}"
        
        t2_symbol = f"{trains[1].symbol}"
        t2_symbol_neg = f"(-{t2_symbol})"
        t2_initial_distance = None
        if initial_distance:
            t2_symbol = t2_symbol_neg
            t2_symbol_neg = f"{trains[1].symbol}"
            t2_initial_distance = f"{initial_distance.symbol}"
            
        t2_meeting_distance = f"{t2_symbol} * {time_meeting.symbol}"
        e2 = t2_meeting_distance
        if initial_distance:
            e2 += f" + {t2_initial_distance}"

        if distance_meeting:
            self.formatted_formulas.append(f"{distance_meeting.symbol} = {e1}")
            self.formatted_formulas.append(f"{distance_meeting.symbol} = {e2}")
        
        # The trains meet when they are at the same position    
        self.formatted_formulas.append(f"{e1} = {e2}")
        
        
        """