파이썬을 사용한 Sentiment analysis 모델 개발 및 트레이닝

‘Sentiment analysis’는 텍스트 데이터의 감정을 분석하는 기술로, 감정을 긍정적, 부정적 또는 중립적으로 분류할 수 있습니다. 이번 블로그에서는 파이썬을 사용하여 Sentiment Analysis 모델을 개발하고 트레이닝하는 방법에 대해 알아보겠습니다.

1. 데이터 수집과 전처리

Sentiment Analysis 모델을 트레이닝하기 위해서는 레이블이 달린 감성 데이터가 필요합니다. 일반적으로 온라인 리뷰 데이터셋이나 소셜 미디어 데이터가 사용됩니다. 데이터를 수집한 후에는 텍스트 데이터를 전처리해야 합니다. 전처리 단계에서는 특수 문자, 불용어, URL 등을 제거하고, 텍스트를 토큰화하고, 정규화 등의 작업이 필요합니다.

import pandas as pd
import re
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

# 데이터 불러오기
data = pd.read_csv('sentiment_data.csv')

# 특수 문자 제거 및 소문자로 변환
data['text'] = data['text'].apply(lambda x: re.sub('[^A-Za-z0-9 ]+', '', x.lower()))

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

# 텍스트 데이터 전처리 완료
print(data.head())

2. 특징 벡터화

Sentiment Analysis 모델은 텍스트 데이터를 숫자로 변환하여 학습할 수 있어야 합니다. 이를 위해 특징 벡터화가 필요합니다. 가장 일반적인 방법은 단어 빈도-역문서 빈도(TF-IDF)를 사용하는 것입니다. TF-IDF는 각 단어의 빈도와 문서 빈도를 고려하여 단어의 중요도를 계산합니다.

from sklearn.feature_extraction.text import TfidfVectorizer

# 특징 벡터화
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(data['text'])

# 특징 벡터화 결과 확인
print(X.shape)

3. 모델 개발과 트레이닝

Sentiment Analysis 모델을 개발하기 위해서는 다양한 머신 러닝 알고리즘을 사용할 수 있습니다. 이번 예시에서는 로지스틱 회귀 알고리즘을 사용하겠습니다.

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# 레이블 데이터 생성
y = data['sentiment']

# 훈련 데이터와 테스트 데이터로 분할
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)

# 테스트 데이터로 모델 성능 평가
accuracy = model.score(X_test, y_test)
print("Accuracy:", accuracy)

4. 모델 평가와 활용

트레이닝이 완료되면 모델의 성능을 평가할 수 있습니다. 일반적으로 정확도(accuracy), 정밀도(precision), 재현율(recall), F1-score 등의 지표를 사용하여 모델의 성능을 평가합니다. 이후 모델을 활용하여 새로운 텍스트 데이터의 감정을 분석할 수 있습니다.

# 새로운 텍스트 예측
new_text = "I really enjoyed the movie. It was amazing!"

# 특징 벡터화
new_text_vector = vectorizer.transform([new_text])

# 예측 결과
prediction = model.predict(new_text_vector)
print(prediction)

마무리

이번 블로그에서는 파이썬을 사용하여 Sentiment Analysis 모델을 개발하고 트레이닝하는 방법에 대해 알아보았습니다. 데이터 전처리, 특징 벡터화, 모델 트레이닝 등의 단계를 거치면서 감성 분석 모델을 구축할 수 있습니다. 다양한 알고리즘과 파라미터를 사용하여 모델의 성능을 향상시킬 수 있으니, 자신의 목적에 맞게 적절한 방법을 선택하여 응용해 보시기 바랍니다.

#SentimentAnalysis #Python