이것이 데이터분석이다 - 분류모델 2. 감성 분류

화이팅·2023년 2월 28일
0

감성 분류

: 문서(텍스트 데이터)를 긍정 / 부정으로 나누어 분류

  1. 텍스트 전처리

1) 한글 텍스트로 전처리

import re

def text_cleaning(text):
hangul = re.compile('[^ㄱ-|가-힣]+')
result=hangul.sub('',text)
return result

df['ko'] = df['ko'].apply(lambda x: text_cleanint(x))

2) 형태소 단위 추출 함수 정의


def get_pos(x):
	tagger=Okt()
    pos=tagger.pos(x)
    pos=['{}/{}'.format(word,tag) for word, tag in pos]
    return pos
    
result=get_pos(df['ko'][0])

3) 텍스트 데이터를 분류 모델에 학습이 가능한 데이터셋으로 만들기
: raw데이터셋 -> 말뭉치(corpas) -> 학습 데이터셋(벡터)

from sklearn.feature_extraction.text import CounterVectorizer

index_vectorizer=CounterVectorizer(tokenizer=lambda x : get_pos(x))
X=index_vectorizer.fit_transform(df['ko'].tolist())

중복되는 형태소 존재 (ex) 너무 너무 좋다)
-> TF-IDF 사용
: 다른 문서들에서는 등장하지 않았지만 현재 문서에서는 많이 등장하는 단어 의미

from sklearn.feature_extraction.text import TfidfTransformer

tfidft_vectorizer = TfidfTransformer()
X=tfidft_vectorizer.fit_transform(X)
  1. 긍정/ 부정 분류

1) 데이터 분리 train_test_split
2) 로지스틱 회귀 모델

만약 ! 불균형이 너무 심하다

-> 데이터를 랜덤으로 1:1로 긍정:부정 뽑고 그 데이터를 가지고 다시 데이터 분리하기

profile
하하...하.

0개의 댓글