None,
        len(tag_to_idx),
        bidirectional=opt.bidirectional,
        num_layers=opt.num_layers,
        dropout=opt.dropout,
        device=opt.device,
        pretrained_model=pretrained_model,
        pretrained_model_type=opt.pretrained_model_type,
        fix_pretrained_model=opt.fix_pretrained_model)
elif opt.task_st == 'slot_tagger_with_crf':
    model_tag = slot_tagger_with_crf.LSTMTagger_CRF(
        opt.emb_size,
        opt.hidden_size,
        None,
        len(tag_to_idx),
        bidirectional=opt.bidirectional,
        num_layers=opt.num_layers,
        dropout=opt.dropout,
        device=opt.device,
        pretrained_model=pretrained_model,
        pretrained_model_type=opt.pretrained_model_type,
        fix_pretrained_model=opt.fix_pretrained_model)
else:
    exit()

if opt.task_sc == '2tails':
    model_class = snt_classifier.sntClassifier_2tails(
        opt.hidden_size,
        len(class_to_idx),
        bidirectional=opt.bidirectional,
        num_layers=opt.num_layers,
        dropout=opt.dropout,
예제 #2
0
        opt.hidden_size,
        len(word_to_idx),
        len(slot_tag_to_idx),
        word_to_idx['<pad>'],
        slot_tag_to_idx['<pad>'],
        bidirectional=opt.bidirectional,
        num_layers=opt.num_layers,
        dropout=opt.dropout,
        device=opt.device)
elif opt.task == 'slot_tagger_with_crf':
    import models.slot_tagger_crf as slot_tagger_crf
    model_tag = slot_tagger_crf.LSTMTagger_CRF(opt.emb_size,
                                               opt.hidden_size,
                                               len(word_to_idx),
                                               len(slot_tag_to_idx),
                                               word_to_idx['<pad>'],
                                               bidirectional=opt.bidirectional,
                                               num_layers=opt.num_layers,
                                               dropout=opt.dropout,
                                               device=opt.device)

model_tag = model_tag.to(opt.device)

if not opt.testing:
    #custom init (needed maybe) ...
    model_tag.init_weights(opt.init_weight)

    # pretrained-embedding initialization for training
    if opt.read_input_word2vec:
        for word in word_to_idx:
            if word in ext_word_to_idx:
        opt.hidden_size,
        None,
        len(tag_to_idx),
        bidirectional=opt.bidirectional,
        num_layers=opt.num_layers,
        dropout=opt.dropout,
        device=opt.device,
        bert_model=model_bert,
        elmo_model=model_elmo)
elif opt.task_st == 'slot_tagger_with_crf':
    model_tag = slot_tagger_with_crf.LSTMTagger_CRF(
        opt.emb_size,
        opt.hidden_size,
        None,
        len(tag_to_idx),
        bidirectional=opt.bidirectional,
        num_layers=opt.num_layers,
        dropout=opt.dropout,
        device=opt.device,
        bert_model=model_bert,
        elmo_model=model_elmo)
else:
    exit()

if opt.task_sc == '2tails':
    model_class = snt_classifier.sntClassifier_2tails(
        opt.hidden_size,
        len(class_to_idx),
        bidirectional=opt.bidirectional,
        num_layers=opt.num_layers,
        dropout=opt.dropout,
예제 #4
0
else:
    valid_feats, valid_tags, valid_class = data_reader.read_seqtag_data_with_class(valid_data_dir, word_to_idx, tag_to_idx, class_to_idx, multiClass=opt.multiClass, keep_order=opt.testing, lowercase=opt.word_lowercase)
    test_feats, test_tags, test_class = data_reader.read_seqtag_data_with_class(test_data_dir, word_to_idx, tag_to_idx, class_to_idx, multiClass=opt.multiClass, keep_order=opt.testing, lowercase=opt.word_lowercase)

if opt.word_digit_features:
    feature_extractor = word_features.word_digit_features_extractor(device=opt.device)
    extFeats_dim = feature_extractor.get_feature_dim()
else:
    extFeats_dim = None

if opt.task_st == 'slot_tagger':
    model_tag = slot_tagger.LSTMTagger(opt.emb_size, opt.hidden_size, len(word_to_idx), len(tag_to_idx), bidirectional=opt.bidirectional, num_layers=opt.num_layers, dropout=opt.dropout, device=opt.device, extFeats_dim=extFeats_dim)
elif opt.task_st == 'slot_tagger_with_focus':
    model_tag = slot_tagger_with_focus.LSTMTagger_focus(opt.emb_size, opt.tag_emb_size, opt.hidden_size, len(word_to_idx), len(tag_to_idx), bidirectional=opt.bidirectional, num_layers=opt.num_layers, dropout=opt.dropout, device=opt.device, extFeats_dim=extFeats_dim)
elif opt.task_st == 'slot_tagger_with_crf':
    model_tag = slot_tagger_with_crf.LSTMTagger_CRF(opt.emb_size, opt.hidden_size, len(word_to_idx), len(tag_to_idx), bidirectional=opt.bidirectional, num_layers=opt.num_layers, dropout=opt.dropout, device=opt.device, extFeats_dim=extFeats_dim)
else:
    exit()

if opt.task_sc == '2tails':
    model_class = snt_classifier.sntClassifier_2tails(opt.hidden_size, len(class_to_idx), bidirectional=opt.bidirectional, num_layers=opt.num_layers, dropout=opt.dropout, device=opt.device, multi_class=opt.multiClass)
    encoder_info_filter = lambda info: info[0]
elif opt.task_sc == 'maxPooling':
    model_class = snt_classifier.sntClassifier_hiddenPooling(opt.hidden_size, len(class_to_idx), bidirectional=opt.bidirectional, num_layers=opt.num_layers, dropout=opt.dropout, device=opt.device, multi_class=opt.multiClass, pooling='max')
    encoder_info_filter = lambda info: (info[1], info[2])
elif opt.task_sc == 'hiddenCNN':
    model_class = snt_classifier.sntClassifier_hiddenCNN(opt.hidden_size, len(class_to_idx), bidirectional=opt.bidirectional, num_layers=opt.num_layers, dropout=opt.dropout, device=opt.device, multi_class=opt.multiClass)
    encoder_info_filter = lambda info: (info[1], info[2])
elif opt.task_sc == 'hiddenAttention':
    model_class = snt_classifier.sntClassifier_hiddenAttention(opt.hidden_size, len(class_to_idx), bidirectional=opt.bidirectional, num_layers=opt.num_layers, dropout=opt.dropout, device=opt.device, multi_class=opt.multiClass)
    encoder_info_filter = lambda info: info