본문 바로가기
  • 데이터에 가치를 더하다, 서영석입니다.
도전 : 더 나은 사람으로/텍스트 산업 분류 공모전

[2022 통계청 공모전] Word2Vec이란?

by 꿀먹은데이터 2022. 5. 4.

1. Word2Vec

Word2Vec은 말 그대로 단어를 벡터로 바꿔주는 알고리즘

  • 크게 CBOW와 Skip-Gram 두 가지 방식으로 분류된다.
    • CBOW(Continuous Bag of Words)
      • 주변에 있는 단어들을 가지고 중심에 있는 단어를 맞추는 방식
      • 나는 ______에 간다.
      • 주변 단어들을 바탕으로 중심에 있는 단어를 예측
    • Skip-Gram
      • 중심에 있는 단어로 주변 단어를 예측하는 방법
      • _____ 외나무다리 ______
      • 중심 단어를 바탕으로 앞뒤 어떤 단어가 올지 예측

사용자가 주변단어 몇 개를 볼 지(window)를 정해주면

Word2Vec은 말뭉치를 window 크기로 슬라이딩하면서 스크린하며 중심단어별로 주변단어들을 보고

각 단어에 해당하는 벡터들의 요소값들을 조금씩 업데이트함으로써 단어를 벡터로 임베딩

 

 다시 말해 Word2Vec은 window 내에 등장하지 않는 단어에 해당하는 벡터는 중심단어 벡터와 벡터공간상에서 멀어지게끔(내적값 줄이기), 등장하는 주변단어 벡터는 중심단어 벡터와 가까워지게끔(내적값 키우기)

https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/03/30/word2vec/
https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/03/30/word2vec/

Word2Vec의 아키텍처 도시화

가중치행렬 W의 행벡터, u는 은닉층-출력층을 잇는 가중치 행렬 W'의 열벡터.

중심단어 벡터의 그래디언트

Word2Vec은 출력층이 내놓는 스코어값에 softmax를 적용해 확률값으로 변환 이후 정답과 비교하여 역전파(backpropagation)하는 구조이다.

 

결론

  • Word2Vec은 중심단어로 주변단어를, 주변단어로 중심단어를 예측하는 과정에서 단어를 벡터로 임베딩하는 방법론
  • 임베딩된 단어의 내적(inner product)이 코사인 유사도가 되도록 한다. (wordvector to vectorspace)
  • 은닉층 하나인 neural network frame. 비선형 활성함수(ex. sigmoid)를 사용하지 않고 softmax 사용 -> 계산 방식 쉬움

 

2. Glove

GloVe는 2013년 구글에서 개발한 Word2Vec의 단점을 보완

또 GloVe 연구팀은 단어-문맥행렬에 특이값분해(SVD)를 실시해 데이터 차원을 효과적으로 축소하는 한편 노이즈 등을 줄여 내재적인 의미를 이끌어내는 잠재의미분석(LSA)의 단점 또한 언급했음.

https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/04/09/glove/

 

GloVe를 이해해보자! · ratsgo's blog

이번 포스팅에서는 미국 스탠포드대학에서 2014년 개발한 워드 임베딩 방법론인 GloVe에 대해 알아보도록 하겠습니다. 이번 글은 고려대 강필성 교수님 강의를 참고로 했는데요. 저도 완벽히 이해

ratsgo.github.io

 

 

회의 내용

1. NLP를 tokenized need

 

2. model , preprocess

 

‘Noun’을 뽑은 상태에서 한글자 명사를 바탕으로 stop-words라고 판단 가능할까?

--> 결론 : nope..!

 

→ ‘Noun’에서 한글자 불용어들을 정의할 필요가 있어보임.

→ 상위 빈도수를 차지하는 값들을 불용어로 판단할 수 있을지 찾아보자..

 

3. preprocess + stop-words

4. NLP token library searchv and apply - KONLP, SOYNLP, etc

5. model upgrade

 

후.. konlp 다루기가 쉽지 않다. 하지만 도전.

관련 github code

https://github.com/rootofdata/NLP_AI_Industry_classification.git

 

GitHub - rootofdata/NLP_AI_Industry_classification

Contribute to rootofdata/NLP_AI_Industry_classification development by creating an account on GitHub.

github.com