EveryDay.DevUp

[AI] 텍스트 임베딩 본문

AI

[AI] 텍스트 임베딩

EveryDay.DevUp 2025. 6. 14. 00:13
텍스트 임베딩 완전 가이드

🚀 텍스트 임베딩 완전 가이드

컴퓨터가 언어를 이해하는 방법

인간의 언어를 컴퓨터가 이해할 수 있는 숫자로 변환하는 기술의 발전사를 함께 탐험해보겠습니다.

📚 텍스트 임베딩이란?

텍스트 임베딩은 단어나 문장을 컴퓨터가 처리할 수 있는 숫자 벡터로 변환하는 과정입니다. 마치 언어의 번역기와 같은 역할을 하며, 인간의 언어를 컴퓨터의 언어로 바꿔주는 다리 역할을 합니다.

텍스트 "안녕하세요"
임베딩 처리
[0.2, 0.8, -0.1, ...]

🎯 1. 원핫 벡터 (One-Hot Vector)

원핫 벡터는 각 단어를 고유한 위치에 1을, 나머지는 모두 0인 벡터로 표현하는 가장 기초적인 방법입니다. 마치 학급에서 출석을 부를 때 자기 이름에만 손을 드는 것과 같습니다.

예시: 간단한 문장 분석

문장: "나는 학교에 간다"

단어 사전: {나는: 0, 학교에: 1, 간다: 2}

나는   → [1, 0, 0]
학교에 → [0, 1, 0]
간다   → [0, 0, 1]

💡 주요 사용처

매우 작은 규모의 어휘를 가진 간단한 분류 문제

예시: 어휘가 '재생', '정지', '다음'으로 고정된 음악 플레이어의 명령어를 분류하는 경우. 각 명령어는 다른 명령어와 의미적 유사성이 필요 없으므로 원핫 벡터로도 충분히 구분 가능합니다.

👍 장점

  • 구현이 매우 간단함
  • 각 단어를 명확히 구분
  • 이해하기 쉬움

👎 단점

  • 단어 간 관계 표현 불가
  • 차원의 저주 (벡터 크기 증가)
  • 메모리 비효율성

📊 2. 카운트 벡터 (Count Vector)

카운트 벡터는 문서에서 각 단어가 등장하는 횟수를 세어 벡터로 만드는 방법입니다. 특정 키워드가 얼마나 중요한지 빈도로 파악합니다.

예시: 두 문서 비교

문서1: "나는 학교에 간다 학교에 가서 공부한다"

문서2: "나는 집에 간다 집에 가서 쉰다"

어휘: {나는, 학교에, 간다, 가서, 공부한다, 집에, 쉰다}

문서1: [1, 2, 1, 1, 1, 0, 0]
문서2: [1, 0, 1, 1, 0, 2, 1]

💡 주요 사용처

문서 분류 및 스팸 필터링

예시: 스팸 메일 필터 시스템. '광고', '당첨', '무료'와 같은 단어의 등장 횟수를 세어 해당 메일이 스팸일 확률을 계산합니다. 단어의 빈도 자체가 중요한 피처가 됩니다.

👍 장점

  • 단어의 중요도를 빈도로 반영
  • 문서의 주제 파악에 도움
  • 계산이 간단함

👎 단점

  • 단어 순서 정보 손실
  • 희소 벡터 (대부분이 0)
  • 문서 길이에 민감함

⚖️ 3. TF-IDF

TF-IDF(Term Frequency-Inverse Document Frequency)는 단어의 빈도와 그 단어의 희귀성을 함께 고려합니다. 모든 문서에 나오는 흔한 단어보다, 특정 문서에서만 자주 나오는 단어에 더 높은 가중치를 부여합니다.

TF-IDF = TF(t,d) × IDF(t)

TF(t,d) = (단어 t가 문서 d에서 나타난 횟수) / (문서 d의 총 단어 수)

IDF(t) = log(전체 문서 수 / 단어 t가 나타난 문서 수)

💡 주요 사용처

정보 검색 및 문서 유사도 측정

예시: 검색 엔진. 사용자가 '머신러닝 알고리즘'을 검색하면, TF-IDF는 '머신러닝'이나 '알고리즘' 같은 단어는 자주 등장하지만(높은 TF), 전체 웹 문서에서는 상대적으로 드문(높은 IDF) 문서에 높은 점수를 부여하여 검색 결과 상위에 노출시킵니다.

👍 장점

  • 문서의 특징을 잘 반영
  • 일반적인 단어의 영향을 줄임
  • 정보 검색에 효과적

👎 단점

  • 여전히 희소 벡터
  • 단어 간 의미 관계 무시
  • 새로운 단어 처리 어려움

🧠 4. Word2Vec

Word2Vec은 단어의 의미를 밀집된 벡터(dense vector)로 표현하는 신경망 기반의 모델입니다. 단어들 사이의 복잡하고 미묘한 의미적, 문법적 관계를 벡터 공간에 표현할 수 있습니다.

king - man + woman ≈ queen

서울 - 한국 + 일본 ≈ 도쿄

💡 주요 사용처

의미 기반의 추천 시스템 및 기계 번역

예시: 뉴스 기사 추천 시스템. 사용자가 '인공지능'에 대한 기사를 읽었을 때, Word2Vec은 '머신러닝', '딥러닝', '신경망' 등 의미적으로 유사한 단어가 포함된 다른 기사를 추천해줄 수 있습니다. 이는 단순히 같은 단어가 포함된 기사를 찾는 것보다 훨씬 정교한 추천입니다.

👍 장점

  • 단어 간 의미 관계 포착
  • 밀집 벡터 (차원 축소)
  • 벡터 연산으로 의미 조작 가능

👎 단점

  • 다의어 처리 어려움
  • 학습 시간이 오래 걸림
  • 새로운 단어(OOV) 처리 어려움

🌐 5. GloVe (Global Vectors)

GloVe는 Word2Vec의 지역적 문맥 정보(Local Context)와, 카운트 기반 방법론의 전역적 통계 정보(Global Statistics)를 결합한 모델입니다. 단어 동시 출현 행렬을 기반으로 의미를 학습합니다.

핵심 아이디어: 동시 출현 비율

GloVe의 핵심은 단순히 "얼마나 자주 함께 나타나는가"가 아니라, "특정 단어와 함께 나타날 확률의 비율"을 통해 단어 간의 관계를 파악하는 것입니다. 예를 들어 '얼음'은 '차갑다'와 함께 나올 확률이 '따뜻하다'와 함께 나올 확률보다 훨씬 높다는 비율 정보를 학습합니다.

💡 주요 사용처

감성 분석, 개체명 인식(NER), 질의응답 시스템

예시: 영화 리뷰 감성 분석. GloVe는 '훌륭하다', '최고다', '환상적이다' 같은 단어들이 '재미있다'와 비슷한 맥락에서 쓰인다는 전역적 통계 정보를 학습합니다. 이를 통해 '재미있다'라는 단어가 없어도 리뷰가 긍정적이라는 것을 더 정확하게 추론할 수 있습니다.

👍 장점

  • 전역적 통계 정보 활용
  • 학습 속도가 상대적으로 빠름
  • 적은 데이터에서도 준수한 성능

👎 단점

  • 동시 출현 행렬 저장을 위한 메모리 필요
  • 여전히 다의어 문제 존재

🎮 6. GloVe 시뮬레이터

GloVe의 동작 원리를 단계별로 직접 체험해보세요. 각 버튼을 눌러 다음 단계로 진행할 수 있습니다.

📝 1단계: 텍스트 및 설정 입력