[파이썬] nltk 텍스트 기반의 감정 및 성격 분석

NLTK(Natural Language Toolkit)는 파이썬을 위한 자연어 처리 라이브러리로, 텍스트 데이터를 처리하고 분석하는데 사용됩니다. 이번 블로그에서는 NLTK를 사용하여 텍스트 기반의 감정 및 성격 분석을 어떻게 할 수 있는지 알아보겠습니다.

텍스트 기반의 감정 분석

사람들은 인터넷, 소셜 미디어, 리뷰 등에서 다양한 감정을 표현하는 텍스트를 많이 사용합니다. NLTK를 사용하면 이러한 텍스트를 자동으로 감정으로 분류할 수 있습니다.

import nltk
from nltk.sentiment import SentimentIntensityAnalyzer

# 감정 분석기 초기화
sia = SentimentIntensityAnalyzer()

# 예시 문장
sentence = "This movie is amazing!"

# 감정 점수 계산
sentiment_scores = sia.polarity_scores(sentence)

# 감정 점수 출력
print(sentiment_scores)

위의 코드는 NLTK의 SentimentIntensityAnalyzer 클래스를 사용하여 텍스트의 감정 점수를 계산하는 방법을 보여줍니다. polarity_scores() 메서드는 입력 문장에 대한 감성 점수를 반환하며, 이는 부정적, 중립적, 긍정적인 감정을 나타내는 값으로 구성되어 있습니다. 출력 결과는 다음과 같이 나타납니다.

{'neg': 0.0, 'neu': 0.0, 'pos': 1.0, 'compound': 0.5859}

위의 결과에서 pos 값은 긍정적인 감정을 나타내는 점수이며, compound 값은 전체 감성 점수를 나타냅니다.

텍스트 기반의 성격 분석

NLTK를 사용하면 텍스트 기반의 성격 분석도 할 수 있습니다. 사람들의 글이나 리뷰에서 개인의 성격 특성을 파악하는 것은 매우 유용한 작업일 수 있습니다.

from nltk.corpus import reuters
from nltk.corpus import opinion_lexicon

# 사전 초기화
positive_words = set(opinion_lexicon.positive())
negative_words = set(opinion_lexicon.negative())

# 예시 문장
sentence = "This book is so boring."

# 문장 토큰화
words = nltk.word_tokenize(sentence)

# 긍정 및 부정 단어 계수 초기화
positive_count = 0
negative_count = 0

# 감정 단어 계산
for word in words:
    if word.lower() in positive_words:
        positive_count += 1
    elif word.lower() in negative_words:
        negative_count += 1

# 성격 점수 계산
personality_score = (positive_count - negative_count) / len(words)

# 성격 점수 출력
print(personality_score)

위의 코드는 NLTK의 opinion_lexicon 사전을 사용하여 텍스트의 성격 점수를 계산하는 방법을 보여줍니다. 감정 단어 사전을 초기화하고, 입력 문장을 토큰화한 후 긍정 및 부정 단어를 계산하여 성격 점수를 구합니다. 출력 결과는 다음과 같이 나타납니다.

-0.2857142857142857

위의 결과에서 음수 값은 부정적인 성격을, 양수 값은 긍정적인 성격을 나타내며, 값의 절대값이 클수록 강한 성격 특성을 의미합니다.

결론

NLTK를 사용하면 텍스트 데이터에서 감정과 성격을 분석하여 유용한 정보를 추출할 수 있습니다. 텍스트 기반의 감정 및 성격 분석은 감정 분석기 및 감정 단어 사전을 활용하여 감정 및 성격 점수를 계산하는 방식으로 이루어집니다. 이를 통해 텍스트 데이터로부터 유용한 통찰력을 얻을 수 있습니다.

NLTK에 대한 더 많은 정보와 기능은 NLTK 공식 문서에서 확인할 수 있으며, 다양한 자연어 처리 작업에 활용할 수 있습니다.