자연언어처리(Natural Language Processing)에 있어서 word embeddings 을 생성하기 위한 알고리즘이다.
이름 그대로 풀어보면 Word to Vector 로 단어를 벡터로 변환이다. 컴퓨터영역에서 워드 스트링 그대로 처리하기 보다는 숫자로 표현을 해서 처리를 하면 더욱 효율적이다. 이 숫자로 표현을 Embedding 이라 하고 벡터영역에서 숫자를 배치하면 워드간의 거리와 유사도(similarity)를 측정할 수 있다.
가장 유용하게 씌이는 분야는 검색이다. 검색을 하면 단어 단위로 매칭을 하는 것이 아니라 Embeddings 에 의한 벡터 영역에서의 유사도 거리를 측정하여 유사도가 높은 결과부터 화면에 뿌려준다.
아래는 https://jalammar.github.io/illustrated-word2vec/ 의 이미지를 사용해서 간단하게 설명하겠다.
Word Embeddings
단어나 문장을 숫자로 변환(Embedddings)하는 작업을 하는 여러 학습된 모델들이 있다.
- GloVe https://nlp.stanford.edu/projects/glove/
- Hugging face https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2
- OpenAI https://platform.openai.com/docs/guides/embeddings
여기에 Word2Vec 도 포함되고 위의 모델들은 유사도를 자신이 계산해야 하지만, Word2Vec는 특정 단어와 비슷한 단어들을 결과물로서 얻을 수 있다.
아래는 "king" 을 Wikipedia 내용을 GloVe 모델로 Embedding 한 결과이다.
[ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 , -0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234 , -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ] |
50 배열로 되어 있다.
비주얼로 표현하면 아래와 같다. 2에 가까우면 빨간색, -2에 가까우면 파란색이 강하다.
"king", "Man" , "Woman" 를 비교하기 쉽게 비주얼로 나열하면 아래와 같다.
"Man" 과 "Woman"의 유사도가 "king" 보다도 높다는걸 알 수 있다. 이는 이 모델이 정보/이미/연관성을 좀 더 캡쳐했다는 결 알려 준다.
다른 샘플을 보자.
위와 같이 Embeddings 로 변환해서 알 수 있는 포인트는:
- 공통적으로 빨간색의 수직 라인이 있다. ( 특정은 할 수 없지만 공통적인 점이 있다는 것이다. )
- "girl"과 "woman", "boy"와 "man" 이 유사하다는걸 알 수 있다.
- 하지만 "boy"와 "girl" 은 유사점이 있지만, "man"과 "woman" 은 없다. 이는 젊음이라는 컨셉이 많이 반영되었을 수 도 있다.
- "water" 이외에는 사람을 대표하는데 중간에 파란색이 "water"에 있어서는 나타나지 않는다.
- "king"과 "queen"은 유사한데 이는 충성의 컨셉이 들어가 있을 지도 모른다.
Analogies (비교)
Embeddings로 할 수 있는 유명한게 단어간 더하기 빼기이다.
아래와 같이 "king" - "man" + "woman" = "queen" ...
'자연언어처리 (NLP)' 카테고리의 다른 글
stopwords (0) | 2024.03.13 |
---|---|
워드 토큰화 (0) | 2024.03.13 |
(Word2Vec) model training (1) | 2023.12.21 |
(Word2Vec) training (1) | 2023.12.17 |
(Word2Vec) 2. 자연언어처리 모델 (1) | 2023.12.17 |