gensim.word2vec

우수민·2021년 6월 29일
0

잡다한 공부

목록 보기
7/13
  • 단어 임베딩(Word Embedding)이란 텍스트를 구성하는 하나의 단어를 수치화하는 방법의 일종이다.

  • 텍스트 분석에서는 흔히 하나의 단어에 인덱스 정수를 할당하는 Bag of Words 방법이다. 이 방법을 사용하면 문서는 단어장에 있는 단어의 갯수와 같은 크기의 벡터가 되고 단어장의 각 단어가 그 문서에 나온 횟수만큼 인덱스 위치의 숫자를 증가시킨다.

# 예를 들어 이러한 리스트가 존재한다면
sample_list = ['우유','쌀밥','계란후라이','모닝롤','찐빵']
# 아래와 같이 할당이 된다
'우유':0
'쌀밥':1
'계란후라이':2
'모닝롤':3
'찐빵':4
  • 단어 임베딩이 된 경우에는 각 단어 벡터를 합치거나(concatenation) 더하는(averaging, normalized Bag of Words) 방식으로 전체 문서의 벡터 표현을 구한다.
"우유": (0.3, 0.2) 
"쌀밥": (0.1, 0.8) 
"계란후라이": (0.5, 0.6) 
"모닝롤": (0.2, 0.9) 
"찐빵": (0.4, 0.7)
  • gensim 기본 모델은 아래와 같다.
model = Word2Vec(sentences=food_combinations, 
                 vector_size=args.emb_dim, 
                 window=7, 
                 min_count=0, 
                 workers=4, 
                 sg=0, 
                 epochs=5000)
- 파라미터
1. size = 워드 벡터의 특징 값. 즉, 임베딩 된 벡터의 차원.
2. window = 컨텍스트 윈도우 크기
3. min_count = 단어 최소 빈도 수 제한 (빈도가 적은 단어들은 학습하지 않는다.)
4. workers = 학습을 위한 프로세스 수
5. sg = 0은 CBOW, 1은 Skip-gram.
  • Word2Vec에 대한 학습을 진행한 후 가장 유사한 단어를 출력하는 model.wv.most_similar 기능이 존재한다.
model.wv.most_similar('된장찌개')
# [('차돌박이찌개', 0.5719358325004578),
# ('감자국', 0.5414227247238159),
# ('김치두부국', 0.5413620471954346),
# ('민물새우찌개', 0.5226819515228271),
# ('동태탕', 0.5208889842033386),
# ('소고기무국', 0.5176742076873779),
# ('고추장찌개', 0.5174623131752014),
# ('대구매운탕', 0.5090301036834717),
# ('오징어국', 0.5076585412025452),
# ('연두부탕', 0.5063160061836243)]
profile
데이터 분석하고 있습니다

0개의 댓글