'왕 − 남자 + 여자 = 여왕?' — 단어를 지도 위 좌표(벡터)로 바꾸면, 의미의 가까움을 재고 단어로 산수까지 할 수 있어요.
🖱️ 단어를 클릭하면 선택(보라 테두리, 최대 2개), 다시 클릭하면 해제돼요. 두 개를 고르면 잇는 선과 거리가 나타나요 — 작을수록 비슷해요.
읽는 법: 점 하나가 단어 하나, 위치가 그 단어의 벡터예요. 가까울수록 의미가 비슷합니다. 색은 군집 — 사람·왕족, 수도, 나라, 동물, 과일, 감정. 벡터 연산을 실행하면 빨간 화살표(B→A)와 그걸 C로 옮겨 붙인 점선 화살표가 그려져요 — 관계(방향)를 복사해 붙이는 것이 핵심이에요.
연산 결과 지점(❓)에서 가장 가까운 단어(입력한 세 단어는 제외)를 답으로 골라요 — 실제 word2vec의 most_similar도 똑같이 동작해요.
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쯤