1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | import tensorflow as tf import pandas as pd import numpy as np from gensim.models.wrappers import FastText model_ft = FastText.load_fasttext_format("model_drama.bin") print("fasttext model load finished") def featurize_rnn(corpus,wdim,maxlen): rnn_total = np.zeros((len(corpus),maxlen,wdim)) for i in range(len(corpus)): if i%1000 ==0: print(i) s = corpus[i] for j in range(len(s)): if s[-j-1] in model_ft and j < maxlen: rnn_total[i][-j-1,:] = model_ft[s[-j-1]] return rnn_total inp = pd.read_csv("train.csv") total_data = inp[:]["text"].values.tolist() total_label = np.array(inp[:]["smishing"].values.tolist()) rnn_total_text = featurize_rnn(total_data,100,100) from tensorflow.keras import Sequential from tensorflow.keras.layers import Bidirectional, LSTM, Dense def biLSTM(result): model = Sequential() model.add(Bidirectional(LSTM(64), input_shape=(len(result[0]), len(result[0][0])))) model.add(Dense(128, activation='relu')) model.add(Dense(32, activation='relu')) model.add(Dense(1, activation="softmax")) model.summary() model.compile(loss="sparse_categorical_crossentropy", optimizer=tf.keras.optimizers.Adam(1e-4), metrics=['accuracy']) history = model.fit(result, total_label, epochs=10, validation_split=0.1, batch_size=512) biLSTM(rnn_total_text) | cs |
한국어 임베딩 부분인 feature_rnn함수는 https://github.com/warnikchow/dlk2nlp를 참고했습니다.
간단한 2진분류를 목적으로 했기 때문에 마지막 Dense는 1로 뒀습니다.
다양하게 분류하고 싶으시면 마지막 Dense를 늘려서 사용하시면 될 거 같아요
모델을 저장하는 부분은 차후에 업데이트 하도록 하겠습니다.
'컴퓨터 > Deeplearning' 카테고리의 다른 글
ubuntu 18.04에서 nvidia cuda toolkit 8.0 설치하며 오류 해결기 (0) | 2020.01.24 |
---|---|
4가지 감정(기쁨, 슬픔, 화남, 중립)으로 분류하는 모델 (0) | 2019.11.29 |
TensorFlow-gpu를 설치해봅시다(pycharm) (0) | 2019.03.24 |