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