TF-IDF에 관하여.

Hyun Jin Kim
5 min readJan 21, 2021

--

오늘은 Text Mining과 Information Retrieval 분야에서 많이 쓰이고, 쉬운(?) 접근성을 보이며, 문서 데이터에서 단어에 가중치를 적용하여 등장하는 단어의 중요도를 알 수 있는 TF-IDF(Term Frequency-Inverse Document Frequency)에 대한 설명을 해 보고자 한다.

먼저 아래의 식을 보도록 하자.

TF-IDF formula.

먼저 Term Frequency(TF)는 한 단어(t) 한 문서(d)에서 얼마나 많이 등장했는가, 즉 단어의 빈도 수를 나타낸다.

Term Frequency의 속내는 …

하나의 문서에서 해당하는 단어가 아주 많이 등장한다면 정말 중요한 단어라는 뜻이겠지?

라는 생각인 것이다. 어떻게 생각해보면 당연하게 받아들여진다.

Term Frequency의 특성으로는 한 단어(t)의 등장 횟수가 많아질 수록 무한하게 발산한다는 특징을 가진다.

어..어디까지 가려고…?

그럼 이러한 Term Frequency의 문제점은 무엇일까?

바로 중요도가 떨어지는 단어 임에도 해당 문서에서 단어의 개수가 많기 때문에 중요한 단어로 분류가 된다는 문제가 존재한다.

그런게 있어?

근데 그거 몇 개는 중요한 단어로 분류되어도 상관 없지 않아?

너도 그게 중요한지 아닌지는 모르잖아?

있다. 그리고 상관있다. 어떠한 예시가 있을까..?

a, an, the, for, with…

이러한 단어는 텍스트에서 중요한 단어를 뽑을 때, 정말이지 쓸모가 없다.

상상해봐라 열심히 코드를 짜고, 돌려서 나온 중요도 TOP 10 단어가 전부 저런 단어라고… ㅋㅋㅋ..

이러한 TF의 단점을 보완하기 위해 다량의 문서 데이터(D)를 기반으로 Inverse Document Frequency(IDF)를 사용한다.

여기에서 TF와 다른 점 중 하나는 TF는 하나의 문서안에서 단어의 중요도를 계산할 수 있지만(그저 개수세기 이지만..), TF-IDF는 다량의 문서 데이터를 기반으로 하기 때문에 가중치 계산을 위해 다량의 문서가 필수적이다.

IDF를 살펴보기 이전에 Document Frequency(DF)에 대한 식을 살펴보도록 하자.

Document Frequency Formula

위의 식에서 t(n)은 단어 t가 포함된 문서의 개수를 뜻하며, D(n)은 전체 문서의 개수를 뜻한다.

DF값을 계산하는 이유는 무엇일까?

바로 전체 문서(D)에서 특정 단어(t)가 등장한 문서가 많을 수록 해당 단어 자체가 변별성이 부족하다고 판단되기 때문이다.

예를 들어 a, an, the와 같은 단어들은 모든 문서에서 쉽게 등장하기 때문에 변별성이 부족하다고 판단된다.

TF를 계산한 후, 이러한 단어들에 대한 가중치를 낮춰주기 위해 DF를 계산한다. 하지만 DF의 경우 a, an, the에 해당하는 t의 개수가 많을 수록 더 높은 가중치값을 가지게 된다.

이는 가중치를 낮춰야하는 기존 DF의 취지와 맞지 않다는 것을 알 수 있다. 때문에 우리는 DF에 Inverse(역)를 취하여 궁극적으로 IDF(Inverse Document Frequency)를 생성한다.

Inverse Document Frequency Formula(ALMOST…)

자, 이제 TF에서 위의 식을 곱하면 모든 것이 끝난다!!!

뻥이다.

아니 하란거 다 했는데..! 이게 왜 문제가 되는가..!!

두 가지의 오점이 있는데,

첫째로, D(n)/t(n)으로 Inverse를 시켰기 때문에 전체 문서에서 해당 단어가 k번 등장했지만(D(n) = k), 특정 문서에서 해당 단어가 등장하지 않았다면..? (t(n) = 0)

극단적인 예시이지만, k/0으로 무한한 값을 보이게 되는 오점이 존재한다.

이를 해결하기 위해 IDF에서 분모에 t(n) + 1을 취한다.

두 번째로 D(n)의 증가와 낮은 t(n)값을 가지게 된다면, 급격하게 IDF의 값이 상승하게 된다. 따라서 log를 취하여 이를 완화시킨다.

로그 그래프를 보면 아시다시피.. 완곡하쥬?

이를 통해 최종적으로 아래와 같은 IDF의 식을 생성할 수 있다.

Finalized Inverse Document Formula(Feat. 짜잔!)

이를 통해 특정 문서에서 단어 t의 빈도수를 나타내는 TF와 전체 문서에서 단어 t가 나타나는 빈도 수를 Inverse 취한 값인 IDF를 곱하여 TF-IDF 가중치 값을 도출하게 된다.

결론적으로 특정 문서에서 특정 단어의 빈도 수가 높으며, 전체 문서에서는 해당 단어를 포함하고 있는 문서가 적으면 TF-IDF값이 높아진다.

이를 통해서 모든 문서에서 등장하는 단어(a, an, the)에 대한 가중치를 낮춰주어, 특정 문서에만 등장하는 중요도가 높은 단어에 가중치를 높게 한다.

결과적으로 중요한 단어를 선별할 수 있게 된다.

다음에 시간에는…(논문 작업이 원활히 이루어진다면…ㅠㅠ)

간단한 문서 코퍼스 데이터를 이용하여 TF-IDF 가중치를 계산한 후, 중요한 단어의 순위를 추출하는 실습을 R언어를 통해 실습하는 과정을 거치도록 하겠다.

--

--

Hyun Jin Kim
0 Followers

Phd student in SKKU University, Korea. Research interests are NLP, Machine Learning, Data Mining.