[파이썬][scikit-learn] scikit-learn에서 TF-IDF

TF-IDF (Term Frequency-Inverse Document Frequency)는 자연어 처리 분야에서 자주 사용되는 방법 중 하나입니다. 이 기술은 텍스트 문서 내에서 단어의 중요도를 평가하는 역할을 합니다. scikit-learn은 Python에서 TF-IDF를 구현하기 위한 강력한 도구를 제공합니다. 이번 포스팅에서는 scikit-learn을 사용하여 TF-IDF를 어떻게 구현하는지 알아보겠습니다.

TF-IDF란?

TF-IDF는 단어의 상대적인 중요도를 평가하는 방법입니다. 이는 특정 문서에서 나타나는 단어의 빈도가 높을수록 그리고 다른 문서에서는 드물게 나타나면서 중요한 단어를 의미합니다. 이 방법은 정보 검색 및 텍스트 마이닝에 널리 사용됩니다.

TF-IDF는 두 개의 주요 단계로 구성됩니다:

  1. Term Frequency (TF): 특정 문서에서 특정 단어의 빈도 계산
  2. Inverse Document Frequency (IDF): 전체 문서에서 특정 단어의 중요도 계산

TF와 IDF는 다음과 같이 정의됩니다:

TF-IDF는 다음과 같이 계산됩니다:

scikit-learn을 사용한 TF-IDF 구현

scikit-learn에서는 TfidfVectorizer 클래스를 사용하여 TF-IDF를 구현할 수 있습니다. 이 클래스는 텍스트 데이터를 입력으로 받아 TF-IDF 벡터를 생성하는 기능을 제공합니다.

다음은 scikit-learn을 사용하여 TF-IDF를 구현하는 간단한 예제 코드입니다:

from sklearn.feature_extraction.text import TfidfVectorizer

# 텍스트 데이터
documents = [
    "This is the first document.",
    "This document is the second document.",
    "And this is the third one.",
    "Is this the first document?"
]

# TF-IDF 벡터화
vectorizer = TfidfVectorizer()
vectors = vectorizer.fit_transform(documents)

# TF-IDF 벡터 출력
for i in range(len(documents)):
    print("Document:", i+1)
    print(vectorizer.get_feature_names())
    print(vectors[i])
    print()

위의 코드를 실행하면 텍스트 데이터에서 추출한 각 문서의 TF-IDF 벡터를 출력할 수 있습니다. TF-IDF 벡터는 단어의 중요도를 나타내는 수치로 이루어져 있습니다.

TF-IDF를 활용하면 텍스트 데이터에서 유용한 정보를 추출하고 문서 간의 유사성을 평가하는 등 다양한 자연어 처리 태스크에 유용하게 사용할 수 있습니다.

이제 scikit-learn을 사용하여 TF-IDF를 구현하는 방법을 알았습니다. 이를 활용하여 텍스트 데이터에서 중요한 단어를 추출하고 다양한 자연어 처리 작업에 활용해보세요!