TfidfVectorizer

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2025.12.30
조회수
5
버전
v1

TfidfVectorizer

개요

TfidfVectorizer자연어 처리(Natural Language Processing, NLP)에서 텍스트 데이터를 수치화하는 데 널리 사용되는 도구 중 하나로, scikit-learn 라이브러리에 포함된 클래스입니다. 이 클래스는 텍스트 문서의 집합을 입력으로 받아, 각 문서 내 단어들의 TF-IDF(Term Frequency-Inverse Document Frequency) 값을 계산하여 문서-단어 행렬로 변환합니다. 이 행렬은 머신러닝 모델에 입력할 수 있는 수치형 데이터 형태로, 문서 분류, 유사도 측정, 정보 검색 등 다양한 응용 분야에서 핵심적인 역할을 합니다.

TF-IDF는 단어의 빈도(문서 내 등장 횟수)와 전체 문서 집합에서의 희귀성(레어함)을 조합하여 각 단어의 중요도를 평가하는 통계적 척도입니다. TfidfVectorizer는 이러한 TF-IDF 가중치를 자동으로 계산하고, 전처리 기능(예: 소문자 변환, 불용어 제거, 토큰화 등)도 내장하고 있어 사용이 간편합니다.


작동 원리

TF-IDF 개념

TF-IDF는 다음 두 요소의 곱으로 정의됩니다:

  • TF(Term Frequency): 특정 단어가 한 문서 내에서 얼마나 자주 등장하는지를 나타냅니다.
    [ \text{TF}(t, d) = \frac{\text{단어 } t \text{의 문서 } d \text{ 내 등장 횟수}}{\text{문서 } d \text{의 전체 단어 수}} ]

  • IDF(Inverse Document Frequency): 특정 단어가 전체 문서 집합에서 얼마나 희귀한지를 나타냅니다. 자주 등장하는 일반적인 단어(예: '그리고', '또는')는 낮은 가중치를 받습니다.
    [ \text{IDF}(t, D) = \log \left( \frac{\text{전체 문서 수}}{\text{단어 } t \text{가 포함된 문서 수}} \right) ]

최종적으로, 각 단어의 TF-IDF 값은 다음과 같이 계산됩니다:

[ \text{TF-IDF}(t, d, D) = \text{TF}(t, d) \times \text{IDF}(t, D) ]


주요 기능 및 파라미터

TfidfVectorizer는 다음과 같은 주요 파라미터를 제공하여 유연한 텍스트 전처리와 벡터화를 가능하게 합니다.

파라미터 설명
[max_features](/doc/%EA%B8%B0%EC%88%A0/%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC/%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%20%EC%84%A4%EC%A0%95/max_features) 사용할 최대 단어 수 (빈도 순 상위 N개 선택)
[stop_words](/doc/%EA%B8%B0%EC%88%A0/%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC/%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%20%EC%84%A4%EC%A0%95/stop_words) 제거할 불용어 목록 (예: '는', '의', '가')
[ngram_range](/doc/%EA%B8%B0%EC%88%A0/%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC/%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%20%EC%84%A4%EC%A0%95/ngram_range) 사용할 n-gram 범위 (예: (1,2) → 단어와 2-gram 모두 포함)
[min_df](/doc/%EA%B8%B0%EC%88%A0/%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC/%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%20%EC%84%A4%EC%A0%95/min_df) 최소 문서 빈도 (해당 단어가 최소한 몇 개 문서에 등장해야 포함되는지)
[max_df](/doc/%EA%B8%B0%EC%88%A0/%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC/%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%20%EC%84%A4%EC%A0%95/max_df) 최대 문서 빈도 (너무 자주 등장하는 단어 제외, 예: 0.8 → 80% 이상 문서에 등장하면 제외)
[lowercase](/doc/%EA%B8%B0%EC%88%A0/%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC/%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%20%EC%84%A4%EC%A0%95/lowercase) 텍스트를 소문자로 변환할지 여부 (기본값: True)
[tokenizer](/doc/%EA%B8%B0%EC%88%A0/%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC/%EC%A0%84%EC%B2%98%EB%A6%AC/tokenizer) 사용자 정의 토큰화 함수 지정 가능
[analyzer](/doc/%EA%B8%B0%EC%88%A0/%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC/%EC%A0%84%EC%B2%98%EB%A6%AC/analyzer) 'word' 또는 'char'로 설정 가능 (문자 기반 n-gram도 지원)

사용 예시

다음은 Python에서 TfidfVectorizer를 사용하는 간단한 예제입니다:

from sklearn.feature_extraction.text import TfidfVectorizer

# 샘플 문서
documents = [
    "자연어 처리는 인공지능의 핵심 기술입니다.",
    "TF-IDF는 텍스트를 수치화하는 데 유용합니다.",
    "머신러닝 모델은 텍스트 데이터를 학습할 수 있습니다."
]

# TfidfVectorizer 초기화
vectorizer = TfidfVectorizer(
    max_features=10,
    stop_words=['은', '는', '은', '를', '이', '가', '의'],
    ngram_range=(1, 2)
)

# 문서를 TF-IDF 행렬로 변환
tfidf_matrix = vectorizer.fit_transform(documents)

# 결과 출력
print("피처 이름:", vectorizer.get_feature_names_out())
print("TF-IDF 행렬:\n", tfidf_matrix.toarray())

이 코드는 주어진 문서들을 전처리한 후, 각 단어/2-그램에 대해 TF-IDF 값을 계산하여 희소 행렬 형태로 출력합니다.


장점과 한계

✅ 장점

  • 직관적이고 해석이 쉬움: TF-IDF는 단어의 중요도를 수치로 표현하므로 모델의 결과를 해석하기 용이합니다.
  • 전처리 기능 통합: 토큰화, 불용어 제거, 정규화 등을 내장하고 있어 별도 전처리가 필요 없습니다.
  • 효율적인 계산: 희소 행렬(sparse matrix) 형식으로 저장되어 메모리 사용이 효율적입니다.

❌ 한계

  • 의미 반영 부족: 단어 간 의미적 유사성(예: '자동차'와 '차량')을 반영하지 못합니다.
  • 문서 길이 편향: 긴 문서는 단어 빈도가 높아져 불균형이 발생할 수 있습니다.
  • 동의어 문제: 같은 의미를 가진 다른 단어는 별개의 피처로 처리됩니다.

활용 분야

TfidfVectorizer는 다음과 같은 NLP 작업에서 널리 사용됩니다:

  • 문서 분류: 스팸 탐지, 감성 분석, 주제 분류
  • 유사도 계산: 코사인 유사도를 이용한 문서 간 유사도 측정
  • 정보 검색: 검색 쿼리와 문서 간 관련도 평가
  • 클러스터링: K-means 등 군집화 알고리즘의 입력으로 활용

관련 도구 및 대안


참고 자료

  • scikit-learn TfidfVectorizer 공식 문서
  • Jurafsky, D., & Martin, J. H. (2023). Speech and Language Processing (3rd ed.)
  • Manning, C. D., Raghavan, P., & Schütze, H. (2008). Introduction to Information Retrieval. Cambridge University Press.

TfidfVectorizer는 여전히 실용적이며 강력한 도구로, 고급 임베딩 기법과 함께 사용될 때 더욱 효과적인 NLP 파이프라인을 구성할 수 있습니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

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

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