print("Dev file:", dev_file) print("Test file:", test_file) print("Char emb:", char_emb) print("Bichar emb:", bichar_emb) print("Gaz file:", gaz_file) if status == 'train': print("Model saved to:", save_model_dir) # 立即把stdout缓存内容输出 sys.stdout.flush() if status == 'train': data = Data() data.model_name = model_name data.HP_gpu = gpu data.use_bichar = conf_dict['use_bichar'] data.HP_batch_size = conf_dict['HP_batch_size'] # 1 data.HP_iteration = conf_dict['HP_iteration'] # 100 data.HP_lr = conf_dict['HP_lr'] # 0.015 data.HP_lr_decay = conf_dict['HP_lr_decay'] # 0.5 data.HP_hidden_dim = conf_dict['HP_hidden_dim'] data.MAX_SENTENCE_LENGTH = conf_dict['MAX_SENTENCE_LENGTH'] data.HP_lstm_layer = conf_dict['HP_lstm_layer'] data_initialization(data, gaz_file, train_file, dev_file, test_file) if data.model_name in ['CNN_model', 'LSTM_model']: data.generate_instance_with_gaz_2(train_file, 'train') data.generate_instance_with_gaz_2(dev_file, 'dev') data.generate_instance_with_gaz_2(test_file, 'test') elif data.model_name in ['WC-LSTM_model']: data.generate_instance_with_gaz_3(train_file, 'train') data.generate_instance_with_gaz_3(dev_file, 'dev')
data.test_dir = args.test data.model_dir = args.savemodel data.dset_dir = args.savedset print("aaa", data.dset_dir) status = args.status.lower() save_model_dir = args.savemodel data.HP_gpu = torch.cuda.is_available() print("Seed num:", seed_num) data.number_normalized = True data.word_emb_dir = "../data/glove.6B.100d.txt" if status == 'train': print("MODEL: train") data_initialization(data) data.use_char = True data.HP_batch_size = 10 data.HP_lr = 0.015 data.char_seq_feature = "CNN" data.generate_instance('train') data.generate_instance('dev') data.generate_instance('test') data.build_pretrain_emb() train(data) elif status == 'decode': print("MODEL: decode") data.load(data.dset_dir) data.raw_dir = args.raw data.decode_dir = args.output data.load_model_dir = args.loadmodel data.show_data_summary() data.generate_instance('raw')
print ("Train file:", train_file) print ("Dev file:", dev_file) print ("Test file:", test_file) print ("Raw file:", raw_file) print ("Char emb:", char_emb) print ("Bichar emb:", bichar_emb) print ("Gaz file:",gaz_file) if status == 'train': print ("Model saved to:", save_model_dir) sys.stdout.flush() if status == 'train': data = Data() data.HP_gpu = gpu data.HP_use_char = False data.HP_batch_size = 10 data.use_bigram = False data.gaz_dropout = 0.5 data.norm_gaz_emb = False data.HP_fix_gaz_emb = False data_initialization(data, gaz_file, train_file, dev_file, test_file) data.generate_instance_with_gaz(train_file,'train') data.generate_instance_with_gaz(dev_file,'dev') data.generate_instance_with_gaz(test_file,'test') data.build_word_pretrain_emb(char_emb) data.build_biword_pretrain_emb(bichar_emb) data.build_gaz_pretrain_emb(gaz_file) train(data, save_model_dir,dset_dir, seg) elif status == 'test':
def main(): parser = argparse.ArgumentParser(description='Tuning with NCRF++') # parser.add_argument('--status', choices=['train', 'decode'], help='update algorithm', default='train') parser.add_argument('--config', help='Configuration File', default='None') parser.add_argument('--wordemb', help='Embedding for words', default='None') parser.add_argument('--charemb', help='Embedding for chars', default='None') parser.add_argument('--status', choices=['train', 'decode'], help='update algorithm', default='train') parser.add_argument('--savemodel', default="data/model/saved_model.lstmcrf.") parser.add_argument('--savedset', help='Dir of saved data setting') parser.add_argument('--train', default="data/conll03/train.bmes") parser.add_argument('--dev', default="data/conll03/dev.bmes") parser.add_argument('--test', default="data/conll03/test.bmes") parser.add_argument('--seg', default="True") parser.add_argument('--random-seed', type=int, default=42) parser.add_argument('--lr', type=float) parser.add_argument('--batch-size', type=int) parser.add_argument('--raw') parser.add_argument('--loadmodel') parser.add_argument('--output') parser.add_argument('--output-tsv') parser.add_argument('--model-prefix') parser.add_argument('--cpu', action='store_true') args = parser.parse_args() # Set random seed seed_num = args.random_seed random.seed(seed_num) torch.manual_seed(seed_num) np.random.seed(seed_num) data = Data() data.random_seed = seed_num data.HP_gpu = torch.cuda.is_available() if args.config == 'None': data.train_dir = args.train data.dev_dir = args.dev data.test_dir = args.test data.model_dir = args.savemodel data.dset_dir = args.savedset print("Save dset directory:", data.dset_dir) save_model_dir = args.savemodel data.word_emb_dir = args.wordemb data.char_emb_dir = args.charemb if args.seg.lower() == 'true': data.seg = True else: data.seg = False print("Seed num:", seed_num) else: data.read_config(args.config) if args.lr: data.HP_lr = args.lr if args.batch_size: data.HP_batch_size = args.batch_size data.output_tsv_path = args.output_tsv if args.cpu: data.HP_gpu = False if args.model_prefix: data.model_dir = args.model_prefix # data.show_data_summary() status = data.status.lower() print("Seed num:", seed_num) if status == 'train': print("MODEL: train") data_initialization(data) data.generate_instance('train') data.generate_instance('dev') data.generate_instance('test') data.build_pretrain_emb() train(data) elif status == 'decode': print("MODEL: decode") data.load(data.dset_dir) data.read_config(args.config) print(data.raw_dir) # exit(0) data.show_data_summary() data.generate_instance('raw') print("nbest: %s" % (data.nbest)) decode_results, pred_scores = load_model_decode(data, 'raw') if data.nbest and not data.sentence_classification: data.write_nbest_decoded_results(decode_results, pred_scores, 'raw') else: data.write_decoded_results(decode_results, 'raw') else: print( "Invalid argument! Please use valid arguments! (train/test/decode)" )
emb_file = "../data/joint4.all.b10c1.2h.iter17.mchar" ### catner else: emb_file = None char_emb_file = args.charemb.lower() print "Char Embedding:", char_emb_file if char_emb_file == "rich": char_emb_file = "../data/joint4.all.b10c1.2h.iter17.mchar" ### catner elif char_emb_file == "normal": char_emb_file = "../data/gigaword_chn.all.a2b.uni.ite50.vec" ### catner data = Data() data.number_normalized = True data_initialization(data, train_file, dev_file, test_file) data.HP_gpu = gpu data.HP_use_char = True data.HP_batch_size = 10 ## catner data.HP_lr = 0.015 # data.char_features = "CNN" data.generate_instance(train_file,'train') data.generate_instance(dev_file,'dev') data.generate_instance(test_file,'test') if emb_file: print "load word emb file... norm:", data.norm_word_emb data.build_word_pretrain_emb(emb_file) if char_emb_file != "none": print "load char emb file... norm:", data.norm_char_emb data.build_char_pretrain_emb(char_emb_file) train(data, save_model_dir, seg) elif status == 'test': data = load_data_setting(dset_dir) data.generate_instance(dev_file,'dev')
data = pickle.load(fp) data.HP_num_layer = args.num_layer data.HP_batch_size = args.batch_size data.HP_iteration = args.num_iter data.label_comment = args.labelcomment data.result_file = args.resultfile data.HP_lr = args.lr data.use_bigram = args.use_biword data.HP_hidden_dim = args.hidden_dim data.HP_use_posi = args.use_posi data.HP_rethink_iter = args.rethink_iter else: data = Data() data.HP_gpu = gpu data.HP_batch_size = args.batch_size data.HP_num_layer = args.num_layer data.HP_iteration = args.num_iter data.use_bigram = args.use_biword data.gaz_dropout = 0.5 data.norm_gaz_emb = False data.HP_fix_gaz_emb = False data.label_comment = args.labelcomment data.result_file = args.resultfile data.HP_lr = args.lr data.HP_hidden_dim = args.hidden_dim data.HP_use_posi = args.use_posi data.HP_rethink_iter = args.rethink_iter data_initialization(data, gaz_file, train_file, dev_file, test_file) data.generate_instance_with_gaz(train_file, 'train')
# -*- coding: utf-8 -*- # @Author: Jie # @Date: 2017-06-15 14:11:08 # @Last Modified by: Jie Yang, Contact: [email protected] # @Last Modified time: 2018-07-06 11:08:27 import time import sys import argparse import random import copy import torch import gc import pickle as pickle import torch.autograd as autograd import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import numpy as np from utils.metric import get_ner_fmeasure from model.bilstmcrf import BiLSTM_CRF as SeqModel from utils.data import Data seed_num = 100 random.seed(seed_num) torch.manual_seed(seed_num) np.random.seed(seed_num) def data_initialization(data, gaz_file, train_file, dev_file, test_file): data.build_alphabet(train_file) data.build_alphabet(dev_file) data.build_alphabet(test_file)