All about Machine-Learning/NLP

워드 벡터(Word Vector) -CBOW, Skip-gram

※ 이 글은 chatGPT를 기반으로 작성한 글입니다.

 

① 워드 벡터(word vector)는 단어들을 벡터 공간에 표현함으로써 수치화된 벡터로 변환해 컴퓨터가 단어의 의미를 이해하고 처리할 수 있도록 도와준다.

  ㉠ 예를 들어 "사과", "바나나", "토마토", "트럭"이라는 네 개의 단어들을 수학적인 벡터로 나타내는 것이다.

② 워드 벡터의 대표적인 임베딩 기법으로 Word2Vec과 GloVe가 존재한다.

  ㉠ Word2Vec에는 Continuous Bag of Word(CBOW)와 Skip Gram이라는 두 가지 기본 모델이 있다.

    ⓐ CBOW는 주변 단어들을 통해 중심 단어를 예측하는 방식이다.

    ⓑ Skip Gram은 중심 단어를 통해 주변 단어를 예측하는 방식이다.

② CBOW 모델을 훈련시키는 코드는 다음과 같이 구성할 수 있다.

 

  ㉠ 우선 pip를 이용해 Gensim과 NLTK 라이브러리를 설치할 수 있다.

 

  ㉡ 코드를 구성하기 위해 gensim 과 nltk 라이브러리를 임포트한다.

 

  ㉢ 간단한 문장들로 이루어진 데이터셋을 준비한다.

 

  ㉣ NLTK 라이브러리의 word_tokenize 함수를 이용하여 각 문장을 단어로 분리한다.

 

  ㉤ Word2Vec 함수를 사용하여 CBOW 모델을 훈련시킨다.

    ⓐ 매개변수 vector_size는 벡터의 차원을 의미한다.

    ⓑ 매개변수 window는 문맥 윈도우의 크기를 의미한다.

    ⓒ 매개변수 min_count는 단어 최소 빈도를 의미한다.

    ⓓ 매개변수 workers는 병렬 처리에 사용할 스레드 수를 의미한다.

    ⓔ 매개변수 sg는 모델의 타입(CBOW는 0, Skip-Gram은 1)을 의미한다.

 

  ㉥ 모델에 대한 요약 정보는 다음과 같다.

 

    ⓐ vocab은 모델의 어휘집(vacabulary)에 있는 고유 단어의 수를 나타낸다. 따라서, 모델이 11개의 고유한 단어를 학습했음을 의미한다.

    ⓑ vector_size 는 각 단어에 대해 생성된 벡터의 차원 수를 나타낸다. 따라서, 각 단어가 100차원의 벡터로 표현됨을 의미한다.

    ⓒ alpha는 학습률(learning rate)을 의미한다.

  ㉦ 'dog'와 유사한 단어를 찾기 위해 다음과 같은 코드를 입력할 수 있다.

 

 

③ Skip-gram 모델을 훈련시키는 코드는 다음과 같이 구성할 수 있다.

 

  ㉠ Word2Vec의 매개변수 sg의 인자로 1을 전달할 경우 skip-gram을 사용할 수 있다.