[파이썬] nltk 감정 분석 (Sentiment Analysis)

감정 분석은 텍스트 데이터의 감정이나 태도를 파악하는 자연어 처리 기술입니다. 이는 사회 미디어, 고객 리뷰, 기사 등 다양한 텍스트 데이터에서 사용자의 감정을 이해하고 분석하는 데에 유용합니다.

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’와 같은 키를 가지고 있습니다.

결과 해석

감정 점수를 해석하는 방법은 아래와 같습니다:

예제

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를 사용하여 감정 분석을 수행하는 방법을 알아보았습니다. 이러한 감정 분석 기술은 다양한 분야에서 활용될 수 있으며, 텍스트 데이터의 감정을 파악하여 의사 결정에 도움을 줄 수 있습니다.