1. 텍스트 벡터화

텍스트를 숫자로 만들어서 머신러닝이 학습할 수 있도록 만들어주는 것

1) 문서 단어 행렬(Document-Term Matrix, DTM)

문서를 행으로 하고, 각 문서에서 등장하는 각 단어들의 등장 횟수를 행렬로 표현한 것

예시)

문서1 : 먹고 싶은 사과

문서2 : 먹고 싶은 바나나

문서3 : 길고 노란 바나나 바나나

문서4 : 저는 과일이 좋아요

 

 

단점: 단어가 전부 빈도수가 높다고 해서 이 문서들이 유사한 문서라고 판단해서는 안되나, DTM은 빈도수로만 판단하기 때문에 단어의 중요도를 반영하지 못한다.

2) TF-IDF(Term Frequency-Inverse Document Frequency)

단어의 빈도와 문서의 빈도의 역수를 사용하여 DTM 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법.

> 우선 DTM을 만든 후, TF-IDF 가중치를 부여해야 한다.

 

TF-IDF 가중치 부여한 결과)

3) 파이썬 코드

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer

corpus = [
    'you know I want your love',
    'I like you',
    'what should I do ',    
]

① DTM

vector = CountVectorizer() # DTM 벡터화를 위한 객체 생성
x_train_dtm = vector.fit_transform(corpus) # 해당 단어들을 벡터화 진행
print(x_train_dtm.toarray()) # 벡터가 어떻게 생겼는지 확인

② TF-IDF

tfidf_transformer = TfidfTransformer() # tfidf 벡터화를 위한 객체 생성
tfidfv = tfidf_transformer.fit_transform(x_train_dtm) # x_train_dtm에 대해서 벡터화 진행
print(tfidfv.toarray()) # 벡터가 어떻게 생겼는지 확인

4) 번외 - fit_transform 과 transform

fit_transform()

생성한 객체 (vector, tfidf_transformer) 에다가 해당 문서 혹은 단어들의 벡터값을 저장하면서 벡터화를 진행하는 함수.

>> 학습시킬 때 사용

 

transform()

훈련 데이터를 통해서 만들어진 벡터값을 보고, 그것에 따라 벡터화를 진행하는 함수.

>> 훈련시킬 때 사용!

+ Recent posts