TF-IDF
여러 문서로 이루어진 문서군 이 있을 때 어떤 단어 가 특정 문서 내에서 얼마나 중요한 것인지를 나타내는 통계적 수치이다.
TF 와 IDF 를 곱한 값으로 계산된다.
(term frequency) × (Inverse Document Frequency) 즉, 특정 문서 내 단어의 출현 빈도 × 단어의 희귀도
A.1) TF
단어 가 특정 문서 에 등장하는 횟수 (per-document term frequency)
A.2) IDF
번째 단어가 포함된 문서 (document) 의 개수
A.2.1) 특징
단어가 여러 문서에 자주 등장할수록 값이 작아짐
A.2.2) IDF의 핵심 아이디어: “희귀템은 가치가 높다”
어떤 단어가 여러 문서에 걸쳐 너무 자주 등장한다면, 그 단어는 “은/는”, “이/가”, “그리고”와 같은 조사나 접속사일 가능성이 높습니다. 이런 단어들은 문장을 구성하는 데 꼭 필요하지만, 특정 문서의 핵심 내용을 파악하는 데는 큰 도움이 되지 않습니다.
반대로, 특정 단어가 아주 드물게 몇몇 문서에서만 등장한다면, 그 단어는 해당 문서들의 주제를 나타내는 매우 중요한 핵심 단어일 가능성이 큽니다.
IDF는 바로 이 원리를 이용합니다. 단어가 흔할수록 IDF 값은 낮아지고, 단어가 희귀할수록 IDF 값은 높아집니다.
B) IDF 계산 옛예시
IDF를 계산하는 공식은 다음과 같습니다.
공식이 조금 복잡해 보이지만, 단계별로 보면 아주 간단합니다.
-
N: 전체 문서의 개수를 셉니다.
- 예: 총 1,000개의 문서가 있다고 가정합니다. N = 1000
-
DF(t): 특정 단어 ‘t’가 등장한 문서의 개수를 셉니다. (Term Frequency가 아님에 주의!)
- 예: 단어 ‘머신러닝’이 10개의 문서에 포함되어 있다면, DF(‘머신러닝’) = 10 입니다.
- 한 문서에 ‘머신러닝’이 5번 나오든 100번 나오든, 1개로 셉니다.
-
공식에 대입하여 계산합니다.
IDF(‘머신러닝’) = log ( 1000 / (1 + 10) ) = log( 1000 / 11 ) ≈ log(90.9) ≈ 4.51
(중요) 왜 분모에 +1을 할까요? (Smoothing)
TF-IDF 계산에서 분모에 1을 더하는 이유는 ‘스무딩(smoothing)’이라고 부르며, 이는 수식의 안정성을 높이기 위해 사용됩니다. 예를 들어, 어떤 단어가 모든 문서에 등장하면 DF(t) = N이 되어 이 되어 문제가 없습니다. 그러나 학습 데이터에 없는 새로운 단어가 들어올 경우 DF(t)가 0이 되어 분모가 0이 되면서 ‘division-by-zero’ 오류가 발생할 수 있습니다. 이러한 오류를 방지하고 계산이 원활하게 이루어지도록 분모에 1을 더해주는 방법을 적용합니다.