⇒ 입력된 문장의 의미를 파악하는 것은 곧 모든 단어를 종합하여 하나의 카테고리로 분류하는 작업을 의미한다.

⇒ 이처럼 긴 텍스트를 읽고 이 데이터가 어떤 의미를 지니고, 어디 카테고리에 속하는지 분류하는 과정을 진행한다.
사용할 데이터 셋 : 로이터 뉴스 데이터
→ 로이터 뉴스 데이터 : 총 11,258개 뉴스 기사 + 46개의 카테고리
→ Keras에서 제공하는 데이터 셋 이용

각 레이블에 대한 빈도수를 확인해 볼 수 있다 ⇒ 3, 4가 가장 많은 레이블을 차지하는 것을 확인할 수 있다.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM, Embedding
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
from tensorflow.keras.models import load_model
# 모델의 설정
model = Sequential()
model.add(Embedding(1000, 100))
model.add(LSTM(100, activation='tanh'))
model.add(Dense(46, activation='softmax'))
es = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=4)
mc = ModelCheckpoint('best_model.h5', monitor='val_acc', mode='max', verbose=1, save_best_only=True)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])
history = model.fit(x_train, y_train, batch_size=128, epochs=30, callbacks=[es, mc], validation_data=(x_test, y_test))
