TF-IDF(Term Frequency-Inverse Document Frequency)


TF-IDF

TF-IDF란

  • 단어의 빈도와 역 문서 빈도를 사용
  • DTM내의 각 단어들에 중요한 정도를 가중치로 줌
  • 문서의 유사도, 검색 결과 중요도를 구하는 작업에서 쓰임

TF-IDF 의미

  • TF X IDF
  • 문서를 d, 단어를 t, 문서의 총 개수를 n

1. tf(d, t) : 특정 문서 d에서 특정 단어 t의 등장 횟수

  • DTM에서 각 단어들이 가진 값

    2. df(t) : 특정 단어 t가 등장한 문서의 수

  • 특정 단어 t가 등장한 문서의 수(그 외에는 고려사항 아님)

    3. idf(t) : df(t)에 반비례하는 수

    \(idf(t) \;=\; log(\frac{n}{1 + df(t)})\)

  • log를 사용하지 않으면 idf의 값이 지나치게 커짐
  • 분모에 1을 더함 : 분모가 0이 되는 것을 방지

    TF-IDF 특장

  • 모든 문서에서 자주 등장하는 단어는 안중요하다고 판단
    • 모든 문서에서 자주 등장하면 tf가 높아지지만 idf는 더 작아짐
    • 결국엔 TF-IDF의 값이 작아짐
  • 불용어는 자연스럽게 중요도가 낮아진다
    • 거의 대부분의 문서에서 자주 등장하기 때문

TF-IDF 예시

  • DTM 예시 활용
  • 문서1 : 먹고 싶은 사과
  • 문서2 : 먹고 싶은 바나나
  • 문서3 : 길고 노란 바나나 바나나
  • 문서4 : 저는 과일이 좋아요
구분 과일이 길고 노란 먹고 바나나 사과 싶은 저는 좋아요
문서1 0 0 0 1 0 1 1 0 0
문서2 0 0 0 1 1 0 1 0 0
문서3 0 1 1 0 2 0 0 0 0
문서4 1 0 0 0 0 0 0 1 1
  • IDF 계산
단어 IDF
과일이 ln(4/(1+1)) = 0.693147
길고 ln(4/(1+1)) = 0.693147
노란 ln(4/(1+1)) = 0.693147
먹고 ln(4/(1+2)) = 0.287682
바나나 ln(4/(1+2)) = 0.287682
사과 ln(4/(1+1)) = 0.693147
싶은 ln(4/(1+2)) = 0.287682
저는 ln(4/(1+1)) = 0.693147
좋아요 ln(4/(1+1)) = 0.693147
  • TF-IDF 적용
구분 과일이 길고 노란 먹고 바나나 사과 싶은 저는 좋아요
문서1 0 0 0 0.287682 0 0.693147 0.287682 0 0
문서2 0 0 0 0.287682 0.287682 0 0.287682 0 0
문서3 0 0.693147 0.693147 0 0.575364 0 0 0 0
문서4 0.693147 0 0 0 0 0 0 0.693147 0.693147