[자연어처리] 텍스트 분류(Text Classification) 파이썬 예제
2023. 12. 28. 13:00ㆍ카테고리 없음
영화 리뷰 데이터를 사용한 감성 분류 문제를 살펴보겠습니다. 이번에는 TensorFlow와 Keras를 사용하여 간단한 딥러닝 모델을 만들어 보겠습니다. 이 예제는 IMDB(Internet Movie Database)에서 수집한 영화 리뷰 데이터셋을 사용합니다.
이 예제에서는 IMDb 리뷰 데이터를 사용하여 영화 리뷰가 긍정적인지(1) 부정적인지(0) 예측하는 감성 분류 모델을 만듭니다. 모델은 Embedding 레이어, Bidirectional LSTM 레이어, 및 Dense 레이어로 구성되어 있습니다. 주요 단계는 다음과 같습니다.
import tensorflow as tf
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, LSTM, Dense, Bidirectional
from sklearn.model_selection import train_test_split
# 데이터 로드
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=10000)
# 데이터 전처리
max_len = 200
x_train = pad_sequences(x_train, maxlen=max_len, padding='post', truncating='post')
x_test = pad_sequences(x_test, maxlen=max_len, padding='post', truncating='post')
# 모델 구축
model = Sequential()
model.add(Embedding(input_dim=10000, output_dim=16, input_length=max_len))
model.add(Bidirectional(LSTM(32)))
model.add(Dense(1, activation='sigmoid'))
# 모델 컴파일
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# 모델 학습
model.fit(x_train, y_train, epochs=5, batch_size=32, validation_split=0.2)
# 모델 평가
loss, accuracy = model.evaluate(x_test, y_test)
print(f"Test Loss {loss.4f}, Test Accuracy {accuracy.4f}")
1. 데이터 로드
imdb.load_data() 함수를 사용하여 IMDb 리뷰 데이터를 로드하고, num_words 매개변수를 사용하여 빈도가 높은 상위 10,000개 단어만 사용합니다.
2. 데이터 전처리
pad_sequences를 사용하여 시퀀스를 패딩하고 일정한 길이로 만듭니다.
3. 모델 구축
Embedding, Bidirectional LSTM, 및 Dense 레이어를 사용하여 모델을 구축합니다.
4. 모델 컴파일
손실 함수, 옵티마이저 등을 설정하고 모델을 컴파일합니다.
5. 모델 학습
학습 데이터를 사용하여 모델을 학습합니다.
6. 모델 평가
테스트 데이터를 사용하여 모델을 평가합니다.