[NLP 입문] 텍스트의 유사도(Text Similarity)

허허맨·2025년 7월 31일
0

LLM

목록 보기
5/12
post-thumbnail

📌 [NLP 입문] 텍스트의 유사도(Text Similarity)

1. 개요

자연어 처리(NLP)에서 텍스트를 분석하고 비교하려면, **텍스트를 수치화(벡터화)**해야 합니다.
텍스트를 벡터로 변환하면, 통계적·수치적 접근이 가능해집니다.

대표적인 활용 사례:

  • 🔍 정보 검색 — 검색어와 문서의 유사도 계산
  • 📰 문서 요약/핵심어 추출 — 중요한 단어 선정
  • 📑 문서 분류 — 토픽 분류, 스팸 메일 필터링
  • 📊 문서 클러스터링 — 비슷한 문서끼리 묶기

2. 카운트 기반 텍스트 표현 방법

이번 챕터에서는 카운트 기반 벡터화 기법 중 두 가지를 다룹니다.

2.1 DTM(Document-Term Matrix)

  • 정의: 문서-단어 행렬.
    행(Row)은 문서, 열(Column)은 단어를 나타냄.
  • 각 셀의 값은 해당 단어가 문서에 등장한 횟수(빈도, Frequency).

예:

문서단어1단어2단어3
문서1201
문서2031
문서3120

2.2 TF-IDF(Term Frequency - Inverse Document Frequency)

  • 정의: 단순 빈도 대신 단어의 중요도를 반영한 가중치 방식

  • 구성 요소:

    • TF (Term Frequency): 문서 내 해당 단어의 빈도
    • IDF (Inverse Document Frequency): 해당 단어가 전체 문서에서 얼마나 희귀한지
  • 계산식:

TF-IDF(t,d)=TF(t,d)×logNDF(t)TF\text{-}IDF(t, d) = TF(t, d) \times \log \frac{N}{DF(t)}
  • tt : 단어
  • dd : 문서
  • NN : 전체 문서 수
  • DF(t)DF(t) : 해당 단어가 등장한 문서 수

💡 자주 등장하지만 모든 문서에서 흔한 단어(예: "그리고", "하지만")는 IDF가 낮아져 가중치가 작아집니다.


3. 텍스트 유사도 계산 방법

텍스트가 벡터로 변환되면, 벡터 간의 거리/유사도를 계산할 수 있습니다.

3.1 코사인 유사도(Cosine Similarity)

cos(θ)=ABAB\cos(\theta) = \frac{\vec{A} \cdot \vec{B}}{\|\vec{A}\| \|\vec{B}\|}
  • 1에 가까울수록 두 벡터(문서)가 유사
  • 방향을 기준으로 비교하므로, 길이(단어 수)에 영향을 덜 받음

3.2 유클리드 거리(Euclidean Distance)

d(A,B)=i=1n(AiBi)2d(A, B) = \sqrt{\sum_{i=1}^n (A_i - B_i)^2}
  • 거리 값이 작을수록 유사
  • 문서 길이 차이에 영향을 받기 쉬움

4. 활용 예시

  • 검색 엔진: 검색어 벡터 ↔ 문서 벡터 간 코사인 유사도 계산 → 상위 결과 제공
  • 뉴스 클러스터링: 비슷한 뉴스 기사끼리 자동 그룹화
  • 문서 추천 시스템: 사용자가 읽은 문서와 비슷한 문서 추천

5. 정리

  • DTM: 단순 단어 빈도 기반
  • TF-IDF: 단어 중요도 반영
  • 벡터화 후 코사인 유사도 등으로 비교 가능
  • NLP의 정보 검색·문서 분석에서 핵심 기술

profile
사람은 망각의 동물입니다. 때로는 기록으로 과거의 나를 데려옵니다.

0개의 댓글