[python] 파이썬을 이용한 영화 리뷰 감성 분석 프로젝트
  1. 프로젝트 소개
  2. 데이터 수집
  3. 데이터 전처리
  4. 감성 분석 모델 구축
  5. 모델 성능 평가

프로젝트 소개

이 프로젝트는 파이썬을 사용하여 영화 리뷰 데이터를 수집하고, 해당 데이터를 전처리한 후 감성 분석 모델을 구축하는 것을 목표로 합니다. 감성 분석은 텍스트 데이터의 긍정적, 부정적, 중립적 감정을 판별하는 작업을 의미합니다.

데이터 수집

영화 관련 리뷰 데이터를 수집하기 위해 웹 크롤링을 사용했습니다. 파이썬의 BeautifulSoup를 활용하여 여러 영화 리뷰 사이트에서 리뷰 데이터를 수집했습니다. 수집된 데이터에는 리뷰 내용과 해당 리뷰의 감성 정보(긍정 또는 부정)가 포함되어 있습니다.

import requests
from bs4 import BeautifulSoup

# 웹 페이지에서 리뷰 데이터 수집
response = requests.get('https://example.com/reviews')
soup = BeautifulSoup(response.text, 'html.parser')
reviews = soup.find_all('div', class_='review')

데이터 전처리

수집된 데이터를 전처리하여 모델 학습에 적합한 형태로 변환했습니다. 이 과정에는 토큰화, 정제, 불용어 제거, 토큰 임베딩 등의 다양한 작업이 포함되었습니다.

import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer

nltk.download('stopwords')
nltk.download('punkt')
nltk.download('wordnet')

# 텍스트 데이터 토큰화 및 정제
def preprocess_text(text):
    tokens = word_tokenize(text)
    tokens = [token for token in tokens if token.lower() not in stopwords.words('english')]
    lemmatizer = WordNetLemmatizer()
    tokens = [lemmatizer.lemmatize(token) for token in tokens]
    return tokens

감성 분석 모델 구축

전처리된 데이터를 사용하여 감성 분석 모델을 구축했습니다. 여러 알고리즘을 사용하여 모델을 학습시키고, 가장 뛰어난 성능을 보이는 모델을 선택하였습니다. 주로 사용한 알고리즘은 로지스틱 회귀, 나이브 베이즈, 그리고 딥러닝 모델인 LSTM 등이 있습니다.

from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression

# TF-IDF 벡터화
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(preprocessed_reviews)
y = labels

# 학습 및 평가 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 로지스틱 회귀 모델 학습
model = LogisticRegression()
model.fit(X_train, y_train)

모델 성능 평가

구축한 감성 분석 모델의 성능을 평가했습니다. 주로 정확도, 정밀도, 재현율, F1 점수 등의 지표를 사용하여 모델의 성능을 평가했습니다.

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

# 모델 예측 및 평가
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)

print(f'정확도: {accuracy}, 정밀도: {precision}, 재현율: {recall}, F1 점수: {f1}')

이 프로젝트를 통해 파이썬을 사용하여 영화 리뷰 데이터에 대한 감성 분석 모델을 구축하는 방법에 대해 살펴보았습니다. 이러한 모델은 영화나 제품의 리뷰를 분석하거나 소셜 미디어에서의 감정 분석 등 다양한 분야에 활용될 수 있습니다.