def decode_slot(model, utterance, class_string, memory, cuda): sent_lis = process_sent(utterance) if len(sent_lis) == 0: return [] data, lengths = SlotDataset.data_info(utterance, memory, cuda) act_inputs, slot_label = SlotDataset.label_info(class_string, memory, cuda) # Model processing ## encoder outputs, hiddens = model.encoder(data, lengths) #h_T = hiddens[0].transpose(0, 1).contiguous().view(-1, model.enc_hid_all_dim) h_T = hiddens[0] ## slot prediction slot_scores = model.slot_predict(h_T, act_inputs) slot_scores = slot_scores.data.cpu().view(-1,).numpy() pred_slots = [i for i,p in enumerate(slot_scores) if p > 0.5] slots = [memory['idx2slot'][i] for i in pred_slots] return slots
def decode_slot(model, cnet, class_string, memory, cuda): result = process_cn_example(cnet, memory['enc2idx']) if result is None: return [] data, lengths = SlotDataset.data_info(cnet, memory, cuda) act_inputs, slot_label = SlotDataset.label_info(class_string, memory, cuda) # Model processing ## encoder outputs, hiddens = model.encoder(data, lengths) h_T = hiddens[0].transpose(0, 1).contiguous().view(-1, model.enc_hid_all_dim) ## slot prediction slot_scores = model.slot_predict(h_T, act_inputs) slot_scores = slot_scores.data.cpu().view(-1, ).numpy() pred_slots = [i for i, p in enumerate(slot_scores) if p > 0.5] slots = [memory['idx2slot'][i] for i in pred_slots] return slots