맨위로가기

Tf-idf

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

TF-IDF는 단어 빈도(TF)와 역문서 빈도(IDF)를 곱하여 계산하는 기법으로, 특정 단어가 문서 내에서 얼마나 자주 나타나는지와 전체 문서 집합에서 얼마나 흔하게 나타나는지를 반영한다. TF는 문서 내 단어의 빈도를, IDF는 전체 문서에서 해당 단어가 나타나는 빈도의 역수를 나타낸다. TF-IDF 값을 통해 모든 문서에 흔하게 나타나는 단어를 걸러내는 효과를 얻을 수 있다. 이 기법은 텍스트 마이닝, 정보 검색 등 다양한 분야에서 활용되며, 단어 외에도 인용 분석, 객체 매칭, 문장 분석 등에도 적용될 수 있다.

더 읽어볼만한 페이지

  • 벡터 공간 모델 - 명시 의미 분석
    명시 의미 분석은 텍스트 모음에서 단어와 문서 간 관계를 분석하여 단어의 의미적 관련성을 추정하는 방법으로, 위키백과 데이터를 활용해 단어를 개념 벡터로 표현하고 코사인 유사도 등으로 관련성을 측정하며, 문서 관련성 계산 등 다양한 분야에 응용된다.
  • 벡터 공간 모델 - 일반화 벡터 공간 모델
    일반화 벡터 공간 모델은 단어 간의 상관도를 고려하여 문서와 질의의 유사도를 계산하며, 단어 벡터를 여러 벡터의 선형 조합으로 표현하고 단어 간의 의미적 상관도를 계산하여 의미 정보를 처리한다.
  • 통계적 자연어 처리 - 확률적 앵무새
    확률적 앵무새는 거대 언어 모델이 의미를 이해하지 못하고 확률적으로 단어를 연결하여 텍스트를 생성하는 것을 앵무새에 비유한 용어로, 환경적 비용, 편향성, 허위 정보 생성 가능성 등의 위험성을 경고하며 LLM의 이해 능력에 대한 논쟁을 불러일으킨다.
  • 통계적 자연어 처리 - 언어 모델
    언어 모델은 단어 시퀀스에 확률을 할당하는 통계적 모델로서 자연어 처리 분야에서 중요한 역할을 하며, 초기 마르코프 과정 기반 모델에서 지수 함수 모델, 신경망 모델을 거쳐 음성 입력 모델 등 다양한 형태로 연구되고, 벤치마크 데이터 세트를 통해 성능이 평가된다.
  • 자연어 처리 - 정보 추출
    정보 추출은 비정형 또는 반구조화된 텍스트에서 구조화된 정보를 자동으로 추출하는 기술로, 자연어 처리 기술을 활용하여 개체명 인식, 관계 추출 등의 작업을 수행하며 웹의 방대한 데이터에서 유용한 정보를 얻는 데 사용된다.
  • 자연어 처리 - 단어 의미 중의성 해소
    단어 의미 중의성 해소(WSD)는 문맥 내 단어의 의미를 파악하는 계산 언어학 과제로, 다양한 접근 방식과 외부 지식 소스를 활용하여 연구되고 있으며, 다국어 및 교차 언어 WSD 등으로 발전하며 국제 경연 대회를 통해 평가된다.
Tf-idf
일반 정보
이름TF-IDF (Term Frequency-Inverse Document Frequency)
한국어 명칭단어 빈도-역문서 빈도
유형가중치 부여 방식
상세 정보
목적문서 내 단어의 중요도 측정
사용 분야정보 검색
텍스트 마이닝
주요 개념단어 빈도 (TF, Term Frequency)
역문서 빈도 (IDF, Inverse Document Frequency)
계산 방법
단어 빈도 (TF)특정 문서 내에서 특정 단어가 나타나는 횟수
역문서 빈도 (IDF)전체 문서 집합에서 특정 단어가 포함된 문서 수의 역수 (로그 스케일 적용)
TF-IDF 계산TF 값과 IDF 값을 곱하여 계산
장점
특징계산 용이성
직관적인 해석
효과문서 내에서 중요한 단어 식별 용이
단점
고려 사항단어의 의미적 중요성 미반영
짧은 문서에 편향될 가능성 존재
활용 예시
문서 검색검색어와 관련된 문서를 찾는데 사용
문서 분류문서의 특징을 추출하여 문서를 분류하는데 사용
사용자 모델링사용자의 관심사를 파악하는데 사용
참고 자료
관련 논문Research-paper recommender systems: a literature survey 국제 디지털 도서관 저널
관련 서적Mining of Massive Datasets 스탠포드 대학교

2. 정의

TF-IDF(Term Frequency-Inverse Document Frequency)는 정보 검색과 텍스트 마이닝에서 이용하는 가중치로, 여러 문서로 이루어진 문서 집합이 있을 때 어떤 단어가 특정 문서 내에서 얼마나 중요한 것인지를 나타내는 통계적 수치다. TF-IDF는 단어 빈도(TF, Term Frequency)와 역문서 빈도(IDF, Inverse Document Frequency)의 곱으로 계산된다.


  • '''단어 빈도 (TF)'''는 특정 단어가 문서 내에 얼마나 자주 등장하는지를 나타내는 값이다.
  • '''역문서 빈도 (IDF)'''는 특정 단어가 전체 문서 집합에서 얼마나 희소하게 등장하는지를 나타내는 값이다. 문서 집합 전체에서 흔하게 나타나는 단어일수록 IDF 값은 낮아지고, 특정 문서에만 드물게 나타나는 단어일수록 IDF 값은 높아진다.


TF-IDF 값은 다음과 같은 수식으로 표현된다.

:\mathrm{tfidf}(t,d,D) = \mathrm{tf}(t,d) \times \mathrm{idf}(t, D)

여기서 t는 단어, d는 특정 문서, D는 전체 문서 집합을 의미한다.

결과적으로, 특정 문서 내에서 단어 빈도(TF)가 높을수록, 그리고 전체 문서들 중 그 단어를 포함한 문서가 적을수록(IDF가 높을수록) TF-IDF 값은 높아진다. 이 값을 이용하면 "the", "a", 조사 등과 같이 모든 문서에 흔하게 나타나는 단어(불용어)의 중요도는 낮추고, 특정 문서의 주제를 잘 나타내는 중요한 단어의 중요도는 높이는 효과를 얻을 수 있다.[31] IDF 계산에 사용되는 로그 함수의 특성상 IDF 값과 TF-IDF 값은 항상 0 이상이 된다.

2. 1. 단어 빈도 (TF, Term Frequency)

'''단어 빈도'''(TF, Term Frequency)는 특정 문서 내에서 특정 단어가 얼마나 자주 나타나는지를 나타내는 값이다. TF-IDF는 단어 빈도(TF)와 역문서 빈도(IDF)의 곱으로 계산된다.

단어 빈도 tf(t,d) 값을 산출하는 가장 간단한 방법은 문서 d 내에 나타나는 해당 단어 t의 총 빈도수(raw count), 즉 f(t,d)를 사용하는 것이다.

:\mathrm{tf}(t,d) = f_{t,d}

그러나 문서의 길이에 따라 단어 빈도값이 영향을 받을 수 있으므로, 이를 보정하기 위한 여러 가지 TF 가중치 계산 방식이 존재한다.[31][5][20]

단어 빈도(TF) 가중치 계산 방식
가중치 방식tf 가중치
불린(binary){0,1} (단어가 문서에 있으면 1, 없으면 0)
원시 빈도 (raw count) f_{t,d}
단어 빈도 (term frequency) f_{t,d} \Bigg/ {\sum_{t \in d}{f_{t,d}}} (단어 빈도 / 문서 내 전체 단어 수)
로그 정규화 (log normalization) \log (1 + f_{t,d})[6][21]
이중 0.5 정규화 (double normalization 0.5)0.5 + 0.5 \cdot \frac { f_{t,d} }{\max_{\{t \in d\}} {f_{t,d}}} (긴 문서에 대한 편향 조정)
이중 K 정규화 (double normalization K)K + (1 - K) \frac { f_{t,d} }{\max_{\{t \in d\}} {f_{t,d}}} (K는 보통 0.5 사용)


  • 불린 빈도: tf(t,d) = t가 d에 한 번이라도 나타나면 1, 아니면 0.
  • 로그 스케일 빈도: tf(t,d) = log (1 + f(t,d)). 단어 빈도수의 절대적인 차이보다는 상대적인 중요도를 반영한다.[6]
  • 상대 빈도: tf(t,d) = f(t,d) / (문서 d 내 전체 단어 수). 문서의 길이를 고려하여 정규화한다.

: \mathrm{tf}(t,d) = \frac{f_{t,d}}}}

  • 증가 빈도 (Augmented frequency) / 이중 정규화: 문서 내에서 가장 자주 등장하는 단어의 빈도를 이용하여 정규화하는 방식으로, 긴 문서에서 특정 단어가 과도하게 높은 빈도를 갖는 것을 방지한다. 예를 들어, 이중 0.5 정규화 방식은 다음과 같다.

:\mathrm{tf}(t,d) = 0.5 + 0.5 \cdot \frac{f_{t, d}}{\max\{f_{t', d}:t' \in d\}}

최초의 단어 가중치 부여 기법 중 하나는 한스 피터 루은(Hans Peter Luhn)이 1957년에 제안한 것으로, 문서 내 단어의 가중치는 그 출현 빈도에 단순 비례한다는 개념에 기반한다.[18] TF-IDF는 이러한 단어 빈도 개념을 바탕으로 문서 간 단어의 중요도를 비교하기 위해 역문서 빈도(IDF)를 추가로 고려한다.

2. 2. 역문서 빈도 (IDF, Inverse Document Frequency)

'''역문서 빈도'''(Inverse Document Frequency, IDF)는 한 단어가 문서 집합 전체에서 얼마나 공통적으로 나타나는지를 나타내는 값으로, 단어가 제공하는 정보의 양을 측정하는 척도이다. 즉, 어떤 단어가 특정 문서 내에서는 자주 등장하더라도 다른 여러 문서에서도 흔하게 등장한다면, 그 단어의 중요도는 낮다고 판단하고 반대로 특정 문서에서만 집중적으로 사용된다면 중요도가 높다고 판단하는 방식이다. 이는 모든 문서에 흔하게 나타나는 단어(예: "the", "a", 조사 등)의 가중치를 줄이고, 특정 문서에 집중되는 드문 단어의 가중치를 높이는 효과를 가져온다.[19]

IDF는 1972년 캐런 스패르크 존스(Karen Spärck Jones)가 "용어 특정성"(term specificity)이라는 개념으로 처음 소개했으며, 이는 정보 검색 분야에서 용어 가중치 부여 방식의 중요한 기초가 되었다.[3][19] 스패르크 존스는 "용어의 특정성은 그 용어가 나타나는 문서 수의 역함수로 정량화할 수 있다"고 설명했다.[3]

IDF 값은 전체 문서의 수를 해당 단어 t를 포함한 문서의 수로 나눈 뒤 로그를 취하여 계산한다.

: \mathrm{idf}(t, D) = \log \frac{N}



여기서,

  • N: 코퍼스 내 총 문서 수 (N = |D|)
  • |\{d \in D: t \in d\}| : 단어 t가 포함된 문서의 수 (즉, \mathrm{tf}(t,d) \neq 0인 문서 d의 개수).


만약 단어 t가 전체 문서 집합 D 안에 존재하지 않으면 분모가 0이 되어 계산 오류가 발생할 수 있다. 이를 방지하기 위해 실제 계산에서는 분모에 1을 더하여 1 + |\{d \in D: t \in d\}|로 사용하는 경우가 많다.

IDF 값은 항상 0 이상이다. 특정 단어를 포함하는 문서가 많을수록 로그 안의 값(\frac{N}

)은 1에 가까워지고, IDF 값은 0에 가까워진다. 반대로 특정 단어를 포함하는 문서가 적을수록 IDF 값은 커진다.

예를 들어, 셰익스피어의 37개 희곡 전체를 문서 집합으로 간주했을 때 각 단어의 문서 빈도(df)와 역문서 빈도(idf)는 다음과 같이 계산될 수 있다:[4]

셰익스피어 희곡 내 단어 예시
단어df (해당 단어가 등장하는 희곡 수)idf (\log \frac{37}{\mathrm{df}})
로미오11.57
샐러드21.27
팰스태프40.967
120.489
전투210.246
재치340.037
바보360.012
좋다370
달콤한370



위 표에서 "로미오", "

다양한 역 문서 빈도 함수의 그래프: 표준, 스무딩, 확률적


IDF 계산에는 여러 변형 방식이 존재한다.

역 문서 빈도(idf) 가중치 계산 방법
가중치 방식n_t =>\{d \in D: t \in d\}| 는 단어 t를 포함하는 문서 수, N은 총 문서 수)
단항 (사용 안 함)1
역 문서 빈도 (표준) \log \frac {N} {n_t} = - \log \frac {n_t} {N}
역 문서 빈도 스무딩 \log \left( \frac {N} {1 + n_t}\right)+ 1
역 문서 빈도 최대 \log \left(\frac {\max_{\{t \in d\}} n_{t}} {1 + n_t}\right)
확률적 역 문서 빈도 \log \frac {N - n_t} {n_t}



스패르크 존스가 IDF를 제안한 이후, 이 개념은 정보 검색 분야에서 효과적인 휴리스틱으로 널리 사용되었지만, 그 이론적 기반에 대해서는 오랫동안 논의가 이어졌다. 많은 연구자들이 정보 이론적 관점에서 IDF를 정당화하려는 시도를 해왔다.[7]

한 가지 접근법은 IDF를 확률 이론에 기반하여 해석하는 것이다. 특정 문서 d가 단어 t를 포함할 확률 P(t|D)를 상대 문서 빈도 \frac

{N}로 추정하면, IDF는 다음과 같이 표현될 수 있다.[8]

:

\mathrm{idf} = -\log P(t|D) = \log \frac{1}{P(t|D)} = \log \frac{N}





이는 정보 이론의 자기 정보(self-information)와 동일한 형태를 가진다. 그러나 이 해석을 정보 검색 문제에 직접 적용하기에는 문서, 질의, 용어 간의 관계를 포괄하는 적절한 확률 공간을 정의하기 어렵다는 문제가 있다.[7]

2. 3. TF-IDF 계산

TF-IDF는 단어 빈도(TF, term frequency)와 역문서 빈도(IDF, inverse document frequency)의 곱으로 계산된다. 이 두 값은 문서나 웹 페이지에서 특정 키워드나 구문의 중요성을 평가하는 데 사용되며, 계산 방식에는 여러 가지 변형이 존재한다.

'''단어 빈도'''(TF, Term Frequency)는 특정 단어 t가 특정 문서 d 내에 얼마나 자주 나타나는지를 나타내는 값이다. 가장 간단한 방법은 문서 내 해당 단어의 총 빈도수(raw count), 즉 f_{t,d}를 사용하는 것이다.

:\mathrm{tf}(t,d) = f_{t,d}

그러나 문서의 길이에 따라 빈도수가 영향을 받을 수 있으므로, 이를 보정하기 위한 여러 가지 계산 방식이 사용된다.[31][5]

단어 빈도(TF) 가중치 계산 방식
가중치 방식tf 가중치
이진 (binary){0,1} (단어가 문서에 있으면 1, 없으면 0)
원시 빈도 (raw count) f_{t,d}
단어 빈도 (term frequency) f_{t,d} \Bigg/ {\sum_{t \in d}{f_{t,d}}} (문서 내 전체 단어 수로 나눈 값)
로그 정규화 (log normalization) \log (1 + f_{t,d})[6]
이중 0.5 정규화 (double normalization 0.5)0.5 + 0.5 \cdot \frac { f_{t,d} }{\max_{\{t \in d\}} {f_{t,d}}} (문서 내 최빈 단어 빈도로 정규화)
이중 K 정규화 (double normalization K)K + (1 - K) \frac { f_{t,d} }{\max_{\{t \in d\}} {f_{t,d}}} (K는 보통 0.4 또는 0.5 사용)



'''역문서 빈도'''(IDF, Inverse Document Frequency)는 한 단어가 전체 문서 집합(D)에서 얼마나 공통적으로 나타나는지를 나타내는 값이다. 특정 단어가 여러 문서에 자주 등장할수록 그 단어의 중요도는 낮다고 판단하며, 반대로 특정 문서에서만 드물게 등장하는 단어는 중요도가 높다고 본다. IDF는 전체 문서의 수(N)를 해당 단어(t)를 포함한 문서의 수로 나눈 뒤 로그를 취하여 계산한다.

: \mathrm{idf}(t, D) = \log \frac{N}



여기서,

  • N = |D|: 코퍼스 내 총 문서의 수
  • |\{d \in D: t \in d\}| : 단어 t가 포함된 문서의 수 (즉, \mathrm{tf}(t,d) \neq 0인 문서의 수).


만약 단어 t가 전체 코퍼스에 존재하지 않으면 분모가 0이 되어 계산 오류가 발생할 수 있다. 이를 방지하기 위해 분모에 1을 더한 1 + |\{d \in D: t \in d\}| 값을 사용하거나, 분자를 1 + N으로 조정하는 등의 스무딩(smoothing) 방법을 사용하기도 한다.

역 문서 빈도(IDF) 가중치 계산 방식
가중치 방식n_t =>\{d \in D: t \in d\}| )
단항 (unary)1 (IDF를 사용하지 않음)
역 문서 빈도 (inverse document frequency) \log \frac {N} {n_t} = - \log \frac {n_t} {N}
역 문서 빈도 스무딩 (inverse document frequency smooth) \log \left( \frac {N} {1 + n_t}\right)+ 1
역 문서 빈도 최대 (inverse document frequency max) \log \left(\frac {\max_{\{t \in d\}} n_{t}} {1 + n_t}\right)
확률적 역 문서 빈도 (probabilistic inverse document frequency) \log \frac {N - n_t} {n_t}



최종적으로 TF-IDF 값은 계산된 TF와 IDF 값을 곱하여 얻는다.

:\mathrm{tfidf}(t,d,D) = \mathrm{tf}(t,d) \times \mathrm{idf}(t, D)

TF-IDF 가중치는 특정 문서 내에서 단어 빈도(TF)가 높을수록, 그리고 전체 문서 집합에서 해당 단어를 포함한 문서(DF)가 적을수록 높아진다. 따라서 이 값은 "the", "a"와 같이 여러 문서에 흔하게 등장하는 단어들(불용어)의 중요도는 낮추고, 특정 문서에서 중요하게 다뤄지는 단어의 중요도는 높이는 효과를 가진다. IDF 계산 시 로그 함수 안의 값(N/n_t)은 항상 1 이상이므로, IDF 값과 TF-IDF 값은 항상 0 이상이 된다. 특정 단어를 포함하는 문서(n_t)가 많아질수록 로그 함수 안의 값은 1에 가까워지고, IDF 값과 TF-IDF 값은 0에 가까워진다.

용어 빈도-역 문서 빈도(TF-IDF) 가중치 계산 방식
가중치 방식tf-idf
빈도수-idf (frequency-idf) f_{t,d} \cdot \log \frac {N} {n_t}
이중 정규화-idf (double normalization-idf) \left(0.5 + 0.5 \frac {f_{t,q}} {\max_t f_{t,q}}\right) \cdot \log \frac {N} {n_t}
로그 정규화-idf (log normalization-idf) (1 + \log f_{t,d}) \cdot \log \frac {N} {n_t}



=== 예시 ===

다음과 같이 두 개의 문서(d_1, d_2)로 구성된 코퍼스(D)가 있다고 가정해보자.

문서 1 (d_1)
단어빈도수
this1
is1
a2
sample1



문서 2 (d_2)
단어빈도수
this1
is1
another2
example3



"this"라는 단어에 대한 TF-IDF를 계산해보자. (단어 빈도(TF)는 문서 내 전체 단어 수로 나눈 상대 빈도를 사용하고, 로그는 밑이 10인 상용로그를 사용한다.)


  • '''TF 계산:'''
  • 문서 1(d_1)의 총 단어 수: 1 + 1 + 2 + 1 = 5
  • 문서 2(d_2)의 총 단어 수: 1 + 1 + 2 + 3 = 7
  • \mathrm{tf}(\mathsf{''this''}, d_{1}) = \frac{1}{5} = 0.2
  • \mathrm{tf}(\mathsf{''this''}, d_{2}) = \frac{1}{7} \approx 0.143

  • '''IDF 계산:'''
  • 전체 문서 수(N): 2
  • "this"를 포함하는 문서 수(n_{this}): 2 (d_1, d_2 모두 포함)
  • \mathrm{idf}(\mathsf{''this''}, D) = \log \left (\frac{N}{n_{this}} \right ) = \log \left (\frac{2}{2} \right ) = \log(1) = 0

  • '''TF-IDF 계산:'''
  • \mathrm{tfidf}(\mathsf{''this''}, d_{1}, D) = \mathrm{tf}(\mathsf{''this''}, d_{1}) \times \mathrm{idf}(\mathsf{''this''}, D) = 0.2 \times 0 = 0
  • \mathrm{tfidf}(\mathsf{''this''}, d_{2}, D) = \mathrm{tf}(\mathsf{''this''}, d_{2}) \times \mathrm{idf}(\mathsf{''this''}, D) = 0.143 \times 0 = 0


"this"는 두 문서 모두에 등장하므로 IDF 값이 0이 되어 TF-IDF 값도 0이 된다. 이는 이 단어가 문서들을 구별하는 데 큰 정보를 주지 못함을 의미한다.

다음으로 "example" 단어에 대한 TF-IDF를 계산해보자.

  • '''TF 계산:'''
  • \mathrm{tf}(\mathsf{''example''}, d_{1}) = \frac{0}{5} = 0 ("example"은 d_1에 없음)
  • \mathrm{tf}(\mathsf{''example''}, d_{2}) = \frac{3}{7} \approx 0.429

  • '''IDF 계산:'''
  • 전체 문서 수(N): 2
  • "example"을 포함하는 문서 수(n_{example}): 1 (d_2만 포함)
  • \mathrm{idf}(\mathsf{''example''}, D) = \log \left (\frac{N}{n_{example}} \right ) = \log \left (\frac{2}{1} \right ) = \log(2) \approx 0.301

  • '''TF-IDF 계산:'''
  • \mathrm{tfidf}(\mathsf{''example''}, d_1, D) = \mathrm{tf}(\mathsf{''example''}, d_1) \times \mathrm{idf}(\mathsf{''example''}, D) = 0 \times 0.301 = 0
  • \mathrm{tfidf}(\mathsf{''example''}, d_2, D) = \mathrm{tf}(\mathsf{''example''}, d_2) \times \mathrm{idf}(\mathsf{''example''}, D) \approx 0.429 \times 0.301 \approx 0.129


"example"은 d_2에만 나타나고 빈도수도 상대적으로 높기 때문에, d_2에서 0보다 큰 TF-IDF 값을 가진다. 이는 "example" 단어가 d_2 문서의 내용을 나타내는 데 상대적으로 중요한 역할을 할 수 있음을 시사한다.

3. 수학적 설명

TF-IDF는 단어 빈도(TF)와 역문서 빈도(IDF)의 곱이다. 두 값을 산출하는 방식에는 여러 가지가 있다.

'''단어 빈도'''(TF, Term Frequency) tf(''t'',''d'')는 특정 단어 ''t''가 특정 문서 ''d''에 얼마나 자주 등장하는지를 나타내는 값이다. 이 값을 산출하는 가장 간단한 방법은 단순히 문서 내에 나타나는 해당 단어의 총 빈도수(f(''t'',''d''))를 사용하는 것이다.

:\mathrm{tf}(t,d) = \mathrm{f}(t, d)

그 밖에 TF값을 산출하는 방식에는 다음과 같은 것들이 있다.[31]


  • 불린 빈도: tf(''t'',''d'') = ''t''가 ''d''에 한 번이라도 나타나면 1, 아니면 0.
  • 로그 스케일 빈도: tf(''t'',''d'') = log (f(''t'',''d'') + 1). 단어 빈도에 로그를 취해 값의 편차를 줄인다.
  • 증가 빈도(Augmented frequency): 문서 내에서 가장 자주 등장하는 단어의 빈도로 해당 단어의 빈도를 나누어 정규화하는 방식이다. 문서의 길이가 상대적으로 길 경우, 단어 빈도값을 조절하기 위해 사용될 수 있다.

:\mathrm{tf}(t,d) = 0.5 + \frac{0.5 \times \mathrm{f}(t, d)}{\max\{\mathrm{f}(w, d):w \in d\}}

'''역문서 빈도'''(IDF, Inverse Document Frequency)는 한 단어가 전체 문서 집합 D에서 얼마나 공통적으로 나타나는지를 나타내는 값이다. 전체 문서의 수(|D|)를 해당 단어 ''t''를 포함한 문서의 수( |\{d \in D: t \in d\}| )로 나눈 뒤 로그를 취하여 얻을 수 있다.

: \mathrm{idf}(t, D) = \log \frac


  • |D| : 문서 집합 D의 크기, 또는 전체 문서의 수
  • |\{d \in D: t \in d\}| : 단어 t가 포함된 문서의 수 (즉, \mathrm{tf}(t,d) \neq 0인 문서의 수). 만약 단어 t가 전체 말뭉치(corpus) 안에 존재하지 않아 해당 단어를 포함한 문서가 없을 경우, 분모가 0이 되어 IDF 값을 계산할 수 없다. 이를 방지하기 위해 분모에 1을 더하여 1 + |\{d \in D: t \in d\}|로 사용하는 경우가 많다.


TF-IDF는 단어 빈도(TF)와 역문서 빈도(IDF)를 곱하여 계산한다.

:\mathrm{tfidf}(t,d,D) = \mathrm{tf}(t,d) \times \mathrm{idf}(t, D)

TF-IDF 값은 특정 문서 내에서 단어 빈도(TF)가 높을수록, 그리고 전체 문서들 중 그 단어를 포함한 문서(IDF)가 적을수록 높아진다. 이는 특정 문서 내에서는 자주 등장하지만 다른 문서에서는 잘 등장하지 않는, 해당 문서를 잘 나타내는 단어일수록 높은 값을 가지게 됨을 의미한다. 따라서 TF-IDF 값을 이용하면 모든 문서에 흔하게 나타나는 단어(예: 조사, 관사 등)는 낮은 값을 가지게 되어 중요도가 낮은 단어로 간주하는 효과를 얻을 수 있다.

IDF 계산 시 로그 함수 안의 값(\frac

)은 항상 1 이상이므로, IDF 값과 TF-IDF 값은 항상 0 이상이 된다. 특정 단어를 포함하는 문서들이 많을수록 로그 함수 안의 값이 1에 가까워지게 되고, 이 경우 IDF 값과 TF-IDF 값은 0에 가까워지게 된다.

4. 역사적 배경

캐런 스패르크 존스(Karen Spärck Jones)는 1972년, 용어 특정성(term specificity)의 통계적 해석인 역 문서 빈도(Inverse Document Frequency, idf) 개념을 고안했다. 이는 용어 가중치(term weighting)의 중요한 기초가 되었다.[3] 스패르크 존스는 "용어의 특정성은 그 용어가 나타나는 문서 수의 역함수로 정량화할 수 있다"고 설명했다. 예를 들어, 셰익스피어의 37개 희곡 모음에서 일부 단어의 문서 빈도(df)와 역 문서 빈도(idf)는 다음과 같다.[4]

셰익스피어 희곡에서의 df 및 idf 예시
단어df (문서 빈도)idf (역 문서 빈도)
로미오11.57
샐러드21.27
팰스태프40.967
120.489
전투210.246
재치340.037
바보360.012
좋다370
달콤한370



위 표에서 볼 수 있듯이, "로미오", "

IDF는 1972년 스패르크 존스의 논문에서 "용어 특이성(term specificity)"이라는 이름으로 처음 소개되었다. 이 개념은 정보 검색 분야에서 효과적인 휴리스틱(heuristic)으로 널리 사용되어 왔지만, 그 이론적 기반에 대해서는 이후 30년 이상 논의가 계속되었다. 많은 연구자들이 정보 이론(information theory)을 통해 idf의 정당성을 확립하고자 노력했다.[7][22] 스패르크 존스 자신은 지프의 법칙(Zipf's law)과의 연관성을 언급했을 뿐, 명확한 이론적 설명을 제시하지는 않았다.[7][22]

이후 idf를 확률 이론(probability theory)에 기반하여 설명하려는 시도가 있었다. 특정 문서 집합 D에서 문서 d가 용어 t를 포함할 확률 P(t|D)를 상대적인 문서 빈도(document frequency)로 추정하는 방식이다.[8][23]

:

P(t|D) = \frac

{N}



여기서 N은 전체 문서의 수를 나타낸다. 이를 바탕으로 idf는 다음과 같이 정의될 수 있다.

:

\begin{align}

\mathrm{idf}(t, D) & = -\log P(t|D) \\

& = \log \frac{1}{P(t|D)} \\

& = \log \frac{N}



\end{align}



이 정의에 따르면, 역 문서 빈도는 용어가 문서에 등장할 확률의 역수에 로그를 취한 값, 즉 "역" 상대 문서 빈도의 로그 값이다.

이러한 확률론적 해석은 정보 이론에서의 자기 정보(self-information) 개념과 동일한 형태를 가진다. 그러나 정보 이론적 개념을 정보 검색 문제에 직접 적용하는 데에는 어려움이 따른다. 정보 검색 시스템에서는 문서뿐만 아니라 사용자 질의(query)와 용어 자체도 고려해야 하므로, 관련된 모든 요소를 포함하는 적절한 확률 분포(probability distribution)와 확률 공간(sample space)을 정의하기가 복잡하기 때문이다.[7][22]

5. 정보 이론과의 관계

IDF는 1972년 캐런 스패르크 존스(Karen Spärck Jones)가 발표한 논문에서 "용어 특이성"(term specificity)이라는 개념으로 처음 소개되었다. 이 개념은 검색 성능을 높이는 훌륭한 휴리스틱으로 오랫동안 사용되어 왔지만, 그 이론적 기반에 대해서는 최소 30년 이상 논쟁이 이어졌으며, 많은 연구자들이 정보 이론을 통해 이를 정당화하고자 노력했다.[7]

스패르크 존스 본인은 지프의 법칙과의 연관성을 언급한 것 외에는 IDF에 대한 깊이 있는 이론적 설명을 제시하지는 않았다.[7] 이후 IDF를 확률 이론에 기반하여 설명하려는 시도가 있었다. 특정 문서 집합 D에서 임의의 문서 d가 특정 용어 t를 포함할 확률 P(t|D)를 상대적인 문서 빈도로 추정하는 방식이다.[8]

:

P(t|D) = \frac

{N}



여기서 N은 전체 문서의 수를 나타낸다 (N = |D|). 이 확률을 이용하여 IDF를 다음과 같이 정의할 수 있다.

:

\begin{align}

\mathrm{idf}(t) & = -\log P(t|D) \\

& = \log \frac{1}{P(t|D)} \\

& = \log \frac{N}



\end{align}



이는 역 문서 빈도(IDF)가 특정 용어가 문서에 등장할 확률의 역수에 로그를 취한 값, 즉 자기 정보(self-information)와 동일한 형태임을 보여준다. 그러나 이러한 정보 이론적 개념을 정보 검색 문제에 직접 적용하는 데는 어려움이 따른다. 정보 검색 시스템에서는 문서뿐만 아니라 사용자의 검색어(쿼리)와 용어 자체의 특성까지 고려해야 하는데, 이를 모두 포함하는 적절한 확률 분포의 사건 공간을 정의하기가 복잡하기 때문이다.[7]

정보 이론의 관점에서 용어 빈도(TF)와 역 문서 빈도(IDF)를 모두 공식화할 수 있으며, 이는 TF-IDF 가중치가 문서의 정보 내용과 어떤 관련이 있는지 이해하는 데 도움을 준다. 문서와 용어의 결합 확률 분포 p(d,t)에 대해 다음과 같은 특징적인 가정을 사용한다.

:

p(d|t) = \frac{1}





이 가정은 특정 용어 t가 주어졌을 때, 해당 용어를 포함하는 문서 d가 선택될 확률이 균등하다는 의미이다. Aizawa는 이 가정이 "TF-IDF가 사용하는 발견법(휴리스틱)을 나타낸다"고 설명했다.[9]

이 가정을 바탕으로, 전체 문서 집합 D에서 특정 용어 t를 포함하는 문서를 "무작위로 선택"했을 때의 조건부 엔트로피 H({\cal D}|{\cal T}=t)는 다음과 같이 계산된다 (모든 문서가 동일한 확률로 선택된다고 가정).

:

H({\cal D}|{\cal T}=t)=-\sum_d p_{d|t}\log p_{d|t}=-\log \frac{1}

=\log \frac

+ \log |D|=-\mathrm{idf}(t)+\log |D|



여기서 {\cal D}{\cal T}는 각각 문서와 용어를 선택하는 행위에 해당하는 확률 변수이다. 이를 이용해 문서와 용어 간의 상호 정보량 M({\cal T};{\cal D})을 다음과 같이 표현할 수 있다.

:

M({\cal T};{\cal D}) = H({\cal D}) - H({\cal D}|{\cal T}) = \sum_t p_t\cdot(H({\cal D}) - H({\cal D}|W=t))=\sum_t p_t \cdot \mathrm{idf}(t)



여기서 p_t는 특정 용어 t가 선택될 무조건부 확률이다. 이 식을 더 전개하면 다음과 같다.

:

M({\cal T};{\cal D})=\sum_{t,d} p_{t|d}\cdot p_d \cdot \mathrm{idf}(t) = \sum_{t,d} \mathrm{tf}(t,d)\cdot \frac{1}

\cdot \mathrm{idf}(t) = \frac{1}

\sum_{t,d} \mathrm{tf}(t,d)\cdot \mathrm{idf}(t).



이 최종 식은 모든 가능한 용어와 문서 쌍에 대한 TF-IDF 값의 총합이, 문서와 용어 간의 상호 정보량에 비례한다는 것을 보여준다. 즉, 각 TF-IDF 값은 특정 용어와 문서 쌍이 가지는 정보량, 즉 결합 분포의 특이성을 나타내는 "정보의 비트(bit of information)"로 해석될 수 있다.[9]

6. 활용 사례

tf-idf는 단어 빈도 계산 외에도 다양한 분야에 응용될 수 있다. 1998년에는 역문서 빈도(idf)의 개념이 인용 분석에 적용되었다.[10] 연구자들은 "만약 매우 드문 인용이 두 문서에 의해 공유된다면, 그 인용된 문서는 많은 문서에 의해 인용된 문서보다 더 높은 가중치를 받아야 한다"고 주장했다. 또한, 영상 내의 객체 매칭을 수행하기 위한 "시각적 단어(visual words)"[11]나 전체 텍스트 검색에도[12] tf-idf가 응용되고 있다.

그러나 tf-idf 방식이 모든 경우에서 단순한 용어 빈도(tf)만을 사용하는 방식(idf 가중치 없음)보다 더 효과적이라는 것이 입증된 것은 아니다. 특히 tf-idf를 인용 분석에 적용했을 때, 연구자들은 idf 가중치가 없는 단순한 인용 횟수 가중치 방식과 비교하여 정확도 향상을 확인하기 어려웠다는 결과를 보고하기도 했다.[13]

7. 파생 기법

TF-IDF로부터 여러 단어 가중치 기법이 파생되었다.

그중 하나는 TF-PDF(Term Frequency * Proportional Document Frequency|단어 빈도 * 비례 문서 빈도eng)이다.[14][29] TF-PDF는 2001년 미디어에서 새로운 주제를 식별하는 맥락에서 소개되었다.[14][29] PDF(비례 문서 빈도) 요소는 단어가 서로 다른 도메인에서 얼마나 자주 나타나는지의 차이를 측정한다.[14][29]

또 다른 파생 기법은 TF-IDuF이다.[15][30] TF-IDuF에서는 IDF(역문서 빈도)를 검색 또는 추천 대상이 되는 전체 문서 모음(코퍼스)을 기반으로 계산하지 않는다.[15][30] 대신, 사용자의 개인적인 문서 모음을 기반으로 IDF를 계산한다.[15][30] 연구자들은 TF-IDuF가 TF-IDF만큼 효과적일 뿐만 아니라, 예를 들어 사용자 모델링 시스템이 외부 문서 코퍼스에 접근할 수 없는 경우와 같은 특정 상황에서도 유용하게 적용될 수 있다고 보고했다.[15][30]

8. 예시

두 개의 문서로 구성된 문서 집합(코퍼스)가 있고, 각 문서의 단어 빈도수가 아래 표와 같다고 가정한다.

문서 2
단어단어 수
this1
is1
another2
example3



문서 1
단어단어 수
this1
is1
a2
sample1



이제 단어 "this"의 tf-idf를 계산한다.

먼저, 문서 내 단어 빈도(tf)를 계산한다. 문서 길이를 고려하여 상대적인 빈도를 사용하면 다음과 같다. 문서 1은 총 5개의 단어, 문서 2는 총 7개의 단어로 이루어져 있다.

: \mathrm{tf}(\mathsf{''this''}, d_{1}) = \frac{1}{5} = 0.2

: \mathrm{tf}(\mathsf{''this''}, d_{2}) = \frac{1}{7} \approx 0.14

다음으로, 역 문서 빈도(idf)를 계산한다. idf는 전체 문서 집합에서 특정 단어가 얼마나 드물게 등장하는지를 나타낸다. 여기서는 총 2개의 문서가 있고, 두 문서 모두 "this"를 포함하고 있다.

: \mathrm{idf}(\mathsf{''this''}, D) = \log \left (\frac{2}{2} \right ) = 0

따라서 "this"의 tf-idf 값은 0이 된다. 이는 "this"가 모든 문서에 나타나기 때문에 특정 문서를 구별하는 데 유용하지 않다는 것을 의미한다.

: \mathrm{tfidf}(\mathsf{''this''}, d_{1}, D) = \mathrm{tf}(\mathsf{''this''}, d_{1}) \times \mathrm{idf}(\mathsf{''this''}, D) = 0.2 \times 0 = 0

: \mathrm{tfidf}(\mathsf{''this''}, d_{2}, D) = \mathrm{tf}(\mathsf{''this''}, d_{2}) \times \mathrm{idf}(\mathsf{''this''}, D) = 0.14 \times 0 = 0

이번에는 단어 "example"의 tf-idf를 계산한다. 이 단어는 문서 2에만 3번 나타난다.

: \mathrm{tf}(\mathsf{''example''}, d_{1}) = \frac{0}{5} = 0

: \mathrm{tf}(\mathsf{''example''}, d_{2}) = \frac{3}{7} \approx 0.429

idf를 계산하면 다음과 같다. 총 2개의 문서 중 1개의 문서만 "example"을 포함한다.

: \mathrm{idf}(\mathsf{''example''}, D) = \log \left (\frac{2}{1} \right ) \approx 0.301

최종적으로 "example"의 tf-idf 값은 다음과 같이 계산된다.

:\mathrm{tfidf}(\mathsf{''example''}, d_1, D) = \mathrm{tf}(\mathsf{''example''}, d_1) \times \mathrm{idf}(\mathsf{''example''}, D) = 0 \times 0.301 = 0

:\mathrm{tfidf}(\mathsf{''example''}, d_2, D) = \mathrm{tf}(\mathsf{''example''}, d_2) \times \mathrm{idf}(\mathsf{''example''}, D) = 0.429 \times 0.301 \approx 0.129

(참고: 위 계산에서 로그는 상용 로그(밑이 10인 로그)를 사용했다.)

참조

[1] 서적 Mining of Massive Datasets
[2] 간행물 Research-paper recommender systems: a literature survey http://nbn-resolving[...] 2015-07-26
[3] 간행물 A Statistical Interpretation of Term Specificity and Its Application in Retrieval
[4] 문서 Speech and Language Processing (3rd ed. draft), Dan Jurafsky and James H. Martin, chapter 14. https://web.stanford[...]
[5] 서적 Introduction to Information Retrieval
[6] 웹사이트 TFIDF statistics {{!}} SAX-VSM https://jmotif.githu[...]
[7] 간행물 Understanding inverse document frequency: On theoretical arguments for IDF
[8] 문서 See also [http://nlp.stanford.edu/IR-book/html/htmledition/probability-estimates-in-practice-1.html#p:justificationofidf Probability estimates in practice] in ''Introduction to Information Retrieval''.
[9] 간행물 An information-theoretic perspective of tf–idf measures
[10] 서적 Proceedings of the second international conference on Autonomous agents - AGENTS '98 1998-01-01
[11] 서적 Proceedings Ninth IEEE International Conference on Computer Vision http://dl.acm.org/ci[...] 2003-01-01
[12] 웹사이트 Sentence Extraction by tf/idf and Position Weighting from Newspaper Articles http://research.nii.[...] National Institute of Informatics
[13] 간행물 Evaluating the CC-IDF citation-weighting scheme – How effectively can 'Inverse Document Frequency' (IDF) be applied to references? http://beel.org/publ[...] 2017-01-29
[14] 서적 Emerging Topic Tracking System
[15] 간행물 TF-IDuF: A Novel Term-Weighting Scheme for User Modeling based on Users' Personal Document Collections https://www.gipp.com[...]
[16] 서적 Mining of Massive Datasets
[17] 간행물 Research-paper recommender systems: a literature survey http://nbn-resolving[...] 2015-07-26
[18] 간행물 A Statistical Approach to Mechanized Encoding and Searching of Literary Information https://web.stanford[...] 1957
[19] 간행물 A Statistical Interpretation of Term Specificity and Its Application in Retrieval
[20] 서적 Introduction to Information Retrieval
[21] 웹사이트 TFIDF statistics {{!}} SAX-VSM https://jmotif.githu[...] 2022-03-29
[22] 간행물 Understanding inverse document frequency: On theoretical arguments for IDF
[23] 문서 See also [http://nlp.stanford.edu/IR-book/html/htmledition/probability-estimates-in-practice-1.html#p:justificationofidf Probability estimates in practice] in ''Introduction to Information Retrieval''.
[24] 간행물 An information-theoretic perspective of tf–idf measures
[25] 서적 CiteSeer: An Autonomous Web Agent for Automatic Retrieval and Identification of Interesting Publications https://www.semantic[...] 1998-01-01
[26] 서적 Video Google: A Text Retrieval Approach to Object Matching in Videos http://dl.acm.org/ci[...] 2003-01-01
[27] 웹사이트 Sentence Extraction by tf/idf and Position Weighting from Newspaper Articles http://research.nii.[...] National Institute of Informatics 2022-03-29
[28] 간행물 Evaluating the CC-IDF citation-weighting scheme – How effectively can 'Inverse Document Frequency' (IDF) be applied to references? http://beel.org/publ[...]
[29] 서적 Emerging Topic Tracking System
[30] 간행물 TF-IDuF: A Novel Term-Weighting Scheme for User Modeling based on Users' Personal Document Collections https://www.gipp.com[...]
[31] 서적 https://archive.org/[...] 2013-12-11



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com