📌 [NLP 입문] 텍스트의 유사도(Text Similarity)
1. 개요
자연어 처리(NLP)에서 텍스트를 분석하고 비교하려면, **텍스트를 수치화(벡터화)**해야 합니다.
텍스트를 벡터로 변환하면, 통계적·수치적 접근이 가능해집니다.
대표적인 활용 사례:
- 🔍 정보 검색 — 검색어와 문서의 유사도 계산
- 📰 문서 요약/핵심어 추출 — 중요한 단어 선정
- 📑 문서 분류 — 토픽 분류, 스팸 메일 필터링
- 📊 문서 클러스터링 — 비슷한 문서끼리 묶기
2. 카운트 기반 텍스트 표현 방법
이번 챕터에서는 카운트 기반 벡터화 기법 중 두 가지를 다룹니다.
2.1 DTM(Document-Term Matrix)
- 정의: 문서-단어 행렬.
행(Row)은 문서, 열(Column)은 단어를 나타냄.
- 각 셀의 값은 해당 단어가 문서에 등장한 횟수(빈도, Frequency).
예:
문서 | 단어1 | 단어2 | 단어3 |
---|
문서1 | 2 | 0 | 1 |
문서2 | 0 | 3 | 1 |
문서3 | 1 | 2 | 0 |
2.2 TF-IDF(Term Frequency - Inverse Document Frequency)
TF-IDF(t,d)=TF(t,d)×logDF(t)N
- t : 단어
- d : 문서
- N : 전체 문서 수
- DF(t) : 해당 단어가 등장한 문서 수
💡 자주 등장하지만 모든 문서에서 흔한 단어(예: "그리고", "하지만")는 IDF가 낮아져 가중치가 작아집니다.
3. 텍스트 유사도 계산 방법
텍스트가 벡터로 변환되면, 벡터 간의 거리/유사도를 계산할 수 있습니다.
3.1 코사인 유사도(Cosine Similarity)
cos(θ)=∥A∥∥B∥A⋅B
- 1에 가까울수록 두 벡터(문서)가 유사
- 방향을 기준으로 비교하므로, 길이(단어 수)에 영향을 덜 받음
3.2 유클리드 거리(Euclidean Distance)
d(A,B)=i=1∑n(Ai−Bi)2
- 거리 값이 작을수록 유사
- 문서 길이 차이에 영향을 받기 쉬움
4. 활용 예시
- 검색 엔진: 검색어 벡터 ↔ 문서 벡터 간 코사인 유사도 계산 → 상위 결과 제공
- 뉴스 클러스터링: 비슷한 뉴스 기사끼리 자동 그룹화
- 문서 추천 시스템: 사용자가 읽은 문서와 비슷한 문서 추천
5. 정리
- DTM: 단순 단어 빈도 기반
- TF-IDF: 단어 중요도 반영
- 벡터화 후 코사인 유사도 등으로 비교 가능
- NLP의 정보 검색·문서 분석에서 핵심 기술