Example #1
0
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
Example #2
0
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