💡 특정 문서 내에서 단어가 얼마나 중요한지를 나타내는 척도
- 정보 검색 및 텍스트 마이닝, 키워드 추출, 텍스트 분류에 가장 널리 쓰임

왜 필요한가?
- 단순 단어 빈도수(TF)만 쓰면 “경기”, “제품” 같은 흔한 단어가 항상 상위에 떠서 주제어를 가려버림
- IDF는 전체 말뭉치에서 흔한 단어의 가치를 깎아, 각 문서의 차별성을 가진 단어들을 앞으로 끌어옴
→ 단어의 빈도와 역 문서빈도를 사용하여 단어들마다 중요한 정도에 따라서 가중치를 부여한다.
모든 문서에서 등장하는 흔한 단어들은 중요도(가중치)가 낮으며 특정 문서에만 자주 등장하는 단어는 중요도가 높다.
예시
말뭉치 N = 3
- D1 : “금요일에 야구경기 보러 갔다.”
- D2 : “야구경기에서 홈런이 나왔다.”
- D3 : “축구경기도 재미있다.”
TF-IDF 과정
- “경기”는 3문서 모두에 등장 → 가치 낮음
- “야구”는 2문서에 등장 → “경기”보다 가치 높지만, 높은 점수는 아님
- “금요일/홈런/재미있다/축구경기”는 1문서에만 등장 → 가치 가장 높음
→ 모든 문서에 흔한 “경기”보다 각 문서에 특이한 단어들이 더 크게 가중됨.
실제 사용 체크리스트 ✅
- 전처리
- 소문자/정규화, 숫자/기호, 불용어 제거 필수 !
- 한국어는 형태소 분석이 중요
- 하이퍼 파라미터
- sublinear_tf = True : 긴 문서에서 특정 단어의 과도한 TF를 누름
- min_df,max_df : 너무 희귀한 단어 필터링
- ngram_range(1,2) : 조합어(축구+경기 = 축구 경기)까지 포착
- 정규화
- norm=’l2’ : L2정규화. 보통 검색, 유사도 기반 작업에서 안정적임
- 성능/메모리
- 결과는 희소행렬이며, 차원수가 크면 “특징 선택” 또는 “차원 축소”와 함께 씀
→ 형태소 분석, n-gram, 적절한 mid_df,max_df만 잘 잡아도 성능이 크게 향상됨
그러나, [의미]가 중요하다면 TF-IDF는 문맥을 이해하지 못하기 때문에 임베딩 방법(SBERT,BM25 등)을 고려할 것 ‼️