한양과학기술고등학교

에듀테크 프로젝트 대시보드

TF-IDF 텍스트 벡터화

TF-IDF 텍스트 벡터화

글을 숫자로 바꿔야 컴퓨터가 비교·검색·분류를 할 수 있다. 그런데 단어가 몇 번 등장했는지(TF)만 세면 "은·는·이·다" 같은 흔한 말이 항상 점수가 높아진다. TF-IDF는 여기에 "이 단어가 여러 문서에 걸쳐 얼마나 흔한지(IDF)"를 곱해서, 이 문서에서만 자주 나오는 단어일수록 높은 점수를 주는 고전적이면서도 여전히 널리 쓰이는 방법이다.

1. 문서를 고르고 단어를 클릭해 보기

문서 4개를 공백 기준으로 토큰화했다(조사 분리 같은 형태소 분석은 생략한 단순화 버전이다). 문서를 고르면 그 문서의 단어들이 TF-IDF 점수 순으로 막대그래프에 나열된다. 한 줄을 클릭하면 계산 과정이 아래에 펼쳐진다.

2. TF와 IDF, 두 점수를 곱하는 이유

TF (Term Frequency)

TF = 그 단어가 이 문서에 등장한 횟수 / 문서의 전체 단어 수. 한 문서 안에서 얼마나 중요해 보이는지를 나타낸다.

DF (Document Frequency)

전체 문서 N개 중 그 단어가 등장한 문서의 개수. 거의 모든 문서에 나오는 단어라면 DF가 크다.

IDF (Inverse Document Frequency)

IDF = ln(N / DF). DF가 클수록(흔할수록) IDF는 작아진다 — "흔함에 대한 벌점"이다.

TF-IDF

TF-IDF = TF × IDF. "이 문서에서 자주 나오면서(TF↑) 다른 문서에는 잘 없는(IDF↑) 단어"일수록 점수가 커진다.

데모의 "고양이는"·"강아지는"은 두 문서에 걸쳐 등장해 IDF가 낮게 깎이지만, "소파"·"낮잠을"처럼 한 문서에만 등장하는 단어는 IDF가 높아 그 문서를 대표하는 핵심어로 떠오른다. 실제로는 조사를 뗀 형태소 분석과 불용어(stopword) 제거까지 함께 적용한다.

3. 실전에서는 이렇게 쓰인다

검색 엔진

검색어와 TF-IDF 점수가 겹치는 문서를 랭킹 상위에 올린다(BM25 등은 이를 더 정교화한 버전).

문서 유사도 · 추천

각 문서를 TF-IDF 벡터로 만들고 코사인 유사도를 재면, 비슷한 주제의 문서를 찾을 수 있다.

키워드 자동 추출

한 문서에서 TF-IDF가 가장 높은 단어 몇 개를 뽑으면 그 글의 핵심 키워드가 된다.

핵심 정리

  • TF만 쓰면 흔한 단어가 과대평가된다 → IDF로 여러 문서에 흔한 단어의 가중치를 낮춘다
  • TF-IDF = TF × IDF, 값이 클수록 "이 문서를 대표하는 단어"
  • 문서를 벡터로 표현할 수 있게 되어 검색·유사도·키워드 추출의 기본 도구가 된다
  • BPE·워드 임베딩 같은 이후 기법들도 결국 "텍스트를 숫자로" 바꾼다는 같은 목표를 공유한다