def AIC_train(): # bootstrapping에 사용되는 학습데이터는 "PIC_train"을 통해 PIC 처리를 사전에 진행해야 함. for epoch in range(1, config.boot_iter): print("iter : ", config.iter) main_tagger_AIC = Tagger() main_tagger_AIC.main_trainAIC() main_tagger_AIC.evaluateAIC("main_model") self_trainig = main_tagger_AIC.main_taggingAIC( mode="self_tagging") # init self training data\ # 배깅 모델 학습 splited_labels, splited_features, splited_sentences = split_self_labeling( self_trainig[0], self_trainig[1], self_trainig[2]) print("%s_iter(main) -> self_labled_s1 : %s" % (config.iter, len(self_trainig[0]))) for model_idx in range(1, config.model_num + 1): print("model_idx : ", model_idx) bagging_taggerAIC = Tagger() bagging_taggerAIC.bagging_trainAIC("bagging_train", model_idx, splited_features[model_idx - 1], splited_labels[model_idx - 1]) print("bagging model%s acc" % model_idx) bagging_taggerAIC.evaluateAIC("bagging_eval", model_idx) # each bagging model bagging_bootstrap(model_idx, splited_sentences[model_idx - 1], splited_labels[model_idx - 1]) if model_idx == 1: score_i, raw_sentences, features = bagging_taggerAIC.bagging_taggingAIC( "self_tagging", model_idx) else: new_socre_i = bagging_taggerAIC.bagging_taggingAIC( "self_tagging", model_idx) for idx, _ in enumerate(new_socre_i): score_i[idx] = np.asarray(score_i[idx]) + np.asarray( new_socre_i[idx]) predicts = bagging_taggerAIC.score2tag(score_i, raw_sentences, features) main_bootstrap(predicts) config.iter += 1