Word2Vec은 단어의 벡터 표현을 얻기 위한 (그 이름대로 단어를 벡터로 바꿔주는) 자연어 처리(NLP) 기술로, 구글(Google)의 토마스 미콜로프(Tomáš Mikolov)가 이끄는 연구팀에서 2013년에 발표되었습니다.

구체적으로 말하자면, Word2Vec은 단어와 그 주변 관계의 의미를 계산하여 벡터로 바꾸는 워드 임베딩 기술입니다. 즉, 하나의 단어는 단독으로 쓰이는 것이 아니라 주변 단어들과 함께 쓰인다는 언어학의 분산 의미(Distributional semantics) 혹은 분포 가설(distributional hypothesis)에서 영향을 받았습니다. 예를 들어 ‘강아지’라는 단어가 ‘귀엽다’, ‘예쁘다’ 등의 단어와 함께 자주 등장한다고 해봅시다. 분포 가설에 맞춰 해당 단어들을 벡터화 한다면 이들은 모두 유사한 값이 나올 것입니다. 즉, 의미적으로 가까운 단어가 된다는 뜻입니다.

Untitled

위 그림에서 문장의 빈칸에 들어갈 알맞은 단어들에 대해 생각해봅시다. “쓰레기”, “질병”, “거짓말”은 ‘아주 좋은’이라는 의미를 갖는 “최상의”라는 단어와 같이 사용하는 것이 어색하다고 느껴집니다. 그러나 “깨달음”, “해결방법”, “품질”을 빈칸에 넣어보면, 어색한 것이 아니라 오히려 적절하다는 느낌과 함께 단어들의 성격이 유사하다는 생각이 듭니다. 이것이 바로 문맥에서 같이 등장하는 단어들을 함께 파악해야 단어의 진의를 알 수 있고, 의미는 하나의 단어가 아니라 문장의 다양한 형태소에 나뉘어 있다는 '분산 의미' 개념입니다. Word2Vec은 이러한 가정에서 출발하여 빈칸에 출현할만한 단어들을 찾고 주변 단어를 살펴보도록 설계되었습니다.

이러한 알고리즘에서 Word2Vec은 아래와 같은 몇 개의 입력 값을 사용자에게 받아 학습을 수행합니다. 각 매개변수가 Word2Vec 학습에서 어떠한 기능을 하는지는 별도의 페이지 또는 토글 설명에서 살펴보겠습니다.