def __init__(self, word_emb, N_word, N_h=100, N_depth=2, gpu=False, trainable_emb=False): super(Seq2SQL, self).__init__() self.trainable_emb = trainable_emb self.gpu = gpu self.N_h = N_h self.N_depth = N_depth self.max_col_num = 45 self.max_tok_num = 200 self.SQL_TOK = ['<UNK>', '<END>', 'WHERE', 'AND', 'EQL', 'GT', 'LT', '<BEG>'] self.COND_OPS = ['EQL', 'GT', 'LT'] #Word embedding if trainable_emb: self.agg_embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, our_model=False, trainable=trainable_emb) self.sel_embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, our_model=False, trainable=trainable_emb) self.cond_embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, our_model=False, trainable=trainable_emb) else: self.embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, our_model=False, trainable=trainable_emb) #Predict aggregator self.agg_pred = AggPredictor(N_word, N_h, N_depth, use_ca=False) #Predict selected column self.sel_pred = SelPredictor(N_word, N_h, N_depth, self.max_tok_num, use_ca=False) #Predict number of cond self.cond_pred = Seq2SQLCondPredictor( N_word, N_h, N_depth, self.max_col_num, self.max_tok_num, gpu) self.CE = nn.CrossEntropyLoss() self.softmax = nn.Softmax() self.log_softmax = nn.LogSoftmax() self.bce_logit = nn.BCEWithLogitsLoss() if gpu: self.cuda()
def __init__(self, word_emb, N_word, N_h=120, N_depth=2, gpu=False, trainable_emb=False, db_content=0): super(SQLNet, self).__init__() self.trainable_emb = trainable_emb self.db_content = db_content self.gpu = gpu self.N_h = N_h self.N_depth = N_depth self.max_col_num = 45 self.max_tok_num = 200 self.SQL_TOK = ['<UNK>', '<END>', 'WHERE', 'AND', 'EQL', 'GT', 'LT', '<BEG>'] self.COND_OPS = ['EQL', 'GT', 'LT'] #the model actually doesn't use type embedding when db_content == 1 if db_content == 0: is_train = True else: is_train = False self.agg_type_embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, trainable=is_train) self.sel_type_embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, trainable=is_train) self.cond_type_embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, trainable=is_train) self.embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, trainable=trainable_emb) #Predict aggregator self.agg_pred = AggPredictor(N_word, N_h, N_depth) #Predict select column + condition number and columns self.selcond_pred = SelCondPredictor(N_word, N_h, N_depth, gpu, db_content) #Predict condition operators and string values self.op_str_pred = CondOpStrPredictor(N_word, N_h, N_depth, self.max_col_num, self.max_tok_num, gpu, db_content) self.CE = nn.CrossEntropyLoss() self.softmax = nn.Softmax() self.log_softmax = nn.LogSoftmax() self.bce_logit = nn.BCEWithLogitsLoss() if gpu: self.cuda()
def __init__(self, word_emb, N_word, N_h=100, N_depth=2, gpu=False, use_ca=True, trainable_emb=False): super(SQLNet, self).__init__() self.use_ca = use_ca self.trainable_emb = trainable_emb self.gpu = gpu self.N_h = N_h self.N_depth = N_depth self.max_col_num = 45 self.max_tok_num = 200 self.SQL_TOK = ['<UNK>', '<END>', 'WHERE', 'AND', 'OR', '==', '>', '<', '!=', '<BEG>'] self.COND_OPS = ['>', '<', '==', '!='] # Word embedding self.embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, our_model=True, trainable=trainable_emb) # Predict the number of selected columns self.sel_num = SelNumPredictor(N_word, N_h, N_depth, use_ca=use_ca) #Predict which columns are selected self.sel_pred = SelPredictor(N_word, N_h, N_depth, self.max_tok_num, use_ca=use_ca) #Predict aggregation functions of corresponding selected columns self.agg_pred = AggPredictor(N_word, N_h, N_depth, use_ca=use_ca) #Predict number of conditions, condition columns, condition operations and condition values self.cond_pred = SQLNetCondPredictor(N_word, N_h, N_depth, self.max_col_num, self.max_tok_num, use_ca, gpu) # Predict condition relationship, like 'and', 'or' self.where_rela_pred = WhereRelationPredictor(N_word, N_h, N_depth, use_ca=use_ca) self.CE = nn.CrossEntropyLoss() self.softmax = nn.Softmax(dim=-1) self.log_softmax = nn.LogSoftmax() self.bce_logit = nn.BCEWithLogitsLoss() if gpu: self.cuda()
def __init__(self, word_emb, N_word, N_h=120, N_depth=2, use_ca=True, gpu=True, trainable_emb=False, db_content=0): super(SQLNet, self).__init__() self.trainable_emb = trainable_emb self.db_content = db_content self.use_ca = use_ca self.gpu = gpu self.N_h = N_h self.N_depth = N_depth self.max_col_num = 45 self.max_tok_num = 200 self.SQL_TOK = [ '<UNK>', '<END>', 'WHERE', 'AND', 'OR', '==', '>', '<', '!=', '<BEG>' ] self.COND_OPS = ['>', '<', '==', '!='] #the model actually doesn't use type embedding when db_content == 1 if db_content == 0: is_train = True else: is_train = False # self.sel_num_type_embed_layer = WordEmbedding(word_emb, N_word, gpu, # self.SQL_TOK, trainable=is_train) self.agg_type_embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, trainable=is_train) self.sel_type_embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, trainable=is_train) self.cond_type_embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, trainable=is_train) self.where_rela_type_embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, trainable=is_train) self.embed_layer = WordEmbedding(word_emb, N_word, gpu, self.SQL_TOK, trainable=trainable_emb) # # Predict selected column number # self.sel_num = SelNumPredictor(N_word, N_h, N_depth) # # # Predict which columns are selected # self.sel_pred = SelPredictor(N_word, N_h, N_depth, self.max_tok_num, use_ca=use_ca) #Predict aggregator self.agg_pred = AggPredictor(N_word, N_h, N_depth) # # Predict number of conditions, condition columns, condition operations and condition values # self.cond_pred = SQLNetCondPredictor(N_word, N_h, N_depth, self.max_col_num, self.max_tok_num,use_ca, gpu, db_content) #Predict selected column number + select column + condition number and columns self.selcond_pred = SelCondPredictor(N_word, N_h, N_depth, gpu, db_content) #Predict condition operators and string values self.op_str_pred = CondOpStrPredictor(N_word, N_h, N_depth, self.max_col_num, self.max_tok_num, gpu, db_content) # Predict conditions' relation self.where_rela_pred = WhereRelationPredictor(N_word, N_h, N_depth, use_ca=use_ca) self.CE = nn.CrossEntropyLoss() self.softmax = nn.Softmax() self.log_softmax = nn.LogSoftmax() self.bce_logit = nn.BCEWithLogitsLoss() if gpu: self.cuda()