본문 바로가기
AI 공부/자연어 처리 (NLP)

[자연어 처리 NLP] 🌟 TF-IDF를 이용한 특징 추출 (Term Frequency-Inverse Document Frequency)

by 데이터 벌집 2024. 11. 21.
반응형
[자연어 처리 NLP] 🌟 TF-IDF를 이용한 특징 추출 (Term Frequency-Inverse Document Frequency)

 

🛠️ 1. 단어 빈도 (Term Frequency, TF)

단어 빈도(TF)는 특정 단어가 문서에서 얼마나 자주 등장하는지를 측정합니다. 일반적으로 문서 내 총 단어 수로 정규화하여 더 긴 문서로 인한 편향을 방지합니다.

 

예를 들어, "강아지가 마당에서 놀고 있다"라는 문서에서 "강아지"라는 단어의 빈도는 해당 단어가 몇 번 등장했는지를 나타냅니다. 😊

 


🛠️ 2. 역문서 빈도 (Inverse Document Frequency, IDF)

역문서 빈도(IDF)는 특정 단어가 전체 코퍼스 내에서 얼마나 중요한지를 측정합니다. 많은 문서에 등장하는 단어일수록 중요도가 낮아지며, 일부 문서에만 등장하는 단어일수록 중요도가 높아집니다.

 

분모에 +1을 추가하여 특정 단어가 어떤 문서에도 등장하지 않는 경우에 0으로 나누는 문제를 방지합니다.


🛠️ 3. TF와 IDF의 결합: TF-IDF

TF와 IDF를 곱하여 특정 단어의 TF-IDF 점수를 계산합니다. 이렇게 하면 각 단어가 특정 문서 내에서 가지는 상대적인 중요도를 평가할 수 있습니다.

중요성: TF-IDF는 문서 내에서 중요한 단어를 식별하는 데 도움을 주며, 정보 검색, 텍스트 마이닝 등에 자주 사용됩니다. 🔍


TF-IDF 예시

다음은 TF-IDF 모델을 사용해보는 새로운 예시입니다:

from sklearn.feature_extraction.text import TfidfVectorizer

# 샘플 텍스트 데이터 (문서들)
documents = [
    "한글 자연어 처리는 흥미로운 분야입니다.",
    "자연어 처리를 통해 많은 응용 프로그램을 개발할 수 있습니다.",
    "흥미로운 데이터 과학 프로젝트를 진행하고 있습니다."
]

# TfidfVectorizer 초기화
vectorizer = TfidfVectorizer()

# 모델을 맞추고 문서들을 TF-IDF 표현으로 변환
tfidf_matrix = vectorizer.fit_transform(documents)

# 특징 이름(코퍼스 내의 고유한 단어들) 얻기
feature_names = vectorizer.get_feature_names_out()

# TF-IDF 매트릭스를 배열로 변환
tfidf_array = tfidf_matrix.toarray()

# TF-IDF 매트릭스 출력
print("특징 이름(단어들):", feature_names)
print("\nTF-IDF 매트릭스:")
print(tfidf_array)

 

출력:

특징 이름(단어들): ['과학' '개발할' '많은' '분야입니다' '자연어' '처리' '처리를' '프로젝트를' '흥미로운']

TF-IDF 매트릭스:
[[0.         0.         0.         0.55280532 0.4472136  0.         0.
  0.         0.55280532]
 [0.         0.55280532 0.55280532 0.         0.4472136  0.4472136
  0.55280532 0.         0.        ]
 [0.55280532 0.         0.         0.         0.         0.
  0.         0.55280532 0.4472136 ]]

 

위와 같이 TF-IDF 모델을 사용하면, 각 단어가 문서에서 가지는 상대적 중요도를 평가할 수 있습니다. 이를 통해 문서의 핵심 단어를 추출하거나, 텍스트 마이닝 작업을 보다 효과적으로 수행할 수 있습니다. ✨

TF-IDF의 장단점

  • 장점:
    • 중요 단어 식별: 문서에서 중요한 단어를 식별하는 데 유용하며, 불필요한 단어의 가중치를 줄일 수 있습니다.
    • 정보 검색에 유용: 검색 엔진에서 문서의 관련성을 평가하는 데 자주 사용됩니다.
  • 단점:
    • 희소 행렬: 큰 코퍼스에서는 매우 큰 희소 행렬이 생성되어 메모리 사용량이 증가할 수 있습니다.
    • 단어 의미 무시: 단어의 의미나 순서를 고려하지 않기 때문에 문맥적 정보를 반영하기 어렵습니다.

TF-IDF는 간단하면서도 강력한 특징 추출 기법으로, 많은 NLP 애플리케이션에서 사용됩니다. 이를 통해 텍스트 데이터를 수치화하고, 문서의 유의미한 단어를 파악하여 정보 검색, 텍스트 분류 등의 작업에 효과적으로 활용할 수 있습니다. 😊✨

반응형