think deeply

TF-IDF(Term Frequency-Inverse Document Frequency) 본문

rainbow/추천시스템

TF-IDF(Term Frequency-Inverse Document Frequency)

윌_ 2023. 8. 10. 22:20

1. TF-IDF의 개념

대부분의 문서에 공통적으로 많이 등장하는 단어만으로 새로운 인사이트를 내기는 어렵다. 일반적으로 문서에 자주 등장하는 단어보다, 우리가 궁금한 것은 특정 내용을 다루는 문서에서 자주 등장하는 단어다. 예를 들어, 자동차 관련 문서에서 자주 쓰이는 단어가 있기 마련이고, 자전거 관련 문서에서 자주 쓰이는 단어가 있기 마련이다. 특정 문서 내 단어 빈도가 문서 전체에서의 단어 빈도보다 더 높은 단어를 강조해 표시하기 위한 방법이 TF-IDF다.

 

즉, 단어의 빈도와 역 문서 빈도(문서의 빈도에 특정 식을 취함)를 사용하여 DTM(Document term matrix) 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법이다.

2. TF-IDF의 활용

그럼 TF-IDF는 어디서 주로 활용될 수 있을까요? 문서의 유사도를 구하는 작업, 검색 시스템에서 검색 결과의 중요도를 정하는 작업, 문서 내에서 특정 단어의 중요도를 구하는 작업 등에 쓰일 수 있습니다. 이후 토픽 모델링이라는 개념을 배우게 되신다면, 이 개념을 이해하는데에도 크게 도움이 될 것입니다.

3. TF-IDF 계산식

TF-ID는 TF와 IDF의 곱한 값을 의미합니다. 먼저 문서를 d, 단어를 t, 문서의 총 개수를 n이라고 가정하고 아래 식을 설명드리겠습니다.

 

(1) tf(d, t) : 특정 문서 d에서의 특정 단어 t의 등장 횟수

이는 DTM 내용에서 다룬 적 있을 것입니다. 각 문서 내에서 각 단어의 등장 빈도를 나타내는 것입니다.

 

(2)df(t): 특정 단어 t가 등장한 문서의 수

예를 들어, ‘자동차’라는 단어가 등장하는 문서가 100개라면 자동차의 df는 100이 되겠죠?

 

(3)idf(d,t): df(t)에 반비례하는 수

IDF는 DF의 역수입니다. 단순히 DF의 역수를 취해주면 총 문서의 수가 커질 수록 IDF는 기하급수적으로 커질 수 있기에 log를 취해준 것입니다. 수학적 예시를 차치하고 직관적 설명을 드리자면, 불용어와 같이 자주 쓰이는 단어들은 자주 쓰이지 않는 단어들보다 최소 수십배 자주 등장합니다. 그런데 여기서 희귀단어들은 더더욱 적게 등장하겠죠? 그렇다면 DF를 단순 역수 취한다면 희귀 단어들에 너무나도 큰 IDF 값이 부여되게 되는 것입니다. 따라서 이런 격차를 줄이기 위해 log를 씌우주는 것입니다. 또한 log식 안에 분모에 1을 더해주는 이유는 특정 단어가 전체 문서에서 등장하지 않을 경우엔 분모가 0이 되는 상황을 방지하기 위함입니다.

 

TF-IDF는 선택된 문서에서는 자주 등장하지만 말뭉치의 다른 문서에서는 드물게 등장한 용어에 높은 값을 산출합니다.

즉, 모든 문서에서 자주 등장하는 단어는 중요도가 낮고, 특정 문서에서만 자주 등장하는 단어의 중요도를 높게 산출해주는 것입니다.

참고

[책] 파이썬 라이브러리를 활용한 텍스트 분석

[책] 딥러닝을 이용한 자연어 처리 입문

Comments