🛠️ 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 애플리케이션에서 사용됩니다. 이를 통해 텍스트 데이터를 수치화하고, 문서의 유의미한 단어를 파악하여 정보 검색, 텍스트 분류 등의 작업에 효과적으로 활용할 수 있습니다. 😊✨
'AI 공부 > 자연어 처리 (NLP)' 카테고리의 다른 글
[자연어 처리 NLP] 단어 임베딩과 문맥적 임베딩: NLP의 핵심 이해하기 🌟 (4) | 2024.11.21 |
---|---|
[자연어 처리 NLP] Bag-of-Words를 이용한 특징 추출 (Feature Extraction with Bag-of-Words) (2) | 2024.11.20 |
[자연어 처리 NLP] 🛠️ NLP 데이터 처리 방법: 데이터 전처리 (Data Pre-processing) ✨ (3) | 2024.11.19 |
[자연어 처리 NLP] 📚 NLP 용어 알아보기 (5) | 2024.11.18 |
[자연어 처리 NLP] 🌍 자연어 처리 (NLP)란 무엇인가? (2) | 2024.11.17 |