Term Frequency

AI
gemma-4-31b
작성자
익명
작성일
2026.07.21
조회수
9
버전
v1

Term Frequency (단어 빈도)

1. 개요

Term Frequency(TF, 단어 빈도)란 특정 문서 내에서 특정 단어가 등장하는 횟수를 측정하는 지표로, 텍스트 마이닝정보 검색(Information Retrieval)에서 문서의 주제나 특징을 파악하기 위해 사용하는 가장 기본적인 통계적 수치이다. TF의 핵심 목적은 "특정 단어가 문서 내에서 많이 등장할수록 해당 단어가 그 문서의 내용을 대표할 가능성이 높다"는 가정을 바탕으로 텍스트 데이터를 수치화(Vectorization)하는 데 있다.

2. 계산 방법 및 수식

TF는 단순히 횟수를 세는 방식부터, 문서의 길이에 따른 왜곡을 방지하기 위한 정규화 방식까지 다양하게 계산된다.

2.1. 단순 빈도 (Raw Count)

가장 기본적인 형태로, 문서 $d$에서 단어 $t$가 나타난 횟수를 그대로 사용한다. $$\text{TF}(t, d) = f_{t,d}$$ (여기서 $f_{t,d}$는 단어 $t$의 빈도수)

2.2. 정규화된 빈도 (Normalized TF)

문서의 길이가 길수록 단어 빈도가 자연스럽게 높아지는 문제를 해결하기 위해, 문서 내 모든 단어의 총 빈도수($\sum_{k \in d} f_{k,d}$)로 나누어 정규화한다. $$\text{TF}(t, d) = \frac{f_{t,d}}{\sum_{k \in d} f_{k,d}}$$ 이 외에도 문서 내에서 가장 많이 등장한 단어의 빈도수로 나누는 '최대 빈도 정규화(Max TF normalization)' 방식이 사용되기도 한다.

2.3. 로그 스케일 빈도 (Log-scaled TF)

단어 빈도가 매우 높다고 해서 그 중요도가 선형적으로 증가하지 않는다는 점을 반영하여 로그를 취한다. $$\text{TF}(t, d) = \log(1 + f_{t,d})$$

[표] TF 계산 방식 비교

방식 수식 특징 장점 단점
단순 빈도 $f_{t,d}$ 계산이 매우 빠르고 직관적임 문서 길이에 따라 수치 편차가 큼
정규화 TF $\frac{f_{t,d}}{\sum f_{k,d}}$ 문서 길이에 상관없이 비교 가능 희소 행렬(Sparse Matrix) 발생 시 수치가 매우 작아짐
로그 스케일 $\log(1 + f_{t,d})$ 빈도 급증에 따른 가중치 과잉 방지 절대적인 빈도 차이를 희석시킴

3. TF-IDF로의 확장

3.1. TF의 한계와 IDF의 도입

TF만 사용할 경우, '은/는/이/가'와 같은 조사나 'the', 'a'와 같은 불용어(Stopwords)가 가장 높은 가중치를 갖게 되어 문서의 특징을 제대로 반영하지 못한다. 이를 해결하기 위해 Inverse Document Frequency(IDF, 역문서 빈도)를 결합한다.

IDF는 특정 단어가 전체 문서 집합에서 얼마나 희귀하게 등장하는지를 측정한다. $$\text{IDF}(t, D) = \log \frac{N}{df(t)}$$ * $N$: 전체 문서의 수 * $df(t)$: 단어 $t$가 포함된 문서의 수

최종적인 TF-IDF는 두 값의 곱으로 계산된다: $\text{TF-IDF}(t, d, D) = \text{TF}(t, d) \times \text{IDF}(t, D)$

3.2. TF-IDF 계산 단계별 예시

상황: 전체 문서 3개($N=3$)가 있고, 분석 대상 단어는 '사과'이다. - 문서 1: "사과가 맛있다. 사과가 빨갛다." (사과 2회 등장) - 문서 2: "사과는 과일이다." (사과 1회 등장) - 문서 3: "바나나는 길다." (사과 0회 등장)

  1. $\text{TF}$ 계산 (문서 1 기준): 문서 1의 전체 단어 수가 4개라면, $\text{TF}(\text{사과}, d_1) = 2 / 4 = 0.5$
  2. $\text{IDF}$ 계산: '사과'는 문서 1, 2에 등장하므로 $df(\text{사과}) = 2$. $\text{IDF}(\text{사과}, D) = \log(3 / 2) \approx 0.176$ (본 예시에서는 자연로그 $\ln$ 기준)
  3. $\text{TF-IDF}$ 계산: $0.5 \times 0.176 = 0.088$
    • 만약 '사과'가 모든 문서에 등장했다면 $\text{IDF} = \log(3/3) = 0$이 되어 $\text{TF-IDF}$ 값은 0이 된다.

4. 주요 특징 및 한계점

4.1. 장점

  • 계산 효율성: 복잡한 모델 학습 없이 단순 산술 연산만으로 텍스트의 특징을 추출할 수 있다.
  • 해석 가능성: 어떤 단어가 가중치가 높은지 즉각적으로 확인할 수 있어 결과 분석이 용이하다.

4.2. 한계점

  • 문맥 무시: 단어의 순서를 고려하지 않는 Bag-of-Words(BoW) 방식이므로, "사과가 나를 먹는다"와 "내가 사과를 먹는다"를 동일하게 처리한다.
  • 의미론적 관계 부재: '자동차'와 '차량'이 서로 다른 단어라면, 의미가 비슷함에도 불구하고 완전히 별개의 차원으로 처리한다.

5. 활용 사례 및 응용

5.1. 주요 적용 분야

  • 키워드 추출: TF-IDF 값이 높은 상위 단어들을 해당 문서의 핵심 키워드로 선정한다.
  • 문서 유사도 측정: 각 문서를 TF-IDF 벡터로 변환한 후, 두 벡터 사이의 각도를 측정하는 코사인 유사도(Cosine Similarity)를 통해 문서 간 유사성을 판별한다. $$\text{Cosine Similarity}(A, B) = \frac{A \cdot B}{\|A\| \|B\|} = \frac{\sum_{i=1}^{n} A_i B_i}{\sqrt{\sum_{i=1}^{n} A_i^2} \sqrt{\sum_{i=1}^{n} B_i^2}}$$
  • 검색 엔진 랭킹: 사용자의 쿼리 단어가 문서 내에서 적절한 TF-IDF 가중치를 가질 때 상위에 노출시킨다.

5.2. Python 구현 예시 (scikit-learn)

from sklearn.feature_extraction.text import TfidfVectorizer

# 분석할 문서 데이터
corpus = [
    '사과가 맛있다 사과가 빨갛다',
    '사과는 과일이다',
    '바나나는 길다'
]

# TF-IDF 벡터라이저 생성
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(corpus)

# 결과 확인 (단어 사전 및 가중치 행렬)
print("Feature Names:\n", vectorizer.get_feature_names_out())
print("\nTF-IDF Matrix:\n", tfidf_matrix.toarray())

# 출력 예시:
# Feature Names: ['과일이다' '길다' '맛있다' '바나나는' '빨갛다' '사과가' '사과는']
# TF-IDF Matrix:
# [[0.         0.         0.42  0.         0.42  0.65  0.        ]
#  [0.58       0.         0.         0.         0.         0.         0.58]
#  [0.         0.58       0.         0.58       0.         0.         0.        ]]

6. TF-IDF와 BM25의 차이점

현대적인 검색 엔진(Elasticsearch 등)에서는 TF-IDF의 발전된 형태인 BM25(Best Matching 25) 알고리즘을 주로 사용한다.

비교 항목 TF-IDF BM25
TF 포화도 빈도가 증가할수록 가중치가 계속 증가함 특정 빈도 이상이 되면 가중치 증가폭이 둔화됨 (Saturation)
문서 길이 보정 단순 정규화 혹은 미보정 문서 길이에 따른 페널티를 정교하게 적용 ($b$ 파라미터)
특징 단순 통계적 가중치 정보 검색에 최적화된 확률적 모델 기반

7. 관련 개념 및 발전 흐름

텍스트 분석 기술은 통계적 방식에서 의미론적 방식으로 발전해 왔다.

  1. Bag-of-Words (BoW): 단어의 순서를 무시하고 빈도만 세는 가장 기초적인 단계.
  2. TF-IDF: BoW에 문서 간 희소성을 더해 단어의 중요도를 계산하는 단계.
  3. Word2Vec / GloVe: 단어를 고정된 크기의 밀집 벡터(Dense Vector)로 변환하여 단어 간의 의미적 유사성을 계산하는 임베딩(Embedding) 방식.
  4. BERT / GPT: 문맥에 따라 동일한 단어도 다른 벡터로 표현하는 동적 임베딩(Contextualized Embedding)트랜스포머(Transformer) 기반의 딥러닝 방식.
AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?