본문 바로가기
  • ✨contact : survd0404@gmail.com
AI

Semantic Deduplication (의미 기반 중복 제거)

by 수민이수민수민이수민 2025. 10. 28.

🔹 1. Sentence-BERT 임베딩 생성

“문장을 숫자로 바꿔서 의미 공간에 배치하는 단계”

 

 

  • Sentence-BERT는 **문장 단위 의미를 벡터(숫자 리스트)**로 바꿔주는 모델이에요.
  • 예:
    • “나는 밥을 먹었다.” → [0.12, -0.08, 0.54, ...]
    • “식사를 했다.” → [0.10, -0.09, 0.56, ...]
      두 문장은 숫자가 거의 비슷하죠.
  • 이 벡터는 보통 384~768차원짜리 “의미 좌표”예요.

 

📦 Python 예시:

 

from sentence_transformers import SentenceTransformer
model = SentenceTransformer('all-MiniLM-L6-v2')
embeddings = model.encode(sentences, normalize_embeddings=True)

 

🔹 2. FAISS 인덱싱 & k-NN 탐색

“모든 문장을 빠르게 비교하기 위한 검색엔진처럼 인덱스 만드는 단계”

  • FAISS(Facebook AI Similarity Search)는
    고차원 벡터들을 효율적으로 검색하는 라이브러리입니다.
  • n개의 문장(예: 10만 개)의 임베딩을 만들면,
    모든 쌍을 비교하는 건 너무 느리니까,
    FAISS 인덱스를 만들어서 “비슷한 벡터끼리 묶어두는” 방식으로 검색 속도를 높입니다.
  • 이후 “k-NN (k Nearest Neighbors)”을 이용해
    각 문장에 대해 가장 비슷한 문장 k개를 찾을 수 있습니다.

📦 Python 예시:

import faiss
index = faiss.IndexFlatIP(embeddings.shape[1])  # Inner Product (Cosine)
index.add(embeddings)
D, I = index.search(embeddings, k=5)  # D: 거리, I: 인덱스

 

🔹 3. Cosine 유사도 임계값(Threshold) 기반 중복 제거

“비슷한 의미의 문장들을 필터링하는 단계”

  • 코사인 유사도(Cosine Similarity)는 두 벡터의 방향이 얼마나 같은지를 측정해요.
  • 값의 범위:
    • 1 → 완전히 같은 의미
    • 0 → 무관한 문장
    • -1 → 반대 의미
  • 보통 0.9 이상이면 “의미 중복”으로 간주합니다.
    예: “나는 학교에 갔다.” ↔ “학교에 다녀왔다.”
  • 그래서 threshold(임계값)를 정해놓고
    유사도가 높은 문장 중 하나만 남기고 나머지는 제거합니다.

📦 Python 예시:

threshold = 0.9
duplicates = set()
for i in range(len(embeddings)):
    for j in I[i][1:]:
        if D[i][j] > threshold:
            duplicates.add(j)
filtered_texts = [t for k, t in enumerate(sentences) if k not in duplicates]

 

🔹 4. 제거된 샘플 & 유사도 예시 출력

“어떤 문장들이 중복으로 판정되어 제거됐는지 보여주는 단계”

  • 예를 들어 출력이 이렇게 나옵니다:
[중복 제거 결과 예시]
1. "I love pizza" ↔ "Pizza is my favorite food" (similarity=0.93)
2. "He went to school" ↔ "He attended school" (similarity=0.91)

 

이런 식으로 모델이 실제로 의미적으로 중복된 데이터를 찾아냈음을 확인할 수 있습니다.

 

💡 비유로 요약하자면

수많은 문장을 의미로 변환한 뒤,
비슷한 뜻의 문장끼리 묶고,
너무 닮은 녀석들은 한 팀만 남겨두는 과정.

즉, “문장의 의미 DNA를 뽑아서,
겹치는 유전자를 가진 문장들을 정리하는 작업”이 바로 Semantic Deduplication이에요.

'AI' 카테고리의 다른 글

GloVe 임베딩 모델 펼쳐보기  (0) 2025.10.28