감정 분석은 텍스트 데이터의 감정이나 태도를 파악하는 자연어 처리 기술입니다. 이는 사회 미디어, 고객 리뷰, 기사 등 다양한 텍스트 데이터에서 사용자의 감정을 이해하고 분석하는 데에 유용합니다.
Python에서는 Natural Language Toolkit (NLTK)를 사용하여 감정 분석을 수행할 수 있습니다. NLTK는 오픈 소스 자연어 처리 라이브러리로서, 감정 분석뿐만 아니라 토큰화, 형태소 분석, 문장 분류 등 다양한 자연어 처리 기능을 제공합니다.
준비 단계
감정 분석을 위해 NLTK를 설치해야 합니다. 아래와 같은 명령어를 사용하여 NLTK를 설치합니다:
pip install nltk
NLTK 설치 후, 필요한 모듈을 임포트합니다:
import nltk
from nltk.sentiment import SentimentIntensityAnalyzer
감정 분석 수행
NLTK의 SentimentIntensityAnalyzer 클래스는 Sentiment Analysis를 수행하기 위해 사용됩니다. 아래의 코드처럼 텍스트 데이터에 대한 감정 점수를 계산할 수 있습니다:
text = "I love this product! It's amazing."
sia = SentimentIntensityAnalyzer()
sentiment_scores = sia.polarity_scores(text)
polarity_scores()
메서드를 사용하여 텍스트 데이터의 감정 점수를 얻을 수 있습니다. 이 메서드는 딕셔너리 객체를 반환하며, ‘neg’, ‘neu’, ‘pos’, ‘compound’와 같은 키를 가지고 있습니다.
결과 해석
감정 점수를 해석하는 방법은 아래와 같습니다:
- ‘neg’: 부정적인 감정의 정도를 나타내는 점수입니다. 0보다 클수록 부정적인 감정을 가진 텍스트입니다.
- ‘neu’: 중립적인 감정의 정도를 나타내는 점수입니다. 1에 가까울수록 중립적인 감정을 가진 텍스트입니다.
- ‘pos’: 긍정적인 감정의 정도를 나타내는 점수입니다. 0보다 클수록 긍정적인 감정을 가진 텍스트입니다.
- ‘compound’: 전체적인 감정의 정도를 나타내는 점수입니다. 주어진 텍스트의 감정을 종합적으로 평가하는데 사용됩니다. -1에서 1 사이의 값을 갖습니다. -1은 매우 부정적인 감정을 나타내고, 1은 매우 긍정적인 감정을 나타냅니다.
예제
text1 = "I'm really happy with this purchase."
text2 = "That movie was terrible, I hated it."
text3 = "The weather today is not bad."
sentiment_scores1 = sia.polarity_scores(text1)
sentiment_scores2 = sia.polarity_scores(text2)
sentiment_scores3 = sia.polarity_scores(text3)
print(sentiment_scores1)
print(sentiment_scores2)
print(sentiment_scores3)
출력 결과는 다음과 같습니다:
{'neg': 0.0, 'neu': 0.387, 'pos': 0.613, 'compound': 0.5719}
{'neg': 0.518, 'neu': 0.482, 'pos': 0.0, 'compound': -0.4767}
{'neg': 0.0, 'neu': 0.404, 'pos': 0.596, 'compound': 0.431}
첫 번째 텍스트는 매우 긍정적인 감정을 나타내고 있으며, compound 점수가 0.5719로 매우 긍정적인 텍스트입니다. 두 번째 텍스트는 매우 부정적인 감정을 나타내고 있으며, compound 점수가 -0.4767로 매우 부정적인 텍스트입니다. 세 번째 텍스트는 중립적인 감정을 가지고 있으며, compound 점수가 0.431으로 중립에 가까운 텍스트입니다.
이를 통해 NLTK를 사용하여 감정 분석을 수행하는 방법을 알아보았습니다. 이러한 감정 분석 기술은 다양한 분야에서 활용될 수 있으며, 텍스트 데이터의 감정을 파악하여 의사 결정에 도움을 줄 수 있습니다.