# 데이터 읽어오기 train_file = "drive/MyDrive/deep-chatbot/models/intent/total_train_data.csv" data = pd.read_csv(train_file, delimiter=',') queries = data['query'].tolist() intents = data['intent'].tolist() from utils.Preprocess import Preprocess p = Preprocess(word2index_dic= 'drive/MyDrive/deep-chatbot/train_tools/dict/chatbot_dict.bin') # 단어 시퀀스 생성 sequences = [] for sentence in queries: pos = p.pos(str(sentence)) keywords = p.get_keywords(pos, without_tag=True) seq = p.get_wordidx_sequence(keywords) sequences.append(seq) # 단어 인덱스 시퀀스 벡터 ○2 # 단어 시퀀스 벡터 크기 from config.GlobalParams import MAX_SEQ_LEN padded_seqs = preprocessing.sequence.pad_sequences(sequences, maxlen=MAX_SEQ_LEN, padding='post') # (105658, 15) print(padded_seqs.shape) print(len(intents)) #105658 # 학습용, 검증용, 테스트용 데이터셋 생성 ○3 # 학습셋:검증셋:테스트셋 = 8:1:1
print("샘플 단어 시퀀스 최대 길이 : ", max(len(l) for l in sentences)) print("샘플 단어 시퀀스 평균 길이 : ", (sum(map(len, sentences)) / len(sentences))) # 토크나이저 정의 tag_tokenizer = preprocessing.text.Tokenizer( lower=False) # 태그 정보는 lower=False 소문자로 변환하지 않는다. tag_tokenizer.fit_on_texts(tags) # 단어 사전 및 태그 사전 크기 vocab_size = len(p.word_index) + 1 tag_size = len(tag_tokenizer.word_index) + 1 print("BIO 태그 사전 크기 :", tag_size) print("단어 사전 크기:", vocab_size) # 학습용 단어 시퀀스 생성 x_train = [p.get_wordidx_sequence(sent) for sent in sentences] y_train = tag_tokenizer.texts_to_sequences(tags) index_to_ner = tag_tokenizer.index_word # 시퀀스 인덱스를 NER로 변환하기 위해 사용 index_to_ner[0] = 'PAD' # 시퀀스 패딩 처리 max_len = 40 x_train = preprocessing.sequence.pad_sequences(x_train, padding='post', maxlen=max_len) y_train = preprocessing.sequence.pad_sequences(y_train, padding='post', maxlen=max_len) # 학습 데이터와 테스트 데이터를 8:2 비율로 분리