이번 프로젝트에서는 파이썬을 이용하여 감성 분석을 수행하는 방법에 대해 알아보겠습니다. 감성 분석은 텍스트와 같은 비정형 데이터로부터 감정이나 의견을 추출하는 자연어 처리 기술입니다. 이를 통해 소셜 미디어 데이터, 제품 리뷰, 고객 의견 등 다양한 텍스트 데이터에서 감성적인 정보를 도출할 수 있습니다.
필요한 라이브러리 설치
감성 분석을 위해 다양한 라이브러리가 있지만, 이번 프로젝트에서는 NLTK와 TextBlob 라이브러리를 사용하겠습니다. NLTK는 영어 자연어 처리를 위한 라이브러리이며, TextBlob는 NLTK를 기반으로 하여 좀 더 편리한 인터페이스를 제공하는 라이브러리입니다. 아래의 명령어를 통해 라이브러리를 설치합니다.
pip install nltk
pip install textblob
데이터 전처리
감성 분석을 수행하기 전에, 텍스트 데이터를 사전 처리해야 합니다. 이 단계에서는 토큰화, 불용어 제거, 형태소 분석 등의 작업을 수행합니다. 이를 위해 NLTK 라이브러리의 함수들을 사용할 수 있습니다. 아래는 예시 코드입니다.
import nltk
# NLTK의 불용어 리스트를 다운로드합니다.
nltk.download('stopwords')
# 텍스트 데이터 전처리 함수
def preprocess_text(text):
# 텍스트를 소문자로 변환합니다.
text = text.lower()
# 토큰화를 수행합니다.
tokens = nltk.word_tokenize(text)
# 불용어를 제거합니다.
stop_words = set(nltk.corpus.stopwords.words('english'))
tokens = [word for word in tokens if word not in stop_words]
# 형태소 분석을 수행합니다.
lemmatizer = nltk.WordNetLemmatizer()
tokens = [lemmatizer.lemmatize(word) for word in tokens]
# 전처리된 텍스트를 반환합니다.
return ' '.join(tokens)
감성 분석 수행
데이터 전처리가 완료되면, 이제 실제로 감성 분석을 수행할 수 있습니다. TextBlob 라이브러리는 텍스트 데이터에 대해 감정 점수와 주관적인 의견을 추출하는 기능을 제공합니다. 아래는 예시 코드입니다.
from textblob import TextBlob
# 감성 분석 함수
def analyze_sentiment(text):
blob = TextBlob(text)
# 감정 점수를 반환합니다.
sentiment_score = blob.sentiment.polarity
# 주관적인 의견을 반환합니다. ("긍정적" 또는 "부정적"으로 나타납니다.)
sentiment_label = "긍정적" if sentiment_score > 0 else "부정적"
return sentiment_score, sentiment_label
예시 실행
이제 위에서 작성한 함수들을 사용하여 예시를 실행해 보겠습니다. 아래는 예시 텍스트에 대해 감성 분석을 수행하는 코드입니다.
text = "I love this movie! It's amazing."
# 텍스트 전처리
preprocessed_text = preprocess_text(text)
# 감성 분석 수행
sentiment_score, sentiment_label = analyze_sentiment(preprocessed_text)
print("감정 점수:", sentiment_score)
print("감정 레이블:", sentiment_label)
위의 코드를 실행하면 다음과 같은 결과가 출력됩니다.
감정 점수: 0.625
감정 레이블: 긍정적
이러한 방식으로 텍스트 데이터에 대해 감성 분석을 수행할 수 있습니다. 추가적인 분석을 원한다면, 데이터셋을 수집하고 머신 러닝 알고리즘을 적용하여 정확도를 높일 수도 있습니다.