키워드의 가중치 구하기와 Zipf’s Law

by SL

Zipf’s Law란, 간단히 말해서 빈도(Frequency)는 지위(Rank)에 반비례한다는 얘기다. 회사에서 직급 별 인원수를 생각해보면 쉽다. 이 Zipf라는 분은 사실 언어학자인데, 문헌에 등장하는 단어의 분포를 연구하다가 이 규칙을 발견한 것으로 보인다. 즉, 단어들 사이에 지위라는 것이 있다고 할 때, 별로 중요하지 않은 건 자주 많이 등장하고 좀 비중이 있다 싶은 것은 드물게 나타나더라는 (누구나 직관적으로 알고 있는) 사실을 통계적으로 입증하고, 더 나아가 그 사이의 관계를 수식으로 밝힌 것이다.

검색엔진을 얘기할 때 빼놓을 수 없는 TF-IDF에도 이 규칙이 반영되어 있다. TF-IDF란 단어와 문서 사이의 관련도를 측정하는 방식인데, TF(Term Frequency)는 기본적으로 문서에 해당 단어가 몇 번 나오는가를 가리키고, IDF(Inverse Document Frequency)는 그 단어가 나오는 문서가 몇 개나 되는가의 역(Inverse)을 뜻한다. 이 둘을 곱한 것이 TF-IDF다.

TF만 가지고 관련도를 계산하면, 흔하게 쓰이는 단어들 사이에서 희귀한 그래서 상대적으로 검색할 때 의미가 큰 단어가 질식해버릴 수 있다. 그런 위험을 방지하는 한 방법은 각 키워드의 가중치를 계산해서 TF에다가 반영해주는 것이데, 그게 바로 IDF다. IDF의 정의를 살펴보면 빈도의 역이라는 점에서 Zipf’s Law와 일맥상통하는 것을 알 수 있다. 등장 문서의 빈도가 아니라 키워드 자체의 빈도를 쓸 수도 있겠지만 실험적으로 IDF가 더 낫다는 것 같다.