def fake_state(): user_action = {"inform": [["pricerange", "moderate"]]} from convlab2.util.camrest.state import default_state init_belief_state = default_state()['belief_state'] kb_results = [None, None] kb_results[0] = { 'name': 'xxx_train', 'day': 'tuesday', 'dest': 'cam', 'phone': '123-3333', 'area': 'south' } kb_results[1] = { 'name': 'xxx_train', 'day': 'tuesday', 'dest': 'cam', 'phone': '123-3333', 'area': 'north' } state = { 'user_action': user_action, 'belief_state': init_belief_state, 'kb_results_dict': kb_results } ''' state = {'user_action': dict(), 'belief_state: dict(), 'kb_results_dict': kb_results } ''' return state
def _build_data(self, root_dir, processed_dir): # TODO raw_data = {} for part in ['train', 'val', 'test']: archive = zipfile.ZipFile( os.path.join(root_dir, 'data/camrest/{}.json.zip'.format(part)), 'r') with archive.open('{}.json'.format(part), 'r') as f: raw_data[part] = json.load(f) self.data = {} for part in ['train', 'val', 'test']: self.data[part] = [] for key in raw_data[part]: sess = key['dial'] state = default_state() action = {} for i, turn in enumerate(sess): state['user_action'] = turn['usr']['dialog_act'] if i + 1 == len(sess): state['terminated'] = True for da in turn['usr']['slu']: if da['slots'][0][0] != 'slot': state['belief_state'][da['slots'][0] [0]] = da['slots'][0][1] action = turn['sys']['dialog_act'] self.data[part].append([ self.vector.state_vectorize(state), self.vector.action_vectorize(action) ]) state['system_action'] = turn['sys']['dialog_act'] os.makedirs(processed_dir) for part in ['train', 'val', 'test']: with open(os.path.join(processed_dir, '{}.pkl'.format(part)), 'wb') as f: pickle.dump(self.data[part], f)
def init_session(self): """Initialize ``self.state`` with a default state, which ``tatk.util.camrest.state.default_state`` returns.""" self.state = default_state()
def __init__(self): super().__init__() self.state = default_state()