TF-IDF란 무엇인가? 단어 중요도를 계산하는 가장 기본적인 방법
부스트키워드 팀
검색 데이터로 키워드의 검색량, 트렌드, 검색 의도를 파악하고 마케팅 의사결정을 돕는 도구 부스트키워드를 만듭니다.
검색창에 "제주도 흑돼지 맛집"이라고 입력하면, 검색엔진은 이 세 단어 중 어떤 단어에 더 무게를 둬야 할지 어떻게 판단할까요? "맛집"이라는 단어는 셀 수 없이 많은 문서에 등장하지만, "흑돼지"라는 단어가 등장하는 문서는 상대적으로 적습니다. 이럴 때 어떤 단어가 그 문서를 특징짓는 더 중요한 단서인지를 수치로 계산하는 방법이 바로 TF-IDF입니다. 정보 검색과 자연어 처리 분야에서 가장 오래되었지만 지금도 널리 쓰이는 이 개념을, 예제를 통해 하나씩 풀어보겠습니다.
모든 단어가 똑같이 중요하지는 않다
"그리고", "이것", "합니다" 같은 단어의 문제
문서 안에는 내용과 상관없이 거의 모든 글에 등장하는 단어들이 있습니다. "그리고", "그러나", "이것", "합니다" 같은 조사나 접속사, 흔한 서술어가 대표적입니다. 이런 단어들은 등장 횟수만 놓고 보면 오히려 핵심 키워드보다 더 자주 나타나는 경우가 많습니다.
만약 검색엔진이나 문서 분석 시스템이 단순히 "많이 등장한 단어 = 중요한 단어"라고 판단한다면, 정작 그 문서의 주제를 알려주는 단어가 아니라 아무 의미 없는 흔한 단어가 가장 중요하다는 엉뚱한 결론에 이르게 됩니다.
단어의 '중요도'를 수치로 나타내야 하는 이유
그래서 필요한 것이 "이 단어가 이 문서에서 얼마나 특별한 의미를 갖는가"를 숫자로 표현하는 방법입니다. 이 숫자가 높을수록 검색 결과 순위를 매기거나, 문서의 핵심 키워드를 추출하거나, 비슷한 문서를 찾아낼 때 더 신뢰할 수 있는 기준이 됩니다. TF-IDF는 이 문제를 두 가지 서로 다른 관점을 결합해서 해결합니다.
TF(단어 빈도, Term Frequency)란 무엇인가
한 문서 안에서 특정 단어가 얼마나 자주 나오는가
TF는 Term Frequency의 줄임말로, 하나의 문서 안에서 특정 단어가 몇 번 등장했는지를 나타냅니다. 예를 들어 200개 단어로 이루어진 리뷰 글에 "흑돼지"라는 단어가 8번 나왔다면, 이 문서에서 "흑돼지"의 등장 빈도는 상대적으로 높다고 볼 수 있습니다. 기본적인 발상은 단순합니다. "한 문서 안에서 특정 단어가 자주 등장할수록, 그 단어는 그 문서의 내용과 관련이 깊을 가능성이 크다"는 것입니다.
TF만으로는 부족한 이유
하지만 TF 하나만으로 판단하면 문제가 생깁니다. 앞서 언급한 "그리고", "합니다" 같은 단어는 어느 문서에서든 자주 등장하기 때문에 TF 값이 항상 높게 나옵니다. 즉 TF는 "이 문서 안에서" 얼마나 자주 나오는지는 알려주지만, "다른 문서들과 비교했을 때도 특별한 단어인지"는 알려주지 못합니다. 이 빈틈을 메우기 위해 필요한 것이 바로 IDF입니다.
IDF(역문서 빈도, Inverse Document Frequency)란 무엇인가
여러 문서에 걸쳐 자주 등장하는 단어는 덜 중요하다
IDF는 Inverse Document Frequency의 줄임말로, "이 단어가 전체 문서 집합 중 몇 개의 문서에 등장하는가"를 거꾸로 뒤집어 계산한 값입니다. 만약 어떤 단어가 거의 모든 문서에 등장한다면, 그 단어는 특정 문서만의 특징이라고 보기 어렵습니다. 반대로 아주 일부 문서에만 등장하는 단어라면, 그 단어가 등장한 문서를 구별해주는 힘이 큽니다.
예를 들어 요리 블로그 게시물 1,000개 중 "맛있다"라는 단어는 900개 게시물에 등장하지만, "흑돼지"라는 단어는 50개 게시물에만 등장한다고 해봅시다. 이 경우 "흑돼지"가 등장했다는 사실이 "맛있다"가 등장했다는 사실보다 훨씬 더 그 문서의 주제를 구체적으로 알려주는 단서가 됩니다. 그래서 IDF는 흔하게 등장하는 단어일수록 낮은 값을, 드물게 등장하는 단어일수록 높은 값을 갖도록 설계되어 있습니다.
반대로 특정 문서에만 등장하는 단어는 중요한 단서가 된다
정리하면 IDF는 "얼마나 희소한 단어인가"를 나타내는 지표입니다. 여러 문서에 걸쳐 흔하게 등장하는 단어의 가치는 낮추고, 특정 주제에서만 등장하는 단어의 가치는 높여주는 역할을 합니다.
TF와 IDF를 곱하면: TF-IDF 계산해보기
간단한 예제 문서로 직접 계산하는 과정
다음과 같이 제주도 여행 블로그 게시물 4개가 있다고 가정해봅시다.
- 게시물 1: 흑돼지 맛집을 소개하는 글, "흑돼지"가 여러 번 등장
- 게시물 2: 제주 카페를 소개하는 글, "카페"가 여러 번 등장
- 게시물 3: 제주 흑돼지 맛집을 소개하는 또 다른 글, "흑돼지"가 여러 번 등장
- 게시물 4: 제주 자연경관을 소개하는 글, "흑돼지"와 "카페" 모두 등장하지 않음
"흑돼지"라는 단어를 살펴보면, 게시물 1과 게시물 3 안에서는 여러 번 등장하므로 TF 값이 높게 나옵니다. 동시에 전체 4개 게시물 중 2개에만 등장하므로, 절반이 넘는 문서에 나타나는 흔한 단어("제주")보다 IDF 값도 높게 나옵니다. TF와 IDF를 곱한 TF-IDF 값은 두 요소가 모두 높을 때 가장 커지므로, "흑돼지"는 게시물 1과 3에서 매우 높은 TF-IDF 값을 갖게 됩니다.
반면 "제주"라는 단어는 4개 게시물 모두에 등장하기 때문에 TF는 준수하더라도 IDF 값이 매우 낮아, 최종 TF-IDF 값은 낮게 계산됩니다. 이렇게 TF와 IDF를 곱하는 이유는 "이 문서 안에서 자주 등장하면서(TF), 동시에 다른 문서에서는 흔치 않은(IDF)" 단어에 가장 높은 점수를 주기 위해서입니다.
계산 결과가 의미하는 것
이 계산을 모든 단어에 대해 반복하면, 각 문서마다 "이 문서를 가장 잘 대표하는 단어가 무엇인지"를 순위로 매길 수 있습니다. 게시물 1과 3은 "흑돼지"라는 단어의 TF-IDF 값이 특히 높게 나오므로, 이 단어가 두 문서의 핵심 주제라는 것을 자연스럽게 알 수 있습니다.
TF-IDF는 실제로 어디에 쓰일까
검색 결과 순위 매기기
검색엔진은 사용자가 입력한 검색어와 각 문서 사이의 TF-IDF 값을 비교해, 검색어와 관련성이 높은 문서를 상위에 배치하는 데 활용합니다. 검색어에 포함된 단어가 어떤 문서에서 TF-IDF 값이 높게 나온다면, 그 문서는 검색 의도와 관련이 깊다고 판단할 수 있는 근거가 됩니다.
문서 요약, 키워드 추출, 추천 시스템 등 활용 사례
TF-IDF는 검색 외에도 다양하게 활용됩니다. 긴 글에서 핵심 키워드를 자동으로 뽑아내거나, 여러 뉴스 기사 중 비슷한 주제를 다루는 기사를 찾아내거나, 사용자가 읽은 글과 비슷한 글을 추천하는 시스템의 기초 원리로도 쓰입니다. 블로그나 쇼핑몰의 "관련 상품 추천", "이런 글은 어떠세요" 기능 뒤에도 이와 유사한 개념이 숨어 있는 경우가 많습니다.
TF-IDF의 한계와 이후 등장한 기법들
TF-IDF는 단어의 등장 빈도만을 근거로 계산하기 때문에, 단어의 의미나 문맥까지는 파악하지 못한다는 한계가 있습니다. 예를 들어 "흑돼지"와 "제주 돼지고기"처럼 표현은 다르지만 의미가 비슷한 단어를 서로 연결짓지는 못합니다. 이러한 한계를 보완하기 위해 이후 단어와 문서 사이의 잠재적인 의미 관계를 파악하는 기법이나, 문맥을 함께 학습하는 언어 모델 기반 기법들이 등장했습니다. 다만 TF-IDF는 계산 방식이 단순하고 빠르면서도 실용적인 성능을 보여주기 때문에, 지금도 많은 검색·추천 시스템에서 기본 지표 또는 다른 기법과 함께 사용하는 보조 지표로 널리 쓰이고 있습니다.
정리하며
TF-IDF는 "한 문서 안에서 자주 등장하면서도, 다른 문서에서는 흔치 않은 단어일수록 더 중요하다"는 직관을 수치로 표현한 방법입니다. 단어 하나하나를 사람이 판단하지 않고도, 방대한 문서 집합 속에서 어떤 단어가 각 문서를 대표하는지 자동으로 계산할 수 있게 해준다는 점에서 정보 검색과 자연어 처리 분야의 가장 기본적이면서도 강력한 도구로 평가받고 있습니다.
Q.TF-IDF 값이 높다는 것은 무엇을 의미하나요?
Q.TF-IDF와 단순 단어 빈도(TF)의 차이는 무엇인가요?
Q.TF-IDF는 지금도 실제 검색엔진에서 쓰이나요?
Written by

부스트키워드 팀
검색 데이터로 키워드의 검색량, 트렌드, 검색 의도를 파악하고 마케팅 의사결정을 돕는 도구 부스트키워드를 만듭니다.
