Semantic Similarity (의미론적 유사도)

정의

**Semantic Similarity (의미론적 유사도)**는 두 텍스트, 개념, 또는 문서가 의미상으로 얼마나 유사한지를 정량화하는 개념입니다.

단순 단어 일치가 아니라, 의미 수준에서의 유사도를 측정합니다.

유사도 측정 방식

1. 문자열 기반 (String-based)

"의사" vs "의사" = 100% (완전 일치)
"의사" vs "병원" = 0% (다른 단어)

문제: 의미 무시

  • “의료전문가” vs “의사” = 0% (실제로는 매우 유사)

2. 벡터 기반 (Vector-based, 현대적)

vec_의사 = embedding("의사")  # [0.123, -0.456, ...]
vec_약사 = embedding("약사")  # [0.234, -0.567, ...]
 
# 코사인 유사도 (가장 일반적)
유사도 = cosine_similarity(vec_의사, vec_약사)
       = 0.92  # 매우 높음 (둘 다 의료전문가)
 
vec_의사 vs vec_나무
유사도 = 0.15  # 낮음

장점: 의미 포착, 빠른 계산

3. 의미론적 관계식 (Semantic Analogy)

# 개념 간의 관계 유지
vec_의사 - vec_병원 ≈ vec_판사 - vec_법원
(의료전문가 - 직장) ≈ (법조인 - 직장)
 
# 의미론적 계산
vec_왕 - vec_남자 + vec_여자 ≈ vec_여왕
(왕에서 남자 요소 제거 + 여자 요소 추가)

실제 계산 예시

코사인 유사도 (Cosine Similarity)

# 2차원 벡터 예시 (실제는 수백~수천 차원)
 
vec_A = [0.8, 0.6]   # "의사"
vec_B = [0.75, 0.65] # "약사"
vec_C = [0.1, 0.9]   # "책"
 
# A와 B 사이의 코사인 유사도
cos(A, B) = (A·B) / (||A|| × ||B||)
          = (0.8×0.75 + 0.6×0.65) / (1.0 × 1.0)
          = 0.99  # 매우 높음
 
# A와 C 사이의 코사인 유사도
cos(A, C) = (0.8×0.1 + 0.6×0.9) / (1.0 × 1.0)
          = 0.62  # 낮음

의미론적 유사도의 활용

사용자: "병원에서 의료 서비스를 받는 사람은?"

벡터 검색:
  Query: "병원" "의료 서비스" "사람"
  ↓
  유사도 계산: vec(환자) 유사도 0.95
             vec(의사) 유사도 0.78
             vec(책) 유사도 0.05
  ↓
  결과: 환자 (가장 높음)

2. 추천 (Recommendation)

사용자가 "의료"에 관심 → 유사한 도메인 추천
  vec_의료 와 유사한 항목들:
  - 약학 (유사도 0.91)
  - 간호 (유사도 0.89)
  - 철학 (유사도 0.15)

3. 클러스터링 (Clustering)

유사도 높음 (같은 클러스터):
  의사, 약사, 간호사 → [의료전문가]
  
유사도 낮음 (다른 클러스터):
  의료전문가 vs 회계사 → 다른 클러스터

의미론적 유사도의 특성

특성설명
동의어 처리”의료전문가” ≈ “의사” (동의어 인식)
문맥 의존성”배”는 과일일 수도, 배(船)일 수도 (문맥 고려)
확률적0~1 사이의 연속값 (이진이 아님)
빠른 계산벡터 내적만으로 즉시 계산 가능
도메인 적응특정 도메인 데이터로 학습하면 더 정확

벡터 온톨로지에서의 활용

개념들의 유사도 행렬:

         의사   약사   간호사  판사   변호사
의사     1.00  0.92   0.87   0.15   0.12
약사     0.92  1.00   0.85   0.14   0.11
간호사   0.87  0.85   1.00   0.13   0.10
판사     0.15  0.14   0.13   1.00   0.93
변호사   0.12  0.11   0.10   0.93   1.00

↓ 해석

클러스터 1 (의료): 의사, 약사, 간호사 (유사도 > 0.85)
클러스터 2 (법조): 판사, 변호사 (유사도 > 0.93)

관련 개념


관련 영상: Vector Ontologies as LLM World View Extraction Method (Video 3)