[2주차_데이터분석] 개발일지 (영화 줄거리로 장르 분류하기-3 벡터화 )

Coastby·2022년 7월 6일
0

[영화 줄거리로 장르 분류하기]
1. 머신러닝이란?
2. 데이터 전처리
👉3. 벡터화👈
4. 머신러닝
5. 모델 사용하기 및 불용어 제거

[목록]

  • DTM
  • TF-IDF
  • DTM, TF-IDF 만들기

3. 벡터화

○ DTM (Document-Term Matrix)

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 (Term Frequency-Inverse Document Frequency)

TF-IDF는 단어의 빈도와 문서의 빈도의 역수를 사용하여 DTM 내의 각 단어들마다 중요한 정도를 가중치로 부여한다. 사용 방법은 DTM을 만든 후, TF-IDF 가중치를 부여한다.

이는 주로 문서의 유사도를 구하는 작업, 검색 시스템에서 검색 결과의 중요도를 정하는 작업, 문서 내에서 특정 단어의 중요도를 구하는 작업에 쓰일 수 있다.
참고 : https://wikidocs.net/31698


○ DTM, TF-IDF 만들기

사이킷런 (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()을 사용하게 되면 같은 단어라도 다른 벡터값을 저장하게 되어 오류가 발생한다.
profile
훈이야 화이팅

0개의 댓글