def parse_one_eva_instance()

in E2E_TOD/dataclass.py [0:0]


    def parse_one_eva_instance(self, one_instance, ref_bs, ref_act, ref_db, input_contain_db):
        '''
            example data instance:
                {'dial_id': 'sng0547',
                 'turn_num': 0,
                 'user': 'i am looking for a high end indian restaurant, are there any in town?',
                 'bspn_gen': '[restaurant] food indian pricerange expensive',
                 'bsdx': '[restaurant] food pricerange',
                 'resp_gen': 'there are [value_choice] . what area of town would you like?',
                 'resp': 'there are [value_choice] [value_price] [value_food] restaurant -s in cambridge. is there an area of town that you prefer?',
                 'aspn_gen': '<eos_db> [restaurant] [inform] choice [request] area',
                 'aspn': '[restaurant] [inform] food price choice [request] area',
                 'dspn_gen': '[restaurant]',
                 'dspn': '[restaurant]',
                 'bspn': '[restaurant] food indian pricerange expensive',
                 'pointer': 'restaurant: >3; '}
            input_contain_db: whether input contain db result
            ref_db: if input contain db, whether using the reference db result
        '''
        res_dict = {}
        res_dict['dial_id'] = one_instance['dial_id']
        res_dict['turn_num'] = one_instance['turn_num']
        res_dict['user'] = self.parse_id_to_text(one_instance['user'])
        res_dict['bspn'] = self.parse_id_to_text(one_instance['bspn'])
        res_dict['bsdx'] = self.parse_id_to_text(one_instance['bsdx'])
        res_dict['aspn'] = self.parse_id_to_text(one_instance['aspn'])
        res_dict['bspn_reform'] = self.parse_id_to_text(one_instance['bspn_reform'])
        res_dict['bsdx_reform'] = self.parse_id_to_text(one_instance['bsdx_reform'])
        res_dict['aspn_reform'] = self.parse_id_to_text(one_instance['aspn_reform'])
        res_dict['resp'] = self.parse_id_to_text(one_instance['resp'])
        res_dict['dspn_gen'] = self.parse_id_to_text(one_instance['dspn'])
        res_dict['dspn'] = self.parse_id_to_text(one_instance['dspn'])
        
        res_dict['db'] = self.parse_id_to_text(one_instance['db'])
        res_dict['pointer'] = one_instance['pointer']
        res_dict['turn_domain'] = one_instance['turn_domain']
        pointer_turn_domain =  res_dict['turn_domain'][-1]
        pointer_text = self.reader.db.pointerBack(res_dict['pointer'], pointer_turn_domain)
        res_dict['pointer'] = pointer_text
        res_dict['resp_gen'] = ''

        previous_context = one_instance['prev_context']
        curr_user_input = one_instance['user']
        db_input = one_instance['db']

        # belief state setup
        if ref_bs:
            res_dict['bspn_gen'] = self.parse_id_to_text(one_instance['bspn']) # do not evaluate bs generation
            bs_input_id_list = []
        else:
            res_dict['bspn_gen'] = ''
            bs_input_id_list = previous_context + curr_user_input
            bs_input_id_list = self.bs_prefix_id + [self.sos_context_token_id] + \
            bs_input_id_list[-900:] + [self.eos_context_token_id]
        # dialogue action setup
        if ref_act:
            res_dict['aspn_gen'] = self.parse_id_to_text(one_instance['aspn'])
            da_input_id_list = []
        else:
            res_dict['aspn_gen'] = ''
            if input_contain_db:
                if ref_db:
                    da_input_id_list = previous_context + curr_user_input
                    da_input_id_list = self.da_prefix_id + [self.sos_context_token_id] + \
                    da_input_id_list[-900:] + [self.eos_context_token_id] + db_input
                else:
                    da_input_id_list = previous_context + curr_user_input
                    da_input_id_list = self.da_prefix_id + [self.sos_context_token_id] + \
                    da_input_id_list[-900:] + [self.eos_context_token_id]
                    # we need to use queried db result from bs result to construct the input
            else:
                da_input_id_list = previous_context + curr_user_input
                da_input_id_list = self.da_prefix_id + [self.sos_context_token_id] + \
                da_input_id_list[-900:] + [self.eos_context_token_id]
        # nlg setup
        if input_contain_db:
            if ref_db:
                nlg_input_id_list = previous_context + curr_user_input
                nlg_input_id_list = self.nlg_prefix_id + [self.sos_context_token_id] + nlg_input_id_list[-900:] \
                + [self.eos_context_token_id] + db_input
            else:
                nlg_input_id_list = previous_context + curr_user_input
                nlg_input_id_list = self.nlg_prefix_id + [self.sos_context_token_id] + nlg_input_id_list[-900:] \
                + [self.eos_context_token_id]
                # we need to use queried db result from bs result to construct the input
        else:
            nlg_input_id_list = previous_context + curr_user_input
            nlg_input_id_list = self.nlg_prefix_id + [self.sos_context_token_id] + nlg_input_id_list[-900:] \
            + [self.eos_context_token_id]
        return bs_input_id_list, da_input_id_list, nlg_input_id_list, res_dict