TF-IDF (Term Frequency-Inverse Document Frequency)는 자연어 처리 분야에서 자주 사용되는 방법 중 하나입니다. 이 기술은 텍스트 문서 내에서 단어의 중요도를 평가하는 역할을 합니다. scikit-learn은 Python에서 TF-IDF를 구현하기 위한 강력한 도구를 제공합니다. 이번 포스팅에서는 scikit-learn을 사용하여 TF-IDF를 어떻게 구현하는지 알아보겠습니다.
TF-IDF란?
TF-IDF는 단어의 상대적인 중요도를 평가하는 방법입니다. 이는 특정 문서에서 나타나는 단어의 빈도가 높을수록 그리고 다른 문서에서는 드물게 나타나면서 중요한 단어를 의미합니다. 이 방법은 정보 검색 및 텍스트 마이닝에 널리 사용됩니다.
TF-IDF는 두 개의 주요 단계로 구성됩니다:
- Term Frequency (TF): 특정 문서에서 특정 단어의 빈도 계산
- Inverse Document Frequency (IDF): 전체 문서에서 특정 단어의 중요도 계산
TF와 IDF는 다음과 같이 정의됩니다:
- Term Frequency (TF) = 특정 단어의 횟수 / 문서 내의 모든 단어의 총 개수
- Inverse Document Frequency (IDF) = log(문서의 총 개수 / 특정 단어가 나타난 문서의 개수)
TF-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를 구현하는 방법을 알았습니다. 이를 활용하여 텍스트 데이터에서 중요한 단어를 추출하고 다양한 자연어 처리 작업에 활용해보세요!