← AI 놀이터 홈으로

🗺️ 워드 임베딩 (Word Embedding)

'왕 − 남자 + 여자 = 여왕?' — 단어를 지도 위 좌표(벡터)로 바꾸면, 의미의 가까움을 재고 단어로 산수까지 할 수 있어요.

📖 따라하기 가이드 — 1 / 6 단계

Step 1. 단어를 지도 위에 올려놓기

컴퓨터는 "고양이"라는 글자를 몰라요 — 숫자(좌표)로 바꿔야 계산할 수 있어요. 이렇게 단어를 숫자 벡터로 바꾼 것이 워드 임베딩(word embedding)입니다. 이 지도에서 점 하나가 단어 하나예요. 읽는 법은 딱 하나 — 가까이 있으면 의미가 비슷하다! 동물끼리, 과일끼리 모여 있는 게 보이나요?

🖱️ 단어를 클릭하면 선택(보라 테두리, 최대 2개), 다시 클릭하면 해제돼요. 두 개를 고르면 잇는 선과 거리가 나타나요 — 작을수록 비슷해요.

읽는 법: 점 하나가 단어 하나, 위치가 그 단어의 벡터예요. 가까울수록 의미가 비슷합니다. 색은 군집 — 사람·왕족, 수도, 나라, 동물, 과일, 감정. 벡터 연산을 실행하면 빨간 화살표(B→A)와 그걸 C로 옮겨 붙인 점선 화살표가 그려져요 — 관계(방향)를 복사해 붙이는 것이 핵심이에요.

🎛️ 벡터 산수 — A − B + C

−+

📊 지금 상태

선택한 단어
—
두 단어 사이 거리
단어 2개 선택
최근 연산 결과
—
결과 지점 좌표
—

연산 결과 지점(❓)에서 가장 가까운 단어(입력한 세 단어는 제외)를 답으로 골라요 — 실제 word2vec의 most_similar도 똑같이 동작해요.

🧮 수식과 파이썬

거리 = √( (a₁−b₁)² + (a₂−b₂)² )
두 점의 가로 차이와 세로 차이로 거리를 구해요 — 거리가 작을수록 의미가 비슷해요. (실제 word2vec은 방향을 비교하는 코사인 유사도를 자주 써요)
🐍 파이썬 코드로 보면? (펼치기)
from gensim.models import Word2Vec

# 문장 속에서 "주변 단어 맞추기"를 반복 학습하면
# 단어마다 벡터(좌표)가 저절로 만들어져요
sentences = [["왕", "은", "남자", "다"], ...]  # 실제로는 수백만 문장
model = Word2Vec(sentences, vector_size=300, window=5)

# 왕 - 남자 + 여자 ≈ ?  (벡터 산수)
print(model.wv.most_similar(positive=["왕", "여자"],
                            negative=["남자"], topn=1))
# → [('여왕', 0.87)]  단어로 산수가 실제로 통해요!

# 두 단어가 얼마나 비슷한지 재기 — 실제 word2vec은 "거리" 대신
# 방향을 비교하는 "코사인 유사도"를 자주 써요 (1에 가까울수록 비슷).
# 진짜 임베딩은 원점 중심으로 퍼진 300차원 벡터라 방향 비교가 잘 통해요.
print(model.wv.similarity("고양이", "개"))  # 0.9쯤