[python] 텐서플로우를 사용하여 영화 감성 분석 모델을 만들어보았나요?

소개

영화 감성 분석은 자연어 처리 분야에서 매우 중요한 주제입니다. 감성 분석은 텍스트의 긍정적, 부정적 또는 중립적인 감정을 파악하는 작업을 의미합니다. 이번에는 텐서플로우를 사용하여 영화 리뷰의 감성을 분석하는 모델을 만들어보겠습니다.

데이터셋

영화 리뷰 감성 분석을 위해 IMDb(Internet Movie Database) 데이터셋을 사용하겠습니다. 이 데이터셋에는 25,000개의 영화 리뷰가 포함되어 있으며, 각 리뷰에는 긍정(positive) 또는 부정(negative)의 레이블이 부여되어 있습니다. 이 데이터셋은 훈련 데이터와 테스트 데이터로 구분되어 있습니다.

모델 아키텍처

이번에는 순환 신경망(RNN, Recurrent Neural Network)을 사용하여 영화 리뷰의 감성을 분류하는 모델을 만들겠습니다. RNN은 시퀀스 데이터를 처리하기에 적합한 모델로, 텍스트와 같은 연속적인 데이터를 다룰 때 효과적입니다. 모델은 임베딩 층, LSTM(Long Short-Term Memory) 층, 밀집(Dense) 층으로 구성됩니다.

코드 예시

import tensorflow as tf
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing import sequence
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, LSTM, Dense

# 데이터 로드
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=5000)

# 시퀀스 길이 맞추기
max_words = 500
x_train = sequence.pad_sequences(x_train, maxlen=max_words)
x_test = sequence.pad_sequences(x_test, maxlen=max_words)

# 모델 생성
model = Sequential()
model.add(Embedding(5000, 32, input_length=max_words))
model.add(LSTM(64))
model.add(Dense(1, activation='sigmoid'))

# 모델 컴파일
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 모델 훈련
model.fit(x_train, y_train, validation_data=(x_test, y_test), epochs=5, batch_size=64)

# 모델 평가
loss, accuracy = model.evaluate(x_test, y_test)
print(f"Loss: {loss}, Accuracy: {accuracy}")

결론

텐서플로우를 사용하여 영화 감성 분석 모델을 만들어보았습니다. RNN을 사용하여 텍스트 데이터를 분석하고, IMDb 데이터셋을 통해 모델을 훈련하고 평가했습니다. 감성 분석은 자연어 처리 분야에서 다양한 응용이 가능하며, 이를 통해 영화 리뷰나 소셜 미디어 데이터 등을 분석할 수 있습니다.

참고 자료