ํค์๋
- ์๋ฒ ๋ฉ(Embedding) (vs ์ํซ์ธ์ฝ๋ฉ)
- Word2Vec
- CBoW, Skip-gram
Ditributed Representation
- ๋ถํฌ ๊ฐ์ค : "๋น์ทํ ์๋ฏธ๋ฅผ ์ง๋ ๋จ์ด๋ค๋ผ๋ฆฌ ๋ชจ์ฌ์๋ค" == ์ ์ ์์ข
- ๋ถ์ฐ ํํ(Distributed Representation) : ๋ถํฌ ๊ฐ์ค์ ์ ์ ๋ก, ๋จ์ด๋ฅผ ๋ฒกํฐํ
- ์-ํซ ์ธ์ฝ๋ฉ(One-Hot Encoding)
- ๋ฒ์ฃผํ ๋ณ์๋ฅผ ๋ฒกํฐํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋
- ์ง๊ด์ ์ด๊ณ ์ฝ๊ฒ ์ดํดํ ์ ์์
- ๋จ์ : ์ฝ์ฌ์ธ ์ ์ฌ๋๋ฅผ ๊ตฌํ ์ ์์(ํญ์ ๋ด์ ๊ฐ์ด 0, ๋จ์ด ์ฌ์ด ๊ด๊ณ ํ์ ๋ถ๊ฐ), ์ฐจ์์ ์ ์ฃผ
- ์๋ฒ ๋ฉ(Embedding)
- ๋จ์ด๋ฅผ ๊ณ ์ ๋ ๊ธธ์ด์ ๋ฒกํฐ(์ฐจ์์ด ์ผ์ ํ ๋ฒกํฐ)๋ก ํํ
- 0, 1๋ก๋ง ์ด๋ฃจ์ด์ง ์ํซ์ธ์ฝ๋ฉ๊ณผ๋ ๋ค๋ฅด๊ฒ ์ฐ์์ ์ธ ๊ฐ์ ๊ฐ์ง ๋ฒกํฐ๋ก ํํ
์๋ฒ ๋ฉ
์์ฒด์ ๊ฐ๋ ์ NLP ๋ฟ๋ง์ด ์๋ ๋ค๋ฅธ ๋ฅ๋ฌ๋ ๋ถ์ผ์์๋ ๋ฑ์ฅํ๋ ๊ฐ๋
Word2Vec
- ๋จ์ด๋ฅผ ๋ฒกํฐ๋ก ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋๋ ์๋ฒ ๋ฉ ๋ฐฉ๋ฒ ์ค ํ๋
- CBoW ๋ฐฉ๋ฒ(Continuous Bag-of-Words)
- ์ฃผ๋ณ ๋จ์ด๋ฅผ input ์ผ๋ก ์ค์ฌ ๋จ์ด๋ฅผ ์์ธก
- Skip-gram ๋ฐฉ๋ฒ
- ์ค์ฌ ๋จ์ด๋ฅผ input ์ผ๋ก ์ฃผ๋ณ ๋จ์ด๋ฅผ ์์ธก
- ์ญ์ ํ ๊ณผ์ ์์ ํ์ต์ด ๋ง์ -> ์ผ๋ฐ์ ์ผ๋ก CBow ๋ณด๋ค ์ฑ๋ฅ์ด ์ข๊ณ , ๊ณ์ฐ๋์ด ํฌ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์๋ชจ
Word2Vec ๋ชจ๋ธ์ ๊ตฌ์กฐ(Skip-gram ๊ธฐ์ค)
- ์ ๋ ฅ์ธต : ์-ํซ ์ธ์ฝ๋ฉ๋ ๋จ์ด ๋ฒกํฐ, ๋ ธ๋์๋ ๋ฒกํฐ์ ์ปฌ๋ผ ์ ์ฆ, ๊ฒฐ๊ตญ์ ์ถ๋ ฅ์ธต๊ณผ ๋ ธ๋์๊ฐ ๊ฐ์
- ์๋์ธต : ์๋ฒ ๋ฉ ๋ฒกํฐ์ ์ฐจ์ ์ ๋งํผ์ ๋ ธ๋๋ก ๊ตฌ์ฑ(์ธต์ 1๊ฐ, ์ฆ ๋ฅ๋ฌ๋์ ์๋)
- ์ถ๋ ฅ์ธต : ๋จ์ด ๊ฐ์๋งํผ์ ๋ ธ๋๋ก ์ด๋ฃจ์ด์ง, ํ์ฑํ ํจ์๋ก ์ํํธ ๋งฅ์ค ์ฌ์ฉ
Word2Vec ํ์ต์ ์ํ ํ์ต ๋ฐ์ดํฐ ๋์์ธ ๊ฐ๋
์์ ๋ฌธ์ฅ) "I want to be a DS" ์ด๊ณ Window ์ฌ์ด์ฆ == 2 ์ผ๋,
- ์ค์ฌ ๋จ์ด : i , ์ฃผ๋ณ๋จ์ด : want, to
- ์ค์ฌ ๋จ์ด : want, ์ฃผ๋ณ๋จ์ด : I, to, be
- ์ค์ฌ ๋จ์ด : to, ์ฃผ๋ณ๋จ์ด : I, want, be, a
- ์ค์ฌ ๋จ์ด : be, ์ฃผ๋ณ๋จ์ด : want, to, a, ds
- ์ค์ฌ ๋จ์ด : a, ์ฃผ๋ณ๋จ์ด : to, be, ds
- ์ค์ฌ ๋จ์ด : ds, ์ฃผ๋ณ๋จ์ด : be, a
์ฆ, Skip-gram ๊ธฐ์ค ์ค์ฌ ๋จ์ด๋ input
, ์ฃผ๋ณ ๋จ์ด๋ฅผ output
์ผ๋ก ํ๋ ๋ค์ค ๋ถ๋ฅ ๊ฐ๋
Word2Vec ์๋ฒ ๋ฉ์ ์๋ฏธ ๋ฐ ์๊ฐํ
- Word2Vec์ ํตํด ์ป์ ์๋ฒ ๋ฉ ๋ฒกํฐ๋ค์ ๋จ์ด ๊ฐ์ ์๋ฏธ์ /๋ฌธ๋ฒ์ ๊ด๊ณ๊ฐ ๋ฐ์๋์ด์์
gensim ํจํค์ง
- gensim์ Word2Vec์ผ๋ก ์ฌ์ ํ์ต๋ ์๋ฒ ๋ฉ ๋ฒกํฐ๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํด๋ณผ ์ ์๋ ํจํค์ง
import gensim.downloader as api
wv = api.load('word2vec-google-news-300') # ๊ตฌ๊ธ๋ด์ค 300๋ง๊ฐ์ ๋จ์ด์ ๋ํ ์๋ฒ ๋ฉ ๋ฒกํฐ๋ฅผ ๊ฐ์ ธ์ด
vec_king = wv['king']
print(vec_king) # ์๋ฒ ๋ฉ ๋ฒกํฐ๊ฐ์ด ์ถ๋ ฅ๋จ
์ถ๊ฐ
๋ง๋ญ์น ๋ด์ ์๋ ๋จ์ด์ ๊ฒฝ์ฐ OOV(Out Of Voca) ๋ผ๊ณ ํจ
๋ํ tokenizer๋ ์ข
๋ฅ๊ฐ ๋ค์ํ๋ค๋ ๊ฒ! (keras์๋ ์๊ณ spacy์๋ ์๊ณ ๋ฑ๋ฑ)
์ด์ธ์ ์ฝ๋๋ ๊ณต์๋ฌธ์๋ฅผ ๊ผญ๊ผญ๊ผญ ์ฐธ๊ณ ํ ๊ฒ!!!
'๐ฟ Data > ๋ถํธ์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] 79. ์ธ์ฝ๋-๋์ฝ๋, Attention (0) | 2022.03.08 |
---|---|
[TIL]78. ์ํ ์ ๊ฒฝ๋ง(RNN) (0) | 2022.03.04 |
[TIL]76. NLP(Natural Language Processing) (0) | 2022.03.02 |
[TIL]75. ์ ๊ฒฝ๋ง ๊ฐ๋ ์ ๋ฆฌ (0) | 2022.03.01 |
[TIL]74. ์ ๊ฒฝ๋ง - Hyper parameter (0) | 2022.02.25 |