10-1. 임베딩(Embedding)
- 사람이 사용하는 언어(= 자연어)를 컴퓨터가 이해할 수 있는 언어(숫자) 형태인 벡터(vector)로 변환한 결과 혹은 일련의 과정
- 역할
- 단어 및 문장 간 관련성 계산
- 의미적 또는 문법적 정보의 함축
10-1-1. 희소 표현 기반 임베딩
희소 표현(sparse representation)
- 대부분의 값이 0으로 채워져 있는 경우
- 대표적으로 원-핫 인코딩이 이에 속함
원-핫 인코딩
-
주어진 텍스트를 숫자(벡터)로 변환하는 방법
- 단어 $N$개를 각각 $N$차원의 벡터로 표현하는 방식
- 단어가 포함된 위치인 경우 1을, 아닌 경우 0으로 채우는 방식

단점
- 원-핫 벡터들은 하나의 요소만 1 값을 가지고 나머지는 모두 0인 희소 벡터(sparse vector)를 가짐
- 두 단어에 대해 벡터의 내적을 구하면 0을 가짐 → 직교(orthogonal) 벡터
- 단어끼리 관계성(유의어, 반의어) 없이 서로 독립적인 관계가 됨
- 차원의 저주 문제
- 하나의 단어를 표현하는 데 말뭉치에 있는 수만큼 차원이 존재하게 됨 → 복잡
⇒ 신경망 기반 단어 벡터화 방법들이 주목을 받고 있음
- Word2Vec, GloVe, FastText 등
10-1-2. 횟수 기반 임베딩
- 단어가 출현한 빈도를 고려하여 임베딩하는 방법
- 대표적으로 CountVectorization 방법과 TF-IDF 방법이 있음
카운터 벡터(Counter Vector)
-
문서 집합에서 단어를 토큰으로 생성하고 각 단어의 출현 빈도수를 이용하여 인코딩 후 벡터를 만드는 방법
⇒ tokenization + vectorization
-
sklearn.CountVectorizer()를 사용하여 구현 가능
-
기능
- 문서를 토큰 리스트로 변환
- 각 문서에서 토큰의 출현 빈도를 카운트
- 각 문서를 인코딩 한 후 벡터로 변환