Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DATA_DIR="."
- # load Pickle file
- def load_ds(fname=os.path.join(DATA_DIR,'/atis.train.pkl'), verbose=True):
- with open(fname, 'rb') as stream:
- ds,dicts = pickle.load(stream)
- if verbose:
- print('Done loading: ', fname)
- print(' samples: {:4d}'.format(len(ds['query'])))
- print(' vocab_size: {:4d}'.format(len(dicts['token_ids'])))
- print(' slot count: {:4d}'.format(len(dicts['slot_ids'])))
- print(' intent count: {:4d}'.format(len(dicts['intent_ids'])))
- return ds,dicts
- # convert Pickle file to arrays
- def load_atis(filename, add_start_end_token=False, verbose=True):
- train_ds, dicts = load_ds(os.path.join(DATA_DIR,filename), verbose)
- t2i, s2i, in2i = map(dicts.get, ['token_ids', 'slot_ids','intent_ids'])
- i2t, i2s, i2in = map(lambda d: {d[k]:k for k in d.keys()}, [t2i,s2i,in2i])
- query, slots, intent = map(train_ds.get, ['query', 'slot_labels', 'intent_labels'])
- if add_start_end_token:
- i2s[178] = 'BOS'
- i2s[179] = 'EOS'
- s2i['BOS'] = 178
- s2i['EOS'] = 179
- input_tensor = []
- target_tensor = []
- query_data = []
- intent_data = []
- slot_data = []
- to_show = np.random.randint(0, len(query)-1, 5)
- for i in range(len(query)):
- input_tensor.append(query[i])
- slot_text = []
- slot_vector = []
- for j in range(len(query[i])):
- slot_text.append(i2s[slots[i][j]])
- slot_vector.append(slots[i][j])
- if add_start_end_token:
- slot_text[0] = 'BOS'
- slot_vector[0] = 178
- slot_text[-1] = 'EOS'
- slot_vector[-1]= 179
- target_tensor.append(slot_vector)
- q = ' '.join(map(i2t.get, query[i]))
- query_data.append(q.replace('BOS', '').replace('EOS',''))
- intent_data.append(i2in[intent[i][0]])
- slot = ' '.join(slot_text)
- slot_data.append(slot[1:-1])
- if i in to_show and verbose:
- print('Query text:', q)
- print('Query vector: ', query[i])
- print('Intent label: ', i2in[intent[i][0]])
- print('Slot text: ', slot)
- print('Slot vector: ', slot_vector)
- print('*'*74)
- query_data = np.array(query_data)
- intent_data = np.array(intent_data)
- slot_data = np.array(slot_data)
- intent_data_label = np.array(intent).flatten()
- return t2i, s2i, in2i, i2t, i2s, i2in, input_tensor, target_tensor,
- query_data, intent_data, intent_data_label, slot_data
- # load ATIS training dataset
- t2i_train, s2i_train, in2i_train, i2t_train, i2s_train, i2in_train, \
- input_tensor_train, target_tensor_train, \
- query_data_train, intent_data_train, intent_data_label_train, slot_data_train = load_atis('atis.train.pkl')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement