Word2Vec
word2Vec은 워드 임베딩 기법으로 단어를 벡터형태로 전환하는 기법이다. 2013년 토론토 대학에서 발표했으며 현재까지도 많이 활용되는 기법이다.
신경망 모델을 사용해서 말뭉치에서 단어들의 연관성을 학습한다. 즉 주어진 문맥에서 발생하는 단어를 예측하는 문제로 단어 임베딩 벡터를 학습한다.
word2Vec에는 CBOW와 Skip-Gram 두 가지 방법이 있다.
CBOW vs Skip-Gram
CBOW: 주변 단어를 활용해 중간에 있는 단어 예측
Skip-Gram: 중간 단어를 활용해 주변에 있는 단어 예측
0. 사전 준비
1) 라이브러리 호출
from gensim.models import word2vec
import list_file
2) 데이터 확인
1. Word2Vec 모델 정의
word2vec.Word2Vec(data, size, min_count, window, sg)
- data: 리스트 형태의 데이터
- size: 문자 벡터 차원 수
- min_count: 사용할 단어의 최소 빈도수
- window: 고려할 앞뒤 단어 수
- sg: 0 - CBOW, 1 - Skip-gram
1) CBOW 방식 모델 생성
def CBOW(sentences):
model_cbow = word2vec.Word2Vec(sentences, size=300, min_count=1, window=10, sg=0)
return model_cbow
- sg 옵션을 0으로 하면 CBOW 방식이 적용된다.
2) Skip_Gram 방식 모델 생성
def Skip_Gram(sentences):
model_skipgram = word2vec.Word2Vec(sentences, size=300, min_count=1, window=10, sg=1)
return model_skipgram
- sg 옵션을 1로 하면 Skip_Gram 방식이 적용된다.
3. 모델 결과
model.wv.index2word : Word2Vec 모델인 model에 리스트 데이터 data를 넣은 결과를 반환해주는 변수
idx2word_set_cbow = cbow.wv.index2word
idx2word_set_skipgram = skipgram.wv.index2word
- 학습 결과
- 전체 코드
from gensim.models import word2vec
import list_file
def CBOW(sentences):
model_cbow = word2vec.Word2Vec(sentences, size=300, min_count=1, window=10, sg=0)
return model_cbow
def Skip_Gram(sentences):
model_skipgram = word2vec.Word2Vec(sentences, size=300, min_count=1, window=10, sg=1)
return model_skipgram
def main():
sen1, sen2 = list_file.sen1(), list_file.sen2()
sentences = [sen1, sen2]
cbow = CBOW(sentences)
skipgram = Skip_Gram(sentences)
idx2word_set_cbow = cbow.wv.index2word
idx2word_set_skipgram = skipgram.wv.index2word
print('CBOW: ', idx2word_set_cbow)
print('\nSkip-Gram: ', idx2word_set_skipgram)
return idx2word_set_cbow, idx2word_set_skipgram
if __name__ == '__main__':
main()
반응형
'IT Study > ML & DL' 카테고리의 다른 글
[RNN] RNN, LSTM, GRU 모델 (1) | 2023.12.31 |
---|---|
[CNN] OpenCV 실습 | 이미지 조각 순서변경, 프리윗 필터, 회선처리 (1) | 2023.12.31 |
[DL/NLP] RNN 실습 (with. nsmc data) (1) | 2023.12.23 |
[DL/CNN] CNN 실습 (with. MNIST data) (0) | 2023.12.22 |