TF-IDF

Minjung·2025년 10월 14일

💡 특정 문서 내에서 단어가 얼마나 중요한지를 나타내는 척도

  • 정보 검색 및 텍스트 마이닝, 키워드 추출, 텍스트 분류에 가장 널리 쓰임

왜 필요한가?

  • 단순 단어 빈도수(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 등)을 고려할 것 ‼️

profile
취준하는 데이터 분석가의 정리노트📘

0개의 댓글