reniew's blog
cs and deep learning

TF-IDF : Term Frequency-Inverse Document Frequency

|

정보 검색분야에서 자주 사용되는 TF-IDF에 대해서 소개하려 한다. 뉴스 기사에서 키워드 추천을 위한 수치로도 많이 사용되는 이 값은 NLP분야에서도 다른 기법과 함께 사용되며 score를 올려주는 부가적인 기법으로 자주 사용된다.

TF-IDF는 Term frequency - Inverse document frequency의 약자로 특정 단어에 대해서 단어가 얼마나 자주 등장하는지, 그리고 다른 문서에 대비해서 이 문서에 많이 등장하는 단어인지를 측정하는 수치로 이해할 수 있다.

용어를 보면 알 수 있듯이 TF-IDF는 TF라는 수치와 IDF라는 수치 두가지를 사용했다. 우선 TF, Term Frequency에 대해서 알아본다.

Term Frequency

Term Frequency는 문장 docunment($d$)안에서 특정 term($t$)이 몇 번 등장했는지를 나타낸다. 예를 들어 뉴스 기사에서 ‘인공지능’이라는 단어가 총 4번 등장 했다면 이 documnet의 TF값은 4가 되는 것이다. 위 수치는 다음과 같이 표기된다.

여기서 $f_{f,d}$값은 위에서 말한 문서안에서 term이 나온 횟수자체이다. 하지만 경우에 따라서 tf값을 나온 수치 그대로 사용하는 것이 아니라 변형해서 사용하기도 한다. tf 값을 정의하는 여러 방법들은 아래와 같다.

  • binary 값(Boolean), 문서 안에 나왔다면 1, 아니면 0
  • 나온 횟수
  • 문서안의 전체 term들의 $f$ 값들의 합으로 나눈 값, 전체 문장 길이를 반영한다. 단순히 나온 횟수만 보게 된다면 매우 긴 문장에서 4번 나온 수치와 짧은 문장에서 4번 나온 수치를 같은 값으로 보게 된다.
  • 나온 횟수를 log scale로 바꾼 값, 많이 등장한 것에 대해서 가중치를 줄이는 방법.
  • 증가된 수치, 긴 문서에서 편향되는 것을 막는 방법

TF에 대해서 알아보았다. 이제는 IDF를 소개한다. IDF는 Inverse Document Frequency의 약자로 Document Frequency값을 역수로 만든 값을 의미한다. 그렇다면 DF에 대해서 먼저 알아보도록하자.

Document Frequency

DF는 한 문서만 고려하는 값이 아니다. 여러개의 문서가 있을 때 어떤 특정한 단어(term)이 얼마나 많은 문서에 등장하는지 확인 할 수 있는 값이 된다. 계산은 다음과 같이 한다.

수식에 대해 설명하면, 우선 $D$와 $d$의 차이는 $d$는 개별 문서를 뜻하며 $D$는 전체 문서 집합을 의미한다. 따라서 $df$값은 특정 단어 $t$가 들어가 있는 문서 수를 전체 문서 수로 나눠준 값을 의미한다. $idf(t,D)$ 값은 단순히 이 값을 역수로 만든 값이다. 대체 왜 역수를 취한 값을 사용하는 것일까? 이 $idf$값의 의미는 어떤 문서에 등장한 특정 단어가 다른 문서들에서는 잘 나오지 않은 단어인지 측정하는 척도이다.

만약 어떤 단어가 다른 문서에는 많이 들어가 있지 않는데 현재 문서에 들어가 있다면 $idf$값은 높게 나올 것이다.

TF-IDF

그렇다면 tf-idf의 의미는 다음과 같을 것이다. 현재 해당 문서에서 특정 단어가 나온 횟수값과 그리고 이 단어가 다른 문서에는 잘 나오지 않는 그런 단어인지를 같이 고려하는 것이다. 이 값의 계산은 다음과 같이 두 값을 곱해주기만 하면 된다.

마지막으로 이 값을 보는 이유에 대해서 설명을 하자면 각 단어에 대해 중요도를 보는 것이다. 얼마나 자주 등장한 단어인지, 그리고 그 단어가 다른 문서들에는 자주 나오지 않고 해당 문서에서 중요도가 높은 단어인지를 알 수 있다.

Comments