def select_action(self, dialogue_act):

        sys_act = deepcopy(dialogue_act)
        print("----------self.dialogue_state-----------------")
        print(self.dialogue_state)
        print(self.prev_dialog_state)
        # if self.init_flag == True:
        #     self.init_flag = False
        #     if not self.dialogue_state.has('LOCATION') and not self.dialogue_state.has('GENRE') and not self.dialogue_state.has('MAXIMUM_AMOUNT'):
        #         sys_act['sys_act_type'] = 'REPEAT_QUESTION'
        #         self.prev_dialog_state = self.dialogue_state
        #         return sys_act

        # 前と同じなら、質問が理解できてない
        if self.dialogue_state.get_data_by_key(
                'LOCATION') == self.prev_dialog_state.get_data_by_key(
                    'LOCATION') and self.dialogue_state.get_data_by_key(
                        'GENRE') == self.prev_dialog_state.get_data_by_key(
                            'GENRE') and self.dialogue_state.get_data_by_key(
                                'MAXIMUM_AMOUNT'
                            ) == self.prev_dialog_state.get_data_by_key(
                                'MAXIMUM_AMOUNT'):
            print("repeat")
            sys_act['sys_act_type'] = 'REPEAT_QUESTION'
            # self.prev_dialog_state = self.dialogue_state
            return sys_act

        if not self.dialogue_state.has('LOCATION'):
            sys_act['sys_act_type'] = 'REQUEST_LOCATION'
        elif not self.dialogue_state.has('GENRE'):
            sys_act['sys_act_type'] = 'REQUEST_GENRE'
        elif not self.dialogue_state.has('MAXIMUM_AMOUNT'):
            sys_act['sys_act_type'] = 'REQUEST_BUDGET'
        else:
            api = HotPepperGourmetAPI()
            area = self.dialogue_state.get_area()
            food = self.dialogue_state.get_food()
            budget = self.dialogue_state.get_budget()
            restaurant = api.search_restaurant(area=area,
                                               food=food,
                                               budget=budget)
            sys_act['sys_act_type'] = 'INFORM_RESTAURANT'
            sys_act['restaurant'] = restaurant

        self.prev_dialog_state = deepcopy(self.dialogue_state)
        return sys_act
Example #2
0
    def select_action(self, dialogue_act):
        from copy import deepcopy
        sys_act = deepcopy(dialogue_act)
        if not self.dialogue_state.has('LOCATION'):
            sys_act['sys_act_type'] = 'REQUEST_LOCATION'
        elif not self.dialogue_state.has('GENRE'):
            sys_act['sys_act_type'] = 'REQUEST_GENRE'
        elif not self.dialogue_state.has('MAXIMUM_AMOUNT'):
            sys_act['sys_act_type'] = 'REQUEST_BUDGET'
        else:
            api = HotPepperGourmetAPI()
            area = self.dialogue_state.get_area()
            food = self.dialogue_state.get_food()
            budget = self.dialogue_state.get_budget()
            restaurant = api.search_restaurant(area=area, food=food,budget=budget)
            sys_act['sys_act_type'] = 'INFORM_RESTAURANT'
            sys_act['restaurant'] = restaurant

        return sys_act
Example #3
0
    def select_action(self, dialogue_act):
        from copy import deepcopy
        sys_act = deepcopy(dialogue_act)
        # if dialogue_act['user_act_type'] == 'OTHER':
        #     reply = self.dialogue_api.reply(dialogue_act['utt'])
        #     sys_act['sys_act_type'] = 'CHAT'
        #     sys_act['utt'] = reply
        # el
        if not self.dialogue_state.has('LOCATION'):
            print('setting LOCATION')
            sys_act['sys_act_type'] = 'REQUEST_LOCATION'
        elif not self.dialogue_state.has('GENRE'):
            print('setting GENRE')
            sys_act['sys_act_type'] = 'REQUEST_GENRE'
        else:
            self.gourmet_api = HotPepperGourmetAPI()
            area = self.dialogue_state.get_area()
            food = self.dialogue_state.get_food()
            restaurant = self.gourmet_api.search_restaurant(area=area, food=food)
            sys_act['sys_act_type'] = 'INFORM_RESTAURANT'
            sys_act['restaurant'] = restaurant
            # self.dialogue_state.clear()

        return sys_act
Example #4
0
 def setUp(self):
     self.api = HotPepperGourmetAPI()