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

[감성 분석(3)] 머신러닝 자연어 처리 한국어 감성분석 방법(샘플 코드)

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

한국어 문장의 감성을 분석하고 긍정과 부정으로 분류할 수 있는 대표적인 코드는 KoNLPy와 Scikit-learn을 이용한 감성 분석 코드입니다.

이 코드는 다음과 같은 순서로 작동합니다.

1. 데이터 수집 및 전처리
2. 형태소 분석 및 품사 태깅
3. 긍정, 부정 단어 사전 생성
4. 피처 추출 및 벡터화
5. 분류 모델 생성 및 학습
6. 테스트 데이터 예측 및 성능 평가

이 코드를 실행하면, 입력된 한국어 문장의 감성을 긍정 또는 부정으로 분류하여 결과를 출력합니다.

예시 코드:

# 필요한 라이브러리 import
from konlpy.tag import Okt
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 데이터 수집 및 전처리
data = ['이 영화 너무 재미있었어!', '이 영화 너무 지루했어...']
labels = [1, 0]

# 형태소 분석 및 품사 태깅
okt = Okt()
X_train = []
for sentence in data:
    morphs = okt.morphs(sentence) # 형태소 분석
    pos = okt.pos(sentence) # 품사 태깅
    # 명사, 동사, 형용사만 추출
    X_train.append(' '.join([morph[0] for morph in pos if morph[1] in ['Noun', 'Verb', 'Adjective']]))

# 긍정, 부정 단어 사전 생성
pos_dict = ['재미있', '좋', '행운', '즐거', '유쾌', '신나', '즐겁']
neg_dict = ['지루하', '나쁘', '슬프', '우울', '실망', '불안', '짜증']

# 피처 추출 및 벡터화
tfidf = TfidfVectorizer(max_features=1000)
X_train = tfidf.fit_transform(X_train).toarray()

# 분류 모델 생성 및 학습
X_train, X_test, y_train, y_test = train_test_split(X_train, labels, test_size=0.2, random_state=42)
lr = LogisticRegression()
lr.fit(X_train, y_train)

# 테스트 데이터 예측 및 성능 평가
X_test = tfidf.transform(X_test).toarray()
y_pred = lr.predict(X_test)
print("Accuracy: ", accuracy_score(y_test, y_pred))


주어진 문장을 형태소 분석과 품사 태깅을 통해 명사, 동사, 형용사만 추출한 후, 피처 추출과 벡터화를 거쳐 분류 모델을 생성하고 학습시킵니다.
이를 통해 문장이 긍정인지 부정인지 예측하는데 활용할 수 있습니다.

이 페이지에서 설명한 방법은 각 문장에 긍정과 부정으로 라벨링 후 이진 분류기에 의해 감성을 예측하는 방법입니다.

다음에는 감성 사전을 활용한 방법을 소개하도록 하겠습니다.

반응형