데이터 분석/데이터 분석 방법

[감성 분석(4)] 한국어 감성사전을 활용한 문장 감성점수 평가(샘플 코드)

Family in August 2023. 2. 23. 08:26
반응형

한국어 감성분석 사전을 활용하여 문장의 감성점수를 구하는 파이썬 코드를 소개해드리겠습니다.

KoNLPy 패키지에서 제공하는 Komoran 형태소 분석기와 한국어 감성분석 사전인 KNU 한국어 감성사전을 함께 사용하여 문장의 감성점수를 계산할 수 있습니다.

먼저, 필요한 패키지를 import 합니다.

from konlpy.tag import Komoran
import pandas as pd


다음으로, Komoran 객체와 감성사전을 불러옵니다.


komoran = Komoran()
sentiment_file = 'KNU한국어감성사전.txt'
sentiment_df = pd.read_csv(sentiment_file, delimiter='\t', header=None)


감성사전은 탭(\t)으로 구분된 텍스트 파일로 되어 있으므로, pandas를 사용하여 데이터프레임으로 변환합니다.

다음으로, 문장의 감성점수를 계산하는 함수를 정의합니다.


def get_sentiment_score(sentence):
    words = komoran.pos(sentence)  # 형태소 분석
    score = 0
    for word, pos in words:
        if pos in ['VA', 'VV', 'VX', 'VCP', 'VCN', 'MAG']:  # 감성단어인 경우
            found = sentiment_df[sentiment_df[0] == word]  # 단어 검색
            if not found.empty:  # 단어가 존재하는 경우
                polarity = found.iloc[0, 1]  # 극성(긍정/부정) 확인
                if polarity == 'P':
                    score += 1  # 긍정일 경우 감성점수 +1
                elif polarity == 'N':
                    score -= 1  # 부정일 경우 감성점수 -1
    return score


위 함수에서는 입력된 문장을 Komoran 객체를 사용하여 형태소 분석하고, 감성분석 사전에서 단어를 검색하여 극성(긍정/부정)을 확인하며, 이를 바탕으로 감성점수를 계산합니다.

예를 들어, "오늘 날씨가 좋아서 기분이 좋다"는 문장의 감성점수를 계산하면 다음과 같습니다.


sentence = '오늘 날씨가 좋아서 기분이 좋다'
score = get_sentiment_score(sentence)
print(score)  # 2

이 문장에서는 '좋다'라는 긍정적인 감성단어가 2회 등장하였으므로, 감성점수는 2점입니다.

반응형