텍스트 감정 분석은 자연어 처리 분야에서 매우 중요한 주제 중 하나입니다. 이를 통해 우리는 주어진 텍스트에 대한 감정을 파악하고, 감정의 극성(긍정/부정)을 분류할 수 있습니다. 이러한 분석은 다양한 분야에 적용될 수 있으며, 예를 들어 소셜 미디어에서의 사용자 감성 분석, 제품 리뷰의 감정 평가, 뉴스 기사의 감정 분류 등에 활용될 수 있습니다.
이번 블로그 포스트에서는 파이썬을 사용하여 텍스트 감정 분석 및 감정 극성 분류를 수행하는 방법을 알아보겠습니다. 파이썬에는 이러한 분석을 위한 다양한 라이브러리와 도구가 있으며, 그 중에서도 자연어 처리를 위한 NLTK(Natural Language Toolkit)와 감정 분석을 위한 TextBlob 라이브러리를 활용하겠습니다.
문장 토큰화
감정 분석을 위해 텍스트를 문장 단위로 토큰화하는 것이 첫 번째 단계입니다. NLTK의 sent_tokenize
함수를 사용하여 텍스트를 문장으로 분리합니다.
import nltk
def sentence_tokenize(text):
sentences = nltk.sent_tokenize(text)
return sentences
text = "I am feeling happy today. The weather is perfect."
sentences = sentence_tokenize(text)
print(sentences)
단어 토큰화 및 어간 추출
각 문장을 단어 단위로 토큰화하여 단어의 어간을 추출하는 과정을 거칩니다. 이는 NLTK의 word_tokenize
함수와 PorterStemmer
를 사용하여 쉽게 수행할 수 있습니다.
from nltk import word_tokenize, PorterStemmer
stemmer = PorterStemmer()
def word_tokenize_and_stem(text):
words = word_tokenize(text)
stemmed_words = [stemmer.stem(word) for word in words]
return stemmed_words
for sentence in sentences:
words = word_tokenize_and_stem(sentence)
print(words)
감정 분석
이제 문장 단위로 토큰화된 단어들을 사용하여 감정 분석을 수행할 수 있습니다. TextBlob
라이브러리를 사용하여 감정 분석을 진행하며, sentiment.polarity
속성을 통해 문장의 감정 극성을 알 수 있습니다.
from textblob import TextBlob
def sentiment_analysis(text):
blob = TextBlob(text)
polarity = blob.sentiment.polarity
if polarity > 0:
sentiment = "긍정적인 감정"
elif polarity < 0:
sentiment = "부정적인 감정"
else:
sentiment = "중립적인 감정"
return sentiment
for sentence in sentences:
sentiment = sentiment_analysis(sentence)
print(f"{sentence}: {sentiment}")
위의 예제 코드를 실행하면, 주어진 텍스트에 대한 문장 토큰화, 단어 토큰화 및 어간 추출, 그리고 감정 분석이 수행됩니다. 결과는 각 문장에 대한감정 극성을 나타내는 메시지와 함께 출력됩니다.
이처럼 파이썬을 사용하여 텍스트 감정 분석과 감정 극성 분류를 수행할 수 있습니다. 이러한 분석은 다양한 영역에서 유용하게 활용될 수 있으며, 데이터 분석, 소셜 미디어 감성 분석, 사용자 피드백 분석 등에 적용되어 활용할 수 있습니다.