4장 임베딩
4.2 단어임베딩
4.2.1 원-핫 인코딩
- 가장 단순한 임베딩 방법
- 벡터 요소 중 단 하나만 1이고 나머지는 0
- 희소 벡터
원-핫 이코딩 과정
- 단어 사전 구축
- 말뭉치의 서로 다른 모든 단어의 집합
- 단어의 수 -> 원-핫 벡터의 차원
- 인덱스 부여
- 인덱스 번호가 원-핫 벡터의 1의 값을 가지는 요소의 위치
원-핫 인코딩 단점
- 단어의 의미나 유사한 단어 정보가 없음
- 단어 사전의 크기가 커짐에 따라 원-핫 벡터 차원 커짐
-> 메모리 낭비, 계산의 복잡도 증가
- 희소 벡터
4.2.2 희소 표현과 분산 표현
희소 표현
- 원-핫 인코딩
- 각각의 차원이 독립적인 정보를 표현 -> 사람이 직관적으로 이해하기 쉬움
- 메모리 낭비, 계산 복잡도 증가
- 단어 간 연관성이 없어 의미를 담을 수 없음
분산 표현
- 한 단어의 정보가 특정 차원에 표현되지 않고 여러 차원에 분산되어 표현
- 한 차원에 다양한 정보 저장
- 데이터 손실을 최소화하면서 벡터 차원이 압축되는 효과
- 밀집 표현, 밀집 벡터
분산 표현의 장점
1) 임베딩 벡터의 차원을 데이터 손실을 최소화하면서 압축 가능
- 신경망 모델의 차원의 저주 문제 회피 가능
2) 임베딩 벡터에 단어의 의미, 주변 단어 간의 관계 등 많은 정보가 내포되어 있어 일반화 능력이 뛰어남
- 벡터 공간 상에 유사한 의미의 단어들은 비슷한 위치에 분포
4.2.3 Word2Vec
- 2013년, 구글
- 기존 신경망 기반 단어 임베딩 모델에 비해 구조상 차이는 없지만 계산량을 획기적으로 줄여 빠른 학습 가능
CBOW
- 맥락이라 표현되는 주변 단어들을 이용해 타겟 단어를 예측하는 신경망 모델
- 신경망 입력: 주변 단어
- 신경망 출력: 타겟 단어
- 학습된 가중치 벡터: 임베딩 벡터
- 학습 속도 빠름
Skip-gram 모델
- 하나의 타겟 단어를 이용해 주변 단어들을 예측하는 신경망 모델
- 입출력이 CBOW와 반대
- CBOW 모델에 비해 예측해야 하는 맥락이 많음
- 단어 분산 표현력이 우수, 임베딩 품질 우수
Word2Vec의 단어 임베딩
- 학습을 통해 비슷한 의미의 단어들을 비슷한 벡터 공간에 위치
- 벡터 특성상 의미에 따라 방향성을 가짐
- 방향성 -> 임베딩된 벡터들 간 연산 -> 단어 간 관계를 계산

https://github.com/e9t/nsmc
with는 자동으로 열고 닫는 것이다.
클래스로 만들려면 __enter__ , __exit__를 사용한다.