: 문서(텍스트 데이터)를 긍정 / 부정으로 나누어 분류
- 텍스트 전처리
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) 데이터 분리 train_test_split
2) 로지스틱 회귀 모델
-> 데이터를 랜덤으로 1:1로 긍정:부정 뽑고 그 데이터를 가지고 다시 데이터 분리하기