[파이썬] 문서 분류 및 감정 분석

감정 분석은 자연어 처리 분야에서 중요한 주제 중 하나입니다. 감정 분석은 문서에 포함된 텍스트의 감정적인 의미와 감정 상태를 파악하는 작업입니다. 이를 통해 사람들의 감정을 이해하고, 제품 리뷰, 소셜 미디어 데이터, 고객 피드백 등 다양한 응용 분야에 적용할 수 있습니다.

Python은 감정 분석을 위한 다양한 라이브러리와 도구를 제공하여 간편하게 문서 분류 및 감정 분석 작업을 수행할 수 있습니다. 이번 포스트에서는 Python을 사용하여 문서 분류 및 감정 분석을 진행하는 방법을 알아보겠습니다.

데이터 준비하기

먼저, 문서 분류 및 감정 분석을 위해 데이터를 준비해야 합니다. 감정 분석을 수행하기 위한 데이터셋은 일반적으로 레이블이 지정된 문서들로 구성됩니다. 이 데이터셋을 사용하여 모델을 학습한 뒤, 새로운 문서에 대한 감정 분석을 수행할 수 있습니다.

예를 들어, 다음과 같은 데이터셋을 사용해보겠습니다:

import pandas as pd

# 데이터셋 로드
data = pd.read_csv("sentiment_data.csv")

# 데이터셋 샘플 확인
print(data.head())

텍스트 전처리

감정 분석을 수행하기 전에 텍스트 데이터를 전처리해야 합니다. 텍스트 전처리는 불필요한 문자 제거, 대소문자 통일, 특수 문자 제거 등의 과정을 포함합니다.

예를 들어, 다음과 같은 텍스트 전처리를 수행할 수 있습니다:

import re
import string

def preprocess_text(text):
    # 소문자 변환
    text = text.lower()
    # 특수 문자 제거
    text = re.sub("[%s]" % re.escape(string.punctuation), "", text)
    # 숫자 제거
    text = re.sub("\d+", "", text)
    # 공백 제거
    text = text.strip()

    return text

문서 분류 모델 학습

문서 분류 모델을 학습하기 위해 데이터셋을 훈련 및 테스트 세트로 나누고, 모델을 정의하고 학습시킬 수 있습니다. 대표적인 알고리즘으로는 나이브 베이즈, 서포트 벡터 머신(SVM), 딥러닝 기반의 모델 등이 있습니다.

다음은 나이브 베이즈 분류기를 사용하여 문서 분류를 수행하는 예시입니다:

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report

# 텍스트 벡터화
vectorizer = CountVectorizer(preprocessor=preprocess_text)

X = data["text"]
y = data["label"]

X = vectorizer.fit_transform(X)

# 훈련 및 테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 나이브 베이즈 모델 학습
naive_bayes = MultinomialNB()
naive_bayes.fit(X_train, y_train)

# 모델 평가
y_pred = naive_bayes.predict(X_test)
print(classification_report(y_test, y_pred))

감정 분석 예측

학습된 모델을 사용하여 새로운 텍스트에 대한 감정 분석을 수행할 수 있습니다.

text = "이 영화 너무 재밌어요!"
preprocessed_text = preprocess_text(text)
vectorized_text = vectorizer.transform([preprocessed_text])

prediction = naive_bayes.predict(vectorized_text)[0]
print("감정 분류 결과:", prediction)

위의 예시에서는 나이브 베이즈 분류기를 사용하여 감정 분석을 진행했습니다.

결론

Python을 사용하여 문서 분류 및 감정 분석을 수행하는 방법에 대해 알아보았습니다. 데이터 준비, 텍스트 전처리, 모델 학습, 예측 등의 단계를 거쳐 정확한 감정 분석을 수행할 수 있습니다. 이를 통해 다양한 응용 분야에서 감정 분석을 활용해보세요.

향후 포스트에서는 다른 알고리즘과 추가 기법들을 사용하여 감정 분석을 수행하는 방법에 대해 자세히 다룰 예정입니다.