단어 빈도-역문서 빈도 (TF-IDF)

컴퓨터과학·AI
한 줄 정의: 한 문서에서 특정 단어가 얼마나 자주 등장하는지(단어 빈도)와, 그 단어가 전체 문서 집합에서 얼마나 희귀한지(역문서 빈도)를 곱하여, 그 문서 안에서 해당 단어가 얼마나 중요한 단어인지를 수치로 나타내는 방법입니다.

쉽게 풀면

학급 학생 30명이 각자 자기소개 글을 썼다고 해봅시다. "저는", "그리고", "좋아합니다" 같은 단어는 거의 모든 글에 나오기 때문에, 어떤 글에 자주 나온다고 해도 그 글만의 특징이라고 보기 어렵습니다. 반면 "양자역학"이라는 단어가 오직 한 학생의 글에만, 그것도 여러 번 등장한다면, 이 단어야말로 그 학생의 글을 대표하는 핵심 단어라고 할 수 있습니다. TF-IDF는 바로 이 원리를 숫자로 계산합니다. 한 문서 안에서 자주 나오면서도(단어 빈도가 높고), 전체 문서들 중에는 드물게 나오는(역문서 빈도가 높은) 단어일수록 높은 점수를 매겨 그 문서의 핵심어로 판단합니다.

왜 중요한가

TF-IDF는 계산이 단순하면서도 문서 검색, 키워드 추출, 텍스트 분류 같은 작업에서 오랫동안 견고한 기준선(baseline) 역할을 해왔습니다. 딥러닝 기반 임베딩이 널리 쓰이는 지금도 검색 엔진의 초기 후보 선별, 정보검색 성능 비교의 대조군, 해석 가능한 특징 추출이 필요한 상황에서 여전히 자주 쓰이기 때문에 자연어처리와 정보검색 논문에서 계속 언급됩니다.

논문에서는 이렇게 쓰입니다

"수집된 8,200건의 고객 리뷰를 불용어(stopword) 제거 후 TF-IDF 벡터로 변환하고, 상위 5,000개 단어를 특징으로 사용하여 코사인 유사도 기반 군집화를 수행하였다."

이 문장은 각 리뷰 문서를 단어 중요도 점수로 이루어진 벡터로 바꾼 뒤, 이를 이용해 비슷한 내용의 리뷰끼리 묶는 분석을 했다는 뜻입니다.

"정보검색 실험에서는 TF-IDF 기반 검색 결과를 베이스라인으로 삼아, 새로 제안한 신경망 기반 검색 모델의 정확도 향상 정도를 비교하였다."

정보검색 연구에서는 새로운 모델의 성능을 평가할 때 TF-IDF를 전통적 비교 기준으로 흔히 사용합니다.

"디지털 인문학 연구에서는 시대별 신문 기사에 TF-IDF를 적용하여 각 시기를 대표하는 핵심 단어를 추출하고, 이를 통해 사회적 관심사의 변화를 질적으로 해석하였다."

텍스트마이닝을 활용한 인문·사회과학 연구에서는 TF-IDF로 뽑아낸 핵심어를 시대적 담론 변화를 읽는 실마리로 활용하는 경우가 많습니다.

조금 더 깊게 보면

TF-IDF의 구체적인 계산 방식에는 여러 변형이 있는데, 단어 빈도를 그대로 쓰는지 로그를 취하는지, 역문서 빈도를 어떤 로그 스케일로 정규화하는지에 따라 세부 공식이 달라집니다. 또한 각 문서를 이런 단어별 가중치로 이루어진 벡터로 표현한 뒤 문서 간 유사도를 코사인 유사도로 계산하는 방식이 검색과 군집화에서 널리 쓰이며, 이런 벡터 표현 방식은 이후 등장한 단어 임베딩이나 문맥 기반 임베딩의 개념적 출발점으로도 이해할 수 있습니다.

주의할 점

TF-IDF는 단어가 문서에 등장하는 빈도와 희귀성만을 계산할 뿐, 단어의 순서나 문맥적 의미는 전혀 반영하지 못한다. 예컨대 "은행에 돈을 맡기다"와 "강 은행(둔치)을 걷다"에 쓰인 "은행"을 구분하지 못한다. 문맥을 반영한 분석이 필요하다면 임베딩이나 트랜스포머 기반 방법을 함께 사용해야 한다.

관련 용어