본문 바로가기

Study

TF-IDF(Term Frequency - Inverse Document Frequency)

개념

  • 단어 빈도 - 역 문서 빈도
  • DTM(Document-Term Matrix) 내에 있는 각 단어에 대한 중요도를 계산할 수 있음
  • 정보 검색과 텍스트 마이닝에서 이용하는 가중치
  • 여러 문서에서 어떤 단어가 특정 문서 내에서 얼마나 중요한 것인지를 나타내는 통계적 수치
  • 모든 문서에서 자주 등장하는 단어는 중요도가 낮고, 특정 문서에서만 자주 등장하는 단어는 중요도가 높다고 판단함
  • 즉, TF-IDF 값이 낮으면 중요도가 낮은 것이며, TF-IDF 값이 크면 중요도가 큰 것임

용도

  • 문서의 핵심어 추출
  • 검색 엔진에서 검색 결과의 순위 결정
  • 문서들 사이의 비슷한 정도 계산

설명

  • TF(Term Frequency)
    • tf(d, t) : 특정 문서 d에서의 특정 단어 t의 등장 횟수
    • 값이 높을수록 해당 단어가 문서에서 중요하다는 것을 의미함
  • DF(Document Frequency)
    • df(t) : 특정 단어 t가 등장한 문서의 수
    • 값이 높을수록 해당 단어가 흔하게 등장한다는 것을 의미함
  • IDF(Inverse Document Frequency)
    • idf(d, t) : df(t)에 반비례하는 수
    • 모든 문서에 자주 등장하는 단어일수록 낮은 가중치를 줌
      $$
      idf(d,t) = log(\frac{n}{1+df(t)})
      $$
    • log를 사용하는 이유
      • log를 사용하지 않으면 총 문서의 수 n이 커질수록, IDF의 값이 기하급수적으로 커지게 됨
    • 분모에 1을 더하는 이유
      • 특정 단어가 전체 문서에서 등장하지 않을 경우 분모가 0이 되지 않도록 하기 위함

예시

아래와 같이 문서가 있을 때, TF와 IDF는 그 아래 표와 같고, TF와 IDF를 가지고 TF-IDF를 구하면 맨 아래 표와 같음

  • 문서
    • 문서 1 : 나는 학교에 갔다
    • 문서 2 : 나는 집에 갔다
    • 문서 3 : 나는 회사에 갔다
  • TF = DTM
    문서 갔다 나는 집에 학교에 회사에
    문서 1 1 1 0 1 0
    문서 2 1 1 1 0 0
    문서 3 1 1 0 0 1
    총 개수 3 3 1 1 1
  • IDF
    단어 IDF
    갔다 $log(\frac{3}{1 + 3}) = -0.287682$
    나는 $log(\frac{3}{1 + 3}) = -0.287682$
    집에 $log(\frac{3}{1 + 1}) = 0.405465$
    학교에 $log(\frac{3}{1 + 1}) = 0.405465$
    회사에 $log(\frac{3}{1 + 1}) = 0.405465$
  • TF-IDF
    문서 갔다 나는 집에 학교에 회사에
    문서 1 -0.287682 -0.287682 0 0.405465 0
    문서 2 -0.287682 -0.287682 0.405465 0 0
    문서 3 -0.287682 -0.287682 0 0 0.405465
  • '집에', '학교에', '회사에'가 '갔다'와 '나는'보다 중요도가 높다고 볼 수 있음

Reference