반응형
단어문서 행렬(Term-Document Matrix, TDM)
단어문서 행렬(Term-Document Matrix, TDM)은 텍스트 마이닝과 자연어 처리(NLP)에서 자주 사용되는 도구입니다. TDM은 문서 집합에서 단어의 빈도를 분석하는 데 사용됩니다. 이를 통해 문서 간의 유사성을 측정하거나 특정 주제에 대한 중요 단어를 식별할 수 있습니다.
단어문서 행렬의 구성
TDM은 행과 열로 구성된 2차원 행렬입니다:
- 행(Row): 각 행은 개별 단어(또는 용어)를 나타냅니다.
- 열(Column): 각 열은 개별 문서를 나타냅니다.
- 값(Value): 특정 문서에서 특정 단어의 발생 빈도(count)를 나타냅니다.
예시
다음은 간단한 예시입니다:
문서 집합:
- "I love data science"
- "Data science is fun"
- "I love programming"
이를 TDM으로 표현하면 다음과 같은 행렬이 됩니다:
Doc1 | Doc2 | Doc3 | |
---|---|---|---|
I | 1 | 0 | 1 |
love | 1 | 0 | 1 |
data | 1 | 1 | 0 |
science | 1 | 1 | 0 |
is | 0 | 1 | 0 |
fun | 0 | 1 | 0 |
programming | 0 | 0 | 1 |
TDM의 활용
- 텍스트 분류: 문서들을 분류하기 위해 TDM을 사용하여 피처(특징)를 생성합니다.
- 클러스터링: 문서들을 유사성에 따라 그룹화하는 데 사용됩니다.
- 주제 모델링: 문서 집합 내에서 주제를 추출하거나 숨겨진 구조를 찾기 위해 사용됩니다.
- 유사도 측정: 문서 간의 유사성을 계산하여 검색 엔진이나 추천 시스템에 활용됩니다.
TDM의 변형
- TF-IDF (Term Frequency-Inverse Document Frequency): 단어 빈도와 역문서 빈도를 결합하여 단어의 중요도를 평가합니다. 빈번하게 등장하는 단어에 가중치를 부여하여 TDM을 변형합니다.
- 문서-단어 행렬(Document-Term Matrix, DTM): TDM과 유사하지만 행과 열의 역할이 바뀝니다. 즉, 행이 문서, 열이 단어를 나타냅니다.
구현 예시 (Python 코드)
from sklearn.feature_extraction.text import CountVectorizer
# 문서 집합 정의
documents = [
"I love data science",
"Data science is fun",
"I love programming"
]
# CountVectorizer를 사용하여 TDM 생성
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(documents)
# TDM을 배열 형태로 변환 및 출력
tdm = X.toarray()
print(tdm)
# 단어 목록 출력
print(vectorizer.get_feature_names_out())
위 코드에서 CountVectorizer
를 사용하여 TDM을 생성할 수 있습니다. 출력된 TDM과 단어 목록을 통해 문서 집합 내 단어의 빈도를 분석할 수 있습니다.
정리
단어문서 행렬은 텍스트 데이터를 구조화하고 분석하는 데 매우 유용한 도구입니다. 이를 통해 다양한 NLP 작업을 효율적으로 수행할 수 있습니다.
'실버를 위한 코딩' 카테고리의 다른 글
VPN(Virtual Private Network)이란? (0) | 2024.08.03 |
---|---|
vm과 컨테이너의 차이 (1) | 2024.07.11 |
Jupyter Notebook 사용법 (0) | 2024.06.20 |
아나콘다로 주피터 노트북을 사용하는 방법 (0) | 2024.06.19 |
'R' 개발과 성장의 역사 (0) | 2024.06.15 |