← 목록으로
AI·데이터
#TFIDF#텍스트마이닝#정보검색#가중치#임베딩#132회
최종 업데이트 · 2026-09-30

TF-IDF (Term Frequency – Inverse Document Frequency)

1. 개요

가. 정의

문서 집합(코퍼스) 안에서 한 단어가 특정 문서를 얼마나 잘 대표하는지를 수치화하는 가중치 기법. 한 문서에서 자주 등장하고(TF), 전체 문서 전반에서는 드물게 등장하는(IDF) 단어일수록 높은 가중치를 부여한다.

TF-IDF는 정보검색(IR)과 텍스트마이닝에서 문서를 수치 벡터로 변환하기 위해 고안된 고전적이면서도 여전히 강력한 가중치 산정 방식이다. 컴퓨터는 자연어 문장을 그대로 다룰 수 없으므로, 각 단어에 "이 단어가 이 문서에서 얼마나 중요한가"를 나타내는 실수 값을 부여해 문서를 벡터 공간의 한 점으로 표현해야 한다. TF-IDF는 이 값을 문서 내부의 빈도(국소 정보) 와 코퍼스 전체에서의 희귀성(전역 정보) 이라는 서로 다른 두 축을 곱해 결정한다는 점에서 단순 빈도 계산과 결정적으로 구별된다.

나. 등장 배경 및 필요성

문서를 벡터로 표현하는 가장 단순한 방법은 단어 출현 빈도를 그대로 세는 BoW(Bag-of-Words) 모델이다. 그러나 이 방식은 치명적 왜곡을 낳는다. 한국어의 "은/는/이/가", 영어의 "the/of/and" 같은 불용어(stopword)는 거의 모든 문서에 대량으로 등장하기 때문에, 빈도만으로 보면 이런 흔한 단어가 마치 문서를 대표하는 핵심어처럼 보이게 된다. 실제로는 이런 단어야말로 문서를 구별하는 데 아무런 정보가 없는데도 말이다.

TF-IDF는 이 문제를 "여러 문서에 두루 나오는 흔한 단어는 변별력이 없다"는 명쾌한 직관으로 해결한다. 모든 문서에 고르게 나오는 단어는 특정 문서를 다른 문서와 구별하는 데 쓸모가 없으므로 IDF로 가중치를 깎아 내리고, 반대로 특정 문서에만 집중적으로 몰려 나오는 단어에는 큰 가중치를 실어 준다. 그 결과 각 문서를 특징짓는 특징어(keyword) 가 자연스럽게 부각된다. 계산이 단순하고 빠르며 결과를 사람이 직관적으로 해석할 수 있다는 장점 덕분에, TF-IDF는 검색엔진 랭킹, 문서 분류, 키워드 추출, 추천의 오랜 표준 기법으로 자리 잡았다.

다. 주요 활용 분야

TF-IDF는 문서를 특징어 벡터로 바꾸는 범용 전처리이므로 활용 범위가 넓다. 검색엔진은 질의어의 TF-IDF 점수 합으로 문서 순위를 매기고, 문서 분류·스팸 필터는 이 벡터를 나이브 베이즈·SVM 같은 분류기의 입력 특성으로 쓴다. 키워드·태그 자동 추출은 문서에서 TF-IDF 상위 단어를 뽑아 요약 태그로 제시하며, 콘텐츠 기반 추천은 문서 간 코사인 유사도로 "비슷한 글"을 찾는다. 이처럼 하나의 가중치 산식이 검색·분류·추출·추천을 관통하는 공통 기반이 된다는 점이 TF-IDF의 지속적 생명력을 설명한다.

이 기법이 1970년대 이후 정보검색의 사실상 표준이 된 배경에는 "중요도를 학습 없이 통계만으로 근사할 수 있다"는 실용성이 있다. 딥러닝 이전 시대에는 대규모 학습 데이터도, 연산 자원도 부족했기 때문에, 단어의 중요도를 별도 모델 학습 없이 빈도 집계만으로 산출하는 TF-IDF는 매우 매력적인 선택지였다. 또한 결과가 "이 문서에서 이 단어가 왜 중요한지"를 빈도와 희귀성이라는 두 숫자로 설명할 수 있어, 검색 결과의 근거를 요구하는 실무 환경에 잘 맞았다. 이러한 투명성과 경량성은 오늘날에도 TF-IDF를 폐기하지 못하게 만드는 핵심 이유다.

2. 구성 요소와 계산식

TF-IDF는 두 요소의 곱으로 정의되며, 각 항이 서로 다른 방향에서 단어의 중요도를 조정한다. 아래 개념도는 두 축이 어떻게 결합해 최종 가중치와 문서 벡터를 만드는지 전체 구조를 보여준다.

flowchart LR
  subgraph local["국소 정보"]
    T1["문서 d 내 단어 t 빈도"] --> T2["TF 정규화·로그 스케일"]
  end
  subgraph global["전역 정보"]
    D1["단어 t가 나온 문서 수 df"] --> D2["IDF = log(N/df)"]
  end
  T2 --> W["TF-IDF = TF × IDF"]
  D2 --> W
  W --> VEC["문서별 단어 가중치 벡터"]
  VEC --> USE["유사도·랭킹·분류"]

각 항의 정의와 직관적 의미는 다음과 같다. TF(Term Frequency) 는 한 문서 안에서 단어가 얼마나 자주 쓰였는지를 재는 국소 중요도다. IDF(Inverse Document Frequency) 는 그 단어가 코퍼스 전체에서 얼마나 희귀한지를 재는 전역 변별력으로, N을 전체 문서 수, df(t)를 단어 t가 등장한 문서 수라 하면 IDF(t) = log(N / df(t))로 정의된다. 최종 가중치는 이 둘의 곱이다.

항목 정의 직관적 의미
TF(t,d) 문서 d에서 단어 t의 출현 빈도(또는 정규화 빈도) 이 문서에서 얼마나 자주 쓰였나 → 국소 중요도
IDF(t) log( N / df(t) ), N=전체 문서 수, df=t가 등장한 문서 수 코퍼스 전체에서 얼마나 희귀한가 → 변별력
TF-IDF TF(t,d) × IDF(t) 국소 빈도 × 전역 희귀도

IDF에 로그를 씌우는 이유는 두 가지다. 첫째, N/df는 문서 수가 많을 때 지나치게 커지므로, 로그로 그 증가를 완만하게 눌러 TF와 스케일 균형을 맞춘다. 둘째, 단어가 흔해질수록(df↑) 값이 부드럽게 작아지고, 모든 문서에 나오면(df=N) log 1 = 0이 되어 변별력 없는 단어의 가중치가 자연스럽게 0으로 소거된다.

두 항을 더하지 않고 곱하는 이유도 원리에서 나온다. 특징어가 되려면 "이 문서에서 자주 나오면서(TF 높음) 동시에 다른 문서에서는 드물어야(IDF 높음)" 한다. 둘 중 하나라도 0에 가까우면 특징어로서 가치가 없으므로, 두 조건을 동시에 만족할 때만 큰 값이 나오는 곱셈이 논리적으로 맞다. 덧셈이라면 한쪽이 0이어도 다른 쪽 값이 그대로 살아남아 "흔하지만 이 문서에 많이 나온 단어"가 과대평가되는 문제가 생긴다.

실무에서는 여러 변형이 쓰인다. TF에는 빈도를 그대로 쓰지 않고 로그 스케일링(1 + log TF) 이나 최대빈도 대비 정규화를 적용하는 경우가 많다. 같은 단어가 3번 나왔다고 해서 1번 나온 문서보다 정확히 3배 중요하다고 보기는 어렵기 때문에, 빈도의 한계효용 체감(포화) 을 반영하려는 것이다. IDF에도 df가 0일 때의 분모 폭발을 막기 위해 분모에 1을 더하는 평활화(smoothing), 즉 log(N / (1 + df)) + 1 형태의 변형이 널리 쓰인다. scikit-learn의 TfidfVectorizer가 기본으로 채택한 것도 바로 이 평활화·정규화 변형이며, 구현체마다 세부 공식이 조금씩 달라 값의 절대 크기보다 상대적 순위에 의미를 두는 것이 안전하다.

3. 계산 과정(예시)

계산은 TF와 IDF를 각각 구한 뒤 곱하는 단순한 흐름이다. 아래 프로세스 다이어그램은 원시 코퍼스에서 최종 가중치 벡터까지의 단계를 세부적으로 보여준다.

flowchart TD
  P0["원시 코퍼스"] --> P1["전처리: 토큰화·불용어제거·어간추출"]
  P1 --> P2["문서별 TF 계산"]
  P1 --> P3["단어별 df 집계 → IDF = log(N/df)"]
  P2 --> P4["TF-IDF = TF × IDF"]
  P3 --> P4
  P4 --> P5["문서 = 단어 가중치 벡터"]
  P5 --> P6["코사인 유사도·질의 매칭"]

전처리 단계가 결과 품질을 좌우한다는 점을 먼저 강조해 둔다. 토큰화로 문장을 단어 단위로 자르고, 불용어를 제거하며, 어간·표제어 추출로 활용형을 하나로 통일한 뒤에야 TF·df 집계가 의미를 갖는다. 이 단계가 부실하면 "간다/갔다/갈"이 서로 다른 단어로 세어져 같은 의미의 빈도가 흩어지고, 그만큼 특징어의 가중치가 낮게 평가된다.

구체적인 수치로 원리를 확인해 보자. 전체 문서가 N=3개이고, 단어 "AI"가 이 중 2개 문서에 등장(df=2)하는 상황을 가정한다.

  • IDF(AI) = log(3/2) = log(1.5) ≈ 0.176 (밑을 10으로 둔 상용로그 기준. 문제에서 log 값이 주어지면 그대로 사용한다.)
  • 문서1에서 "AI"가 3번 등장(TF=3)했다면 → TF-IDF = 3 × 0.176 ≈ 0.528
  • 같은 문서1에서 "그리고" 같은 불용어가 5번 나왔지만 세 문서 모두에 등장(df=3)한다면 → IDF = log(3/3) = log 1 = 0, 따라서 TF-IDF = 5 × 0 = 0

이 대비가 TF-IDF의 핵심을 드러낸다. 빈도가 더 높은 불용어("그리고", TF=5)의 가중치가 0이 되고, 빈도가 낮은 특징어("AI", TF=3)의 가중치가 0.528로 살아남는다. 바로 "흔한 단어는 특징어가 아니다"라는 원리가 수식으로 구현되는 지점이다. 만약 어떤 단어가 세 문서 중 한 문서에만 나온다면(df=1) IDF = log(3/1) = log 3 ≈ 0.477로 가장 큰 변별력을 얻는다. 이렇게 df가 작을수록(희귀할수록) IDF가 커지고, df가 N에 가까울수록(흔할수록) IDF가 0에 수렴하는 단조 감소 관계가 성립한다.

이렇게 각 문서를 단어별 TF-IDF 값의 벡터로 표현하면, 두 문서 벡터가 이루는 각도로 유사도를 재는 코사인 유사도나, 질의어 벡터와 문서 벡터의 내적으로 계산하는 질의-문서 매칭 점수를 산출할 수 있다. 코사인 유사도를 쓰는 이유는 문서 길이의 영향을 제거하기 위해서다. 단순 내적은 긴 문서일수록 값이 커지지만, 벡터를 정규화한 뒤 각도만 보면 "얼마나 같은 방향을 가리키는가", 즉 단어 구성의 유사성만 순수하게 비교할 수 있다. 검색엔진이 질의에 대해 문서를 순위화하고, 뉴스 클러스터링이 비슷한 기사를 묶으며, 추천 시스템이 유사 문서를 찾는 기본 원리가 모두 이 벡터-유사도 계산에 뿌리를 둔다.

4. 특징과 한계, 대안

TF-IDF의 강점은 학습이 필요 없는 통계적 방식이라 계산이 가볍고 빠르며, 각 단어의 가중치가 왜 그렇게 나왔는지를 사람이 해석할 수 있다는 데 있다. 그러나 근본적인 한계는 단어를 서로 독립된 원자적 기호로만 다루기 때문에 의미(semantics)를 전혀 이해하지 못한다는 점이다.

구분 내용 이유
장점 단순·고속, 해석 용이, 특징어 추출 효과 통계적 빈도 기반이라 학습 불필요
한계 의미·문맥·어순 미반영 단어를 원자적 토큰으로만 취급
한계 동의어·다의어 처리 불가 "차"와 "자동차"를 다른 단어로 봄
한계 고차원 희소(sparse) 벡터 어휘 수만큼 차원, 대부분 0
대안 Word2Vec·BERT 등 임베딩 문맥·의미를 밀집 벡터로 학습

예를 들어 "은행 예금"의 "은행"과 "강 은행(둑)"의 "은행"은 전혀 다른 뜻이지만, TF-IDF는 철자가 같다는 이유로 완전히 같은 단어로 처리해 문맥을 구분하지 못한다(다의어 문제). 반대로 "자동차"와 "차량"은 사실상 같은 의미인데도 다른 단어로 취급해 유사도를 제대로 잡지 못한다(동의어 문제). 또한 "고양이가 쥐를 쫓았다"와 "쥐가 고양이를 쫓았다"는 단어 구성이 같아 TF-IDF 벡터가 동일하지만 의미는 정반대다. 이는 TF-IDF가 어순(word order)과 문장 구조를 완전히 무시한다는 근본 한계를 드러낸다.

또한 어휘 사전의 크기만큼 벡터 차원이 커지는데 한 문서에는 그중 극히 일부 단어만 나타나므로, 대부분의 원소가 0인 고차원 희소 벡터(sparse vector) 가 만들어져 메모리·계산 효율이 떨어진다. 수만~수십만 차원의 벡터에서 실제 값이 있는 원소는 수백 개에 불과한 경우가 흔하다. 이러한 의미·문맥·차원 문제를 극복하기 위해, 단어를 수백 차원의 저차원 밀집 벡터(dense vector) 로 학습해 의미가 가까운 단어끼리 벡터 공간에서 가깝게 배치하는 임베딩(Word2Vec, GloVe) 과, 문맥에 따라 같은 단어도 다른 벡터로 표현하는 문맥 임베딩(BERT, 트랜스포머) 이 등장했다.

5. 심화: BM25와 RAG 하이브리드 검색

TF-IDF는 낡은 기법처럼 보이지만, 그 직계 후손과 파생 기법은 지금도 최전선에서 쓰인다. 가장 대표적인 것이 BM25(Okapi BM25) 다. BM25는 TF의 무한 증가를 막는 빈도 포화(term frequency saturation) 항과, 긴 문서가 단지 길다는 이유로 유리해지지 않도록 하는 문서 길이 정규화 를 도입해 TF-IDF의 약점을 정교하게 보완했다. 이 덕분에 BM25는 Elasticsearch·OpenSearch·Lucene 같은 주류 검색엔진의 기본 랭킹 함수로 채택되어 있으며, 여러 정보검색 벤치마크에서 순수 빈도 기반 방법의 강력한 기준선(baseline) 역할을 한다.

BM25에는 두 개의 조정 파라미터가 있다. 빈도 포화 정도를 정하는 k₁(통상 1.2~2.0)과 문서 길이 정규화 강도를 정하는 b(통상 0.75)다. k₁이 클수록 단어가 여러 번 나올 때의 추가 가중이 오래 유지되고, b가 1에 가까울수록 문서 길이에 대한 벌점이 강해진다. 이처럼 TF-IDF가 고정된 곱셈식이었던 것과 달리 BM25는 코퍼스 특성에 맞춰 랭킹 거동을 조율할 수 있다는 점이 실무 채택의 큰 이유다.

최근 생성형 AI의 RAG(Retrieval-Augmented Generation) 파이프라인에서 TF-IDF/BM25 계열이 다시 주목받고 있다. 의미 기반 벡터(임베딩) 검색은 동의어·문맥을 잘 잡지만 고유명사·제품코드·숫자 같은 정확한 키워드 매칭에는 약하고, 반대로 BM25는 키워드 매칭에 강하지만 의미를 모른다. 예컨대 사용자가 "에러 코드 ORA-00942"를 질의하면 임베딩 검색은 "데이터베이스 오류" 같은 유사 의미 문서로 표류할 수 있지만, BM25는 정확히 그 코드가 든 문서를 집어낸다. 그래서 두 방식을 함께 돌리고 점수를 RRF(Reciprocal Rank Fusion) 같은 기법으로 융합하는 하이브리드 검색(hybrid search) 이 사실상 표준이 되었다. 각자의 약점을 상호 보완해 검색 정확도를 끌어올리는 전략으로, LLM이 근거 문서를 정확히 찾아오게 하는 실무 핵심 기술이다.

실제 산업 적용을 보면, 대규모 전자상거래·기술문서 검색 시스템은 상품명·모델번호·법조문 번호처럼 정확 일치가 결정적인 필드에 BM25를, 자연어 질의의 의도 파악에 임베딩을 배치한 뒤 두 결과를 융합한다. 사내 지식베이스 챗봇 역시 사규·매뉴얼의 고유 용어를 놓치지 않기 위해 키워드 검색을 결합하는 것이 일반적이다. 이처럼 TF-IDF의 후예는 단독 기법으로서는 물러났지만, 하이브리드 구성의 한 축으로서 여전히 필수 구성요소로 남아 있다.

6. 고려사항 및 시사점

  • 전처리가 품질을 좌우한다: 토큰화·불용어 제거·어간추출(stemming)·표제어 추출(lemmatization)·정규화의 품질이 TF-IDF 결과를 결정한다. 특히 한국어는 교착어 특성상 조사·어미가 붙으므로 형태소 분석이 반드시 선행되어야 하며, 이를 소홀히 하면 같은 단어가 여러 형태로 흩어져 가중치가 왜곡된다.
  • 여전히 유효한 기반 기술: 의미 임베딩이 발전했어도 TF-IDF/BM25는 학습 데이터·GPU가 필요 없고 해석 가능하며 신뢰할 수 있는 기준선이다. 콜드스타트 상황이나 소규모 코퍼스, 설명가능성이 중요한 도메인에서는 오히려 임베딩보다 실용적일 수 있다.
  • 하이브리드가 대세: 키워드 검색(BM25)과 의미 검색(임베딩)은 대체재가 아니라 보완재다. RAG·엔터프라이즈 검색에서는 둘을 결합한 하이브리드 구조가 정확도·비용 모두에서 유리하므로, 기술사 관점에서는 "무엇으로 대체할지"가 아니라 "어떻게 조합할지"를 설계하는 것이 옳다.
  • 비용·확장성 트레이드오프: TF-IDF는 인덱싱·질의 비용이 낮고 증분 갱신이 쉬운 반면, 임베딩은 모델 추론·벡터DB 운영 비용이 크다. 코퍼스 규모, 질의량, 지연시간(latency) 요구, 설명가능성 요구를 종합해 기법을 선택해야 한다.
  • 도메인 특화 여지: 불용어 사전·가중치 변형·필드별 가중(제목 vs 본문)을 도메인에 맞게 조정하면 TF-IDF/BM25의 성능을 크게 끌어올릴 수 있어, 튜닝 가능한 투명한 알고리즘이라는 점 자체가 실무적 강점이 된다.
  • 평가·검증의 중요성: 어떤 가중치 변형과 전처리 조합이 최선인지는 도메인마다 다르므로, 정밀도(Precision)·재현율(Recall)·NDCG 같은 검색 품질 지표로 반드시 정량 검증해야 한다. "이론상 좋아 보이는" 튜닝이 실제 질의 로그에서는 성능을 떨어뜨리는 경우가 흔하므로, A/B 테스트와 오프라인 평가를 병행하는 것이 기술사 관점의 실무 원칙이다.

참고자료


한 줄 요약: TF-IDF는 TF(문서 내 빈도) × IDF(log N/df) 로 단어 중요도를 계산해 특정 문서에 자주·전체에는 드물게 나오는 특징어에 높은 가중치를 주는 기법으로, 흔한 단어를 자동으로 0으로 소거하는 장점이 있으나 의미·문맥을 반영하지 못해 임베딩·BM25로 발전했으며, 오늘날 RAG 하이브리드 검색에서 의미 검색과 병용되는 핵심 기준선 기술이다.