파이썬을 사용한 영화 리뷰 데이터를 활용한 Sentiment analysis

목차

소개

Sentiment Analysis는 텍스트의 감정을 분석하는 자연어 처리(Natural Language Processing, NLP)의 한 분야입니다. 이 기술은 소셜 미디어, 제품 리뷰, 뉴스 기사 등 다양한 텍스트 데이터에서 사용자들의 감성과 의견을 파악하는 데 활용됩니다. 이번 블로그 포스트에서는 파이썬을 사용하여 영화 리뷰 데이터를 분석하고, 해당 리뷰의 감정을 예측하는 Sentiment Analysis 모델을 학습하는 방법에 대해 알아보겠습니다.

데이터 수집

먼저, 영화 리뷰 데이터를 수집해야 합니다. 여기서는 IMDb에서 제공하는 영화 리뷰 데이터셋을 사용하겠습니다. 이 데이터셋에는 영화 리뷰 텍스트와 해당 리뷰의 감성(긍정 또는 부정)이 포함되어 있습니다. 데이터를 다운로드하고 압축을 해제한 후, 필요한 파일을 로드합니다.

import pandas as pd

df = pd.read_csv("reviews.csv")

데이터 전처리

수집한 데이터를 분석하기 전에 전처리 과정을 진행해야 합니다. 이 단계에서는 특수 문자 제거, 소문자 변환, 불용어 제거 등과 같은 텍스트 정제 작업을 수행합니다. 또한, 데이터셋을 훈련 데이터와 테스트 데이터로 나누어 모델을 학습하고 성능을 평가할 것입니다.

import nltk
from sklearn.model_selection import train_test_split
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

# 특수 문자 제거
df['clean_text'] = df['review'].str.replace('[^\w\s]', '')

# 소문자 변환
df['clean_text'] = df['clean_text'].str.lower()

# 불용어 제거
stop_words = set(stopwords.words('english'))
df['clean_text'] = df['clean_text'].apply(lambda x: ' '.join([word for word in word_tokenize(x) if word not in stop_words]))

# 데이터셋 분할
X = df['clean_text']
y = df['sentiment']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

문자열 토큰화

문자열 토큰화는 텍스트를 단어 단위로 나누는 작업입니다. 이 단계에서는 영화 리뷰의 문자열을 토큰화하여 모델에 입력으로 사용할 데이터 형태로 변환합니다.

from keras.preprocessing.text import Tokenizer

# 토큰화
tokenizer = Tokenizer()
tokenizer.fit_on_texts(X_train)

X_train_tokens = tokenizer.texts_to_sequences(X_train)
X_test_tokens = tokenizer.texts_to_sequences(X_test)

감성 분석 모델 학습

이제 준비된 데이터를 활용하여 감성 분석 모델을 학습하는 단계입니다. 여기서는 Embedding Layer와 LSTM(Long Short-Term Memory) 레이어를 사용한 감성 분석 모델을 만들어보겠습니다.

from keras.models import Sequential
from keras.layers import Embedding, LSTM, Dense

# 모델 생성
model = Sequential()
model.add(Embedding(input_dim=vocab_size, output_dim=300, input_length=max_length))
model.add(LSTM(units=100))
model.add(Dense(units=1, activation='sigmoid'))

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

# 모델 학습
model.fit(X_train_tokens, y_train, validation_data=(X_test_tokens, y_test), epochs=5, batch_size=32)

결과 분석

학습된 모델을 사용하여 테스트 데이터에서 예측을 수행하고, 결과를 분석해봅시다.

# 테스트 데이터에 대한 예측 수행
y_pred = model.predict_classes(X_test_tokens)

# 정확도 평가
accuracy = accuracy_score(y_test, y_pred)

# 예측 결과 출력
print(f"Accuracy: {accuracy}")

요약

이번 포스트에서는 파이썬을 사용하여 영화 리뷰 데이터를 분석하고, 해당 리뷰의 감정을 예측하는 Sentiment Analysis 모델을 학습하는 방법에 대해 알아보았습니다. Sentiment Analysis는 자연어 처리의 중요한 응용 분야로써, 다양한 산업 분야에서 활용될 수 있습니다. 파이썬과 NLP 라이브러리를 통해 텍스트 데이터를 처리하고 감성을 예측하는 모델을 구현하여 실제 문제에 적용해볼 수 있습니다.

해시태그: #파이썬 #SentimentAnalysis