λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“– Theory/NLP

[NLP] Word2Vec μ„€λͺ… | word2vec κ΄€λ ¨ κΉƒν—™ λ ˆν¬μ§€ν† λ¦¬

by 뭅즀 2023. 9. 22.
λ°˜μ‘ν˜•
Word2Vec

 

 

Word2Vec은 μžμ—°μ–΄ 처리 및 ν…μŠ€νŠΈ 뢄석 λΆ„μ•Όμ—μ„œ μ‚¬μš©λ˜λŠ” μ€‘μš”ν•œ μ›Œλ“œ μž„λ² λ”© κΈ°μˆ μ΄λ‹€. μ›Œλ“œ μž„λ² λ”©μ€ 단어λ₯Ό 고차원 λ²‘ν„°λ‘œ ν‘œν˜„ν•˜λŠ” 기술둜, μ΄λŸ¬ν•œ λ²‘ν„°λŠ” 단어 κ°„μ˜ 의미적 μœ μ‚¬μ„±μ„ μΊ‘μ²˜ν•˜κ³  μˆ˜ν•™μ  연산을 톡해 단어 κ°„μ˜ 관계λ₯Ό λΆ„μ„ν•˜λŠ” 데 μ‚¬μš©λœλ‹€.

 

μ΄λ―Έμ§€μ˜ 경우 컴퓨터에 μ €μž₯λ˜λŠ” ν˜•νƒœ μžμ²΄κ°€ 0~255의 RGB κ°’μœΌλ‘œ μ €μž₯λ˜κΈ°μ— 이 값을 κ·ΈλŒ€λ‘œ CNN, Transformer λ“±μ˜ λ”₯λŸ¬λ‹ μ•„ν‚€ν…μ²˜μ— μž…λ ₯으둜 넣을 수 μžˆμ§€λ§Œ, λ‹¨μ–΄μ˜ 경우 μž„λ² λ”©ν•˜λŠ” 과정이 λ³„λ„λ‘œ ν•„μš”ν•˜λ‹€.

Word2Vec은 단어 μž„λ² λ”©μ„ ν•™μŠ΅ν•˜κΈ° μœ„ν•œ 방법 쀑 ν•˜λ‚˜λ‘œ, 두 가지 μ£Όμš” μ•„ν‚€ν…μ²˜μΈ CBOW(Continuous Bag of Words)와 Skip-gram을 μ‚¬μš©ν•˜λŠ”λ°, 이 두 가지 λͺ¨λΈμ€ λ‹€μŒκ³Ό 같이 λ™μž‘ν•œλ‹€.

 

Continuous Bag of Words (CBOW)

CBOW λͺ¨λΈμ€ λ¬Έλ§₯ λ‚΄ μ£Όλ³€ 단어듀을 톡해 타깃 단어λ₯Ό μ˜ˆμΈ‘ν•œλ‹€. 예λ₯Ό λ“€μ–΄, "I am learning ___"λΌλŠ” λ¬Έμž₯μ—μ„œ λΉˆμΉΈμ— λ“€μ–΄κ°ˆ 단어λ₯Ό μ˜ˆμΈ‘ν•˜λŠ” 것이닀. μ£Όλ³€ λ‹¨μ–΄μ˜ μž„λ² λ”© 벑터λ₯Ό ν‰κ· ν•˜μ—¬ 타깃 λ‹¨μ–΄μ˜ μž„λ² λ”© 벑터λ₯Ό μ–»λŠ”λ‹€.

 

Skip-gram

Skip-gram λͺ¨λΈμ€ 타깃 단어λ₯Ό 가지고 μ£Όλ³€ 단어λ₯Ό μ˜ˆμΈ‘ν•œλ‹€. 즉, "learning"을 가지고 "I", "am" λ“±μ˜ μ£Όλ³€ 단어λ₯Ό μ˜ˆμΈ‘ν•˜λŠ” 것이닀.
타깃 단어λ₯Ό 쀑심에 두고 μ£Όλ³€ λ‹¨μ–΄μ˜ μž„λ² λ”© 벑터λ₯Ό ν•™μŠ΅ν•œλ‹€.

 

Word2Vec λͺ¨λΈμ€ λŒ€λŸ‰μ˜ ν…μŠ€νŠΈ 데이터λ₯Ό ν•™μŠ΅ν•˜μ—¬ 단어 κ°„μ˜ 의미적 μœ μ‚¬μ„±μ„ μΊ‘μ²˜ν•˜λ©°, 결과적으둜 μœ μ‚¬ν•œ 의미λ₯Ό 가진 단어듀은 λΉ„μŠ·ν•œ μž„λ² λ”© 곡간에 λ§€ν•‘λœλ‹€. μ΄λŸ¬ν•œ μž„λ² λ”©μ€ λ‹€μ–‘ν•œ μžμ—°μ–΄ 처리 μž‘μ—…μ— μ‚¬μš©λ  수 있으며, 예λ₯Ό λ“€μ–΄ λ¬Έμ„œ λΆ„λ₯˜, 단어 κ°„ 관계 μΆ”λ‘ , 검색 엔진, 기계 λ²ˆμ—­, 감정 뢄석 λ“±μ˜ μž‘μ—…μ—μ„œ μœ μš©ν•˜κ²Œ ν™œμš©λœλ‹€.

Word2Vec은 단어 μž„λ² λ”©μ„ 효율적으둜 ν•™μŠ΅ν•˜κ³  단어 κ°„ 의미적 관계λ₯Ό ν¬μ°©ν•˜λŠ” 데 맀우 효과적인 방법 쀑 ν•˜λ‚˜μ΄λ©°, μžμ—°μ–΄ 처리 λΆ„μ•Όμ—μ„œ 널리 μ‚¬μš©λ˜κ³  μžˆλ‹€

 

Word2Vec ν™œμš©

Word2VecλŠ” 단어 μž„λ² λ”©μ„ μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ˜λ©°, λ¬Έμ„œ λΆ„λ₯˜, μžλ™ μš”μ•½, 검색, μΆ”μ²œ μ‹œμŠ€ν…œ, 기계 λ²ˆμ—­, 감정 뢄석 λ“± λ‹€μ–‘ν•œ μžμ—°μ–΄ 처리 μž‘μ—…μ—μ„œ ν™œμš©λœλ‹€.

 

ν•˜μ§€λ§Œ, 졜근 BERTλ‚˜ GPT 같은 μ–Έμ–΄ λͺ¨λΈλ“€μ€ ν…μŠ€νŠΈλ₯Ό μž„λ² λ”©ν•˜κΈ° μœ„ν•΄ 토큰화(tokenization) 과정을 κ±°μΉœλ‹€. ν† ν°ν™”λŠ” ν…μŠ€νŠΈλ₯Ό μž‘μ€ λ‹¨μœ„λ‘œ λ‚˜λˆ„λŠ” ν”„λ‘œμ„ΈμŠ€λ‘œ, 일반적으둜 단어, μ„œλΈŒμ›Œλ“œ λ˜λŠ” 문자 μˆ˜μ€€μœΌλ‘œ ν…μŠ€νŠΈλ₯Ό λΆ„ν• ν•œλ‹€. μ΄λŸ¬ν•œ 토큰은 λͺ¨λΈμ˜ μž…λ ₯으둜 μ‚¬μš©λ˜λ©°, 각 토큰은 ν•΄λ‹Ή ν…μŠ€νŠΈ 쑰각의 의미적 ν‘œν˜„μ„ λ‚˜νƒ€λ‚΄λŠ” λ²‘ν„°λ‘œ λ³€ν™˜λœλ‹€.

 

 

κ΄€λ ¨ λ ˆν¬μ§€ν† λ¦¬

- word2vec 레포 (1.5k stars) : https://github.com/dav/word2vec

- ν•œκ΅­μ–΄ word2vec인 kor2vec (μ•½ 200 stars) : https://github.com/naver/kor2vec

- 30+ μ–Έμ–΄ word2vec (2.2 stars) : https://github.com/Kyubyong/wordvectors

λ°˜μ‘ν˜•