기술(Tech, IT)/머신 러닝(Machine Learning)

[ML] TF-IDF (Terms Frequency-Inverse Document Frequency)

Daniel803 2023. 10. 3. 07:44

TF-IDF (Terms Frequency-Inverse Document Frequency) 는 흔히 "말뭉치"라고 불리는 문서 모음과 비교해 문서에서 단어의 중요도를 평가하는 데 사용되는 통계적 척더로, 한 문서에서는 흔하지만 전체 말뭉치에서는 드문 단어가 중요할 가능성이 높다는 것이 TF-IDF의 기본 개념이다.

 

TF-IDF는 두 가지로 구성되는데 바로 TF (Terms Frequency, 용어 빈도) 와 IDF (Inverse Document Frequency, 역문서 빈도) 다.

 

  • TF
    : 문서에서 용어가 얼마나 자주 나타나는지를 측정한다.

  • IDF
    : 모든 문서에서 단어가 얼마나 드물거나 흔한지를 측정한다. 많은 문서에 나타나는 단어는 적은 문서에서 나타나는 단어보다 IDF가 낮다.

  • TF-IDF = TF * IDF

따라서 TF-IDF는 기본적으로 용어의 빈도 (TF) 를 모든 문서에서의 희귀도 (IDF) 로 가중치를 매긴다. 어떤 단어가 한 문서에는 자주 등장하지만 다른 문서에는 많이 등장하지 않는다면, 그 단어는 높은 TF-IDF 값을 갖게 된다.

TF-IDF는 정보 검색 및 텍스트 마이닝, 특히 검색 엔진의 문서 순위 지정과 같은 작업에 자주 사용되는데, 이는 대규모 문서 세트와 비교해 특정 문서에서 가장 의미 있는 단어를 구별하는 데 도움이 되기 때문이다.

 

예시를 살펴 보자,

 

Document 1: "The sky is blue."
Document 2: "The sun is bright."
Document 3: "The sun in the sky is bright."


Document 1에서 "sky"의 TF-IDF 값을 계산해보자.

 

  • Term Frequency (TF)
    = Document 1에서 "sky"가 나타나는 횟수 / Document 1의 총 용어의 수 = 1 / 4 = 0.25
  • Inverse Document Frequency (IDF)
    = log (총 문서 수 / "sky"를 포함하는 문서 수) = log (3 / 2) = 0.4055
  • TF-IDF = TF * IDF = 0.25 * 0.4055 = 0.1014

Document 1에서 "sky"의 TF-IDF 값은 약 0.1014, 실제로 특정 문서에 대해 특정 단어의 TF-IDF 점수가 높으면 해당 단어는 주어진 corpus의 맥락에서 해당 문서와 더 중요하거나 관련성이 높은 것으로 간주된다.

 

참고

- https://nesoy.github.io/articles/2017-11/tf-idf

- https://mungingdata.wordpress.com/2017/11/25/episode-1-using-tf-idf-to-identify-the-signal-from-the-noise/