워드 임베딩(Word Embedding)은 자연어 처리(NLP)에서 단어를 고정 길이의 벡터로 변환하는 기술입니다. 이 벡터들은 단어 간의 문맥적 의미와 관계를 수치적으로 표현하며, 컴퓨터가 언어의 의미를 더 잘 이해하고 처리할 수 있게 도와줍니다. 워드 임베딩은 NLP 모델의 성능을 크게 향상시킨 핵심 기술 중 하나로, 주로 딥러닝 모델에서 활용됩니다.
자연어 처리를 할 때, 컴퓨터는 텍스트 데이터를 직접 처리할 수 없습니다. 대신, 텍스트를 숫자로 변환하는 작업이 필요합니다. 전통적인 방법으로는 원-핫 인코딩(One-Hot Encoding)이 사용되었지만, 이 방식에는 몇 가지 단점이 있었습니다:
워드 임베딩은 이러한 한계를 극복하고, 단어를 더 밀집된(dense) 벡터로 표현하며, 벡터 공간에서 의미적으로 유사한 단어들이 가까이 위치하도록 학습됩니다.
저차원 밀집 벡터:
의미적 유사성 표현:
사전 학습 가능:
워드 임베딩을 생성하는 데는 여러 가지 알고리즘이 사용됩니다. 대표적인 알고리즘으로는 Word2Vec, GloVe, FastText 등이 있습니다.
개념: Word2Vec은 구글의 연구팀이 개발한 모델로, 단어를 벡터로 변환하기 위해 신경망을 사용하는 알고리즘입니다.
모델 구조:
특징: 단어 간 유사성을 잘 표현하며, 대규모 데이터셋에서 빠르게 학습할 수 있습니다.
예시:
from gensim.models import Word2Vec
# 예제 문장
sentences = [["cat", "sat", "on", "the", "mat"],
["dog", "sat", "on", "the", "mat"],
["cat", "and", "dog", "are", "friends"]]
# Word2Vec 모델 학습
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, sg=0)
# 'cat' 단어의 임베딩 벡터
print(model.wv['cat'])
개념: GloVe는 스탠포드 대학에서 개발한 알고리즘으로, 단어 공기 행렬(co-occurrence matrix)을 사용해 단어 간의 전역적인 통계 정보를 학습합니다.
특징: GloVe는 단어 간의 전역적 통계를 활용해, Word2Vec보다 더 일반화된 임베딩을 제공합니다.
수학적 기반: Word2Vec은 지역적 정보(문맥)에서 학습하지만, GloVe는 단어가 전체 코퍼스에서 어떻게 공기하는지를 이용해 임베딩을 학습합니다.
예시:
# GloVe는 pre-trained 모델을 다운로드 받아 사용하는 것이 일반적입니다.
개념: FastText는 페이스북에서 개발한 모델로, Word2Vec의 확장판입니다. 단어를 문자 n-그램(character n-grams)으로 분해해 학습합니다.
특징: FastText는 OOV(Out Of Vocabulary) 문제를 줄여주며, 비슷한 철자 패턴을 가진 단어들이 유사한 벡터로 표현됩니다.
예시:
from gensim.models import FastText
# 예제 문장
sentences = [["cat", "sat", "on", "the", "mat"],
["dog", "sat", "on", "the", "mat"],
["cat", "and", "dog", "are", "friends"]]
# FastText 모델 학습
model = FastText(sentences, vector_size=100, window=5, min_count=1)
# 'cat' 단어의 임베딩 벡터
print(model.wv['cat'])
텍스트 분류:
유사도 측정:
군집화(Clustering):
문장 임베딩:
기계 번역 및 언어 모델링:
어휘 외 단어 문제(OOV):
다의어 문제:
대규모 학습 필요:
Transformer 모델의 대두: