본문 바로가기
AI

[Python] 자연어처리 - TfidfVectorizer

by jjjaeunn 2024. 7. 30.
  • 직접 지정한 키워드들을 바탕으로 각 텍스트가 키워드의 특성을 얼마나 반영하고 있는지를 임베딩으로 나타내기 위해 TF-IDF 매트릭스를 사용하기로 했다.
  • 공식문서

TF-IDF

주로 문서간 유사성/연관성을 판단하고 싶을 때 사용한다.

단어(term) 별로 문서의 정보를 얼마나 가지고 있는지를 나타내는 값이다.

TF - Term Frequency

문서가 있을 때 단어가 여러번 출현하면, 문서와 연관성이 높은 단어일 것이다 -> tf score를 높게 측정

그러나, TF score만 고려한다면 불용어까지 연관성을 높게 책정할 위험성 ↑

IDF - Inverse Document Frequency

어느 문서에서나 자주 등장하는 단어들은 문서와 연관성이 낮은 단어일 것이다. -> idf score를 낮게 측정

IDF score

 

=> 문서 또는 문장에서 각 단어가 어느 정도의 연관성을 가지는지 판단해줄 수 있는 score이다.


Code

from sklearn.feature_extraction.text import TfidfVectorizer

vectorizer = TfidfVectorizer()
# corpus - 텍스트를 요소로 가지는 리스트
X = vectorizer.fit_transform(corpus)

 

fit(documents):

주어진 vocabulary와 IDF값을 바탕으로 문서들을 학습

=> return : 학습된 vectorizer

 

fit_transform(documents)

주어진 vocabulary와 IDF값을 바탕으로 문서-단어 정보를 나타내는 매트릭스로 변환

=> return :  tf-idf 가중치를 반영한 sparse matrix of (n_samples, n_features) : 행 개수 - 텍스트 개수 / 열 개수 - feature 개수

 

transform(document) :

이미 학습된 vectorizer을 바탕으로, 새로운 입력값(test값)을 매트릭스로 변환

=> return : tf-idf 가중치를 반영한 sparse matrix of (n_samples, n_features)


ref

https://www.youtube.com/watch?v=meEchvkdB1U