[영화 줄거리로 장르 분류하기]
1. 머신러닝이란?
2. 데이터 전처리
👉3. 벡터화👈
4. 머신러닝
5. 모델 사용하기 및 불용어 제거
ex)
[7, 3, 2, 5, 4, 1]
[7, 3, 2, 1, 2, 3]
[1, 2, 5, 1, 2, 5]
벡터는 위와같이 생겼다. 벡터들 간에는 서로 유사도도 구할 수 있으며, 연산도 가능하다.
문서 단어 행렬 (DTM)
은 텍스트를 벡터화하는 방법 중 하나이다.
DTM을 통해서 각 문서들의 유사도를 구할 수 있다. 하지만 모든 문서에 자주 등장하는 단어들 (별로 중요하지 않은 단어들)은 비교에 그다지 도움이 되지 않는다. (예를 들어 정관서 'the') 따라서 중요한 단어들에 가중치를 주는 방법인 TF-IDF
를 사용한다.
TF-IDF
는 단어의 빈도와 문서의 빈도의 역수를 사용하여 DTM 내의 각 단어들마다 중요한 정도를 가중치로 부여한다. 사용 방법은 DTM을 만든 후, TF-IDF 가중치를 부여한다.
이는 주로 문서의 유사도를 구하는 작업, 검색 시스템에서 검색 결과의 중요도를 정하는 작업, 문서 내에서 특정 단어의 중요도를 구하는 작업에 쓰일 수 있다.
참고 : https://wikidocs.net/31698
사이킷런 (scikit-learn)
사이킷런
은 머신러닝을 위한 가종 기능을 제공하는 모듈이다. 기본적으로 머신러닝의 큰 분류로는회귀
,분류
가 있으며 이러한 머신러닝을 구현하기 위한 함수를 제공한다. 지금 하는 것분류
이며, 4주차에회귀
, 5주차에군집화
를 공부한다.
#모듈 임포트
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
# DTM 벡터화를 위한 객체 생성
vector = CountVectorizer()
# 해당 문서 벡터화 진행
x_train_dtm = vector.fit_transform(문서)
# 벡터가 어떻게 생겼는 지 확인
print(x_train_dtm.toarray())
이렇게 얻은 DTM을 통해 TfidfTransformer()을 사용하여 TF-IDF 행렬(벡터)을 추가적으로 학습할 수 있다.
# tfidf 벡터화를 위한 객체 생성
tfidf_transformer = TfidfTransformer()
# x_train_dtm에 대해서 벡터화 진행
tfidfv = tfidf_transformer.fit_transform(x_train_dtm)
# 벡터가 어떻게 생겼는지 확인
print(tfidfv.toarray())
fit_transform()
외에도 transform()
이라는 함수도 있다.
fit_transform()
은 객체에 벡터값을 저장하면서 벡터화를 진행(학습)한다.transform()
은 훈련 데이터를 통해서 만들어진 벡터값을 바탕으로 그것에 따라 벡터화만 진행한다(학습x).transform()
을 사용한다. 테스트에서도 fit_transform()
을 사용하게 되면 같은 단어라도 다른 벡터값을 저장하게 되어 오류가 발생한다.