단어의 의미를 잃지 않으면서
문장을 숫자로 표현하는 기술
컴퓨터는 숫자(코드)를 이용해 계산하는 기계이다. 따라서 사람이 사용하는 언어를 컴퓨터가 처리하기 위해서는 어떤 형태로든 숫자로 변환되어야 한다.
예를 들어, ‘apple’이라는 단어를 생각해보자. 컴퓨터 내부에서 이 단어는 Unicode로 변환되어 a는 97, p는 112, l은 108, e는 101이라고 처리된다. 즉, 컴퓨터는 apple을 인간처럼 ‘사과’라는 개념으로 인식하는 것이 아니라 [97, 112, 112, 108, 101]과 같은 문자 코드의 연속으로 저장하고 처리한다. 이러한 숫자들은 문자를 구분하기 위한 식별자일 뿐이며, 단어가 가지고 있는 의미를 표현하지는 않는다. apple과 orange는 모두 과일을 의미하는 단어이지만, 문자 코드만으로는 두 단어가 의미적으로 유사하다는 사실을 알 수 없다. 단어나 문장을 단순히 숫자로 바꾸는 것만으로 그 의미까지 부여할 수는 없다.
[참고] Unicode란?
Unicode는 전 세계의 모든 문자에 고유한 번호(code point)를 부여하는 국제 표준이다. 예를 들어 영문자 a는 97, A는 65, 한글 가는 44032(U+AC00)의 코드 포인트를 가진다. Python의 ord() 함수는 이러한 Unicode 코드 포인트를 정수 형태로 반환한다.
그렇다면 컴퓨터가 단어나 문장의 의미까지 처리할 수 있으려면 어떻게 해야 할까?
이것이 바로 현대 자연어처리(Natural Language Processing, NLP)가 수십 년 동안 해결하고자 했던 가장 중요한 문제 가운데 하나이다. 문장을 분석하고, 감정을 분류하며, 질문에 답하고, 토픽을 찾기 위해서는 먼저 컴퓨터가 언어를 ‘의미 있는 형태’로 표현할 수 있어야 한다.
이 문제를 해결하기 위해 등장한 개념이 Embedding이다. Embedding은 단어나 문장을 단순한 문자 코드가 아니라 의미를 담고 있는 벡터(vector) 로 표현하는 방법이다. 여기서 중요한 점은 단순히 숫자의 개수를 늘리는 것이 아니라, 의미적으로 유사한 단어나 문장이 벡터 공간에서도 서로 가까운 위치에 놓이도록 표현한다는 것이다.
예를 들어 ‘고양이’, ‘강아지’, ‘토끼’와 같은 단어들은 모두 동물이라는 공통된 의미를 지닌다. 좋은 Embedding 모델은 이러한 단어들을 벡터 공간에서도 서로 가까이 배치한다. 반대로 ‘자동차’, ‘수박’, ‘경제학’처럼 의미가 다른 단어들은 서로 멀리 떨어진 위치에 표현된다. 즉, 벡터 공간에서의 거리는 단순한 기하학적 거리가 아니라 의미적 유사성(semantic similarity)을 반영하게 된다.
이러한 표현 방식은 문장에도 동일하게 적용된다. 예를 들어 “오늘 날씨가 정말 좋다”와 “오늘 날씨가 매우 맑다”는 표현에 사용하는 단어는 다르게 구성되어 있지만 이 두 문장이 전달하고자 하는 의미는 유사하다. 반면 “최근의 경제는 호황이다”와 같은 문장은 앞의 두 문장과 전혀 다른 의미를 갖는다. Embedding은 이러한 의미적 관계를 벡터 공간에 반영하여, 의미가 비슷한 문장들은 서로 가까이, 의미가 다른 문장들은 멀리 위치하도록 만든다.
이처럼 Embedding의 핵심은 언어를 숫자로 바꾸는 것이 아니라 언어의 의미를 기하학적 공간(geometric space)에 표현하는 것이다. 벡터 공간에서 두 단어나 문장이 가까이 위치한다는 것은 두 표현이 의미적으로 유사하다는 것을 의미하며, 멀리 떨어져 있다는 것은 의미가 다르다는 것을 의미한다. 따라서 컴퓨터는 벡터 사이의 거리나 방향을 계산하는 것만으로도 단어와 문장의 의미적 유사성을 비교할 수 있게 된다.
오늘날 대부분의 자연어처리 기술은 이러한 Embedding을 출발점으로 사용한다. 검색 엔진은 의미가 비슷한 문서를 찾고, 번역 모델은 문장의 의미를 다른 언어로 변환하며, 대규모 언어모델(LLM)은 문맥 속에서 단어의 의미를 이해하는 식이다.
앞으로 다루게 될 토픽 모델링 역시 먼저 문장을 임베딩 공간에 표현한 후, 의미가 가까운 문장들을 군집화하여 하나의 토픽을 형성한다. 즉, Embedding은 현대 자연어처리에서 문장을 이해하기 위한 가장 기본적인 표현 방식이자, 이후 수행되는 모든 분석의 출발점이라고 할 수 있다.

Embedding 개념 정리
① 컴퓨터의 문자 코드는 의미를 표현하지 못함
↓
② 의미를 표현하는 새로운 방법이 필요
↓
③ Embedding 개념 등장
↓
④ Embedding은 의미를 벡터 공간에 표현
↓
⑤ 벡터 간의 거리를 이용해 의미의 유사성을 계산
↓
⑥ 현대 NLP의 출발점