in dvd_generation/filters/dialogue_filters.py [0:0]
def sample_earlier_unique_object(dialogue, template): #, turn_dependencies, metadata):
if len(dialogue)==0 or template['ref_remark'] == 'no_reference':
template['earlier_unique_obj'] = -1
return
used_objects = template['used_objects']
curr_objects = template['all_unique_objs']
if len(curr_objects)==0 or len(used_objects)==0:
template['earlier_unique_obj'] = -1
return
identifiers = template['_dial_minimal_object_identifiers']
while(True):
curr_object = random.choice(curr_objects)
if len(curr_object)==3 and curr_object[2]=='ans':
continue
break
past_turns = list(range(1, len(dialogue)+1))
random.shuffle(past_turns)
past_objects = copy.deepcopy(list(used_objects))
random.shuffle(past_objects)
found_earlier = False
for turn in past_turns:
for earlier_obj_id in past_objects:
if identifiers[earlier_obj_id] != [None] and used_objects[earlier_obj_id]['original_turn']==turn:
found_earlier = True
break
if found_earlier: break
'''
temp = copy.deepcopy(list(used_objects))
pdb.set_trace()
random.shuffle(temp)
found_earlier = False
for earlier_obj_id in temp:
#earlier_obj_id = random.choice(list(used_objects))
if identifiers[earlier_obj_id] != [None]:
found_earlier = True
break
'''
if not found_earlier:
template['earlier_unique_obj'] = -1
return
identifier_attrs = curr_object[1]['side_inputs']
strip_identifier_attrs = [strip_attr_key(a) for a in identifier_attrs]
identifier = random.choice(identifiers[earlier_obj_id])
if identifier == (None,None,None,None):pdb.set_trace()
if len(identifier_attrs)!=4: pdb.set_trace()
obj_attr = {}
obj_attr_map = {k:v for k,v in zip(strip_identifier_attrs,identifier_attrs)}
for idx, i in enumerate(identifier):
if i is None:
if idx == len(identifier)-1: # Shape
val = 'thing'
else:
val = ''
else:
val = i
obj_attr[strip_identifier_attrs[idx]] = val
template['earlier_unique_obj'] = earlier_obj_id
template['earlier_unique_obj_attr'] = obj_attr
template['earlier_unique_obj_attr_map'] = obj_attr_map
template['earlier_unique_obj_node'] = curr_object[1]
return