単語を平面(2次元の地図)に置いて、「似たことばは近く、関係が同じペアは同じ向き」に並べてみる体験アプリです。 コンピュータが言葉を「数(ベクトル)」として扱う word2vec の考え方を、手を動かして体感できます。
👉 アプリをはじめる (演習が終わったら、このページに戻って下の解説を読んでみてください)
最初からいくつかの単語は 動かせない状態で置いてあります。これは「地図の向きの目印(ヒント)」です。
総合点は、2つのスコアを混ぜて計算しています。
\[ \text{総合点} = 0.7 \times \text{score1} + 0.3 \times \text{score2} \]
順番に見ていきましょう。
word2vec の世界では、地図の「向き」や「大きさ」そのものには意味がありません。 大事なのは ことばどうしの位置関係(どれが近くて、どれが遠くて、どっち向きか)です。
たとえば下の2つの地図は、回したり大きさを変えただけで「形」は同じです。 だから どちらも正解 とみなしたい。
地図A 地図B(Aを回しただけ)
ねこ いぬ
・ ・
・いぬ ねこ・
そこで score1 では、回したり・裏返したり・拡大縮小したり・平行移動しても OK という前提で、 お手本にいちばんピッタリ重なるように合わせてから、ズレを測ります。 この「いちばんよく重ねる」やり方を、数学では プロクラステス解析(Procrustes analysis) と呼びます。
あなたの配置を \(U\)、お手本を \(R\) とします(どちらも各単語の \((x, y)\) 座標の集まり)。
① 真ん中をそろえる(平行移動をなくす)
それぞれの「重心(平均の位置)」を原点に移動します。
\[ u_i' = u_i - \bar{u}, \qquad r_i' = r_i - \bar{r} \]
ここで \(\bar{u}\) は全部の点の平均の位置です。
② 大きさをそろえる(スケールをなくす)
全体の広がり(大きさ)を1にそろえます。
\[ \hat{u}_i = \frac{u_i'}{\sqrt{\sum_i \|u_i'\|^2}} \]
お手本 \(R\) も同じようにそろえます。
③ いちばん重なるように回す(回転・反転)
あなたの地図を「クルッ」と回して(必要なら裏返して)、お手本にいちばん近づく角度を探します。 2次元なら、回転は次の行列で表せます。
\[ \text{回転} = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix} \]
「いちばん近づく角度 \(\theta\)」は計算で一発で求められます(特異値分解 SVD という方法を使います)。
④ ズレ(残差)を測って点数にする
重ね合わせたあとに残った「ズレの大きさ」\(d\) を測ります。
\[ d = \sqrt{\sum_i \|\hat{r}_i - \hat{u}_i^{\text{(重ねた後)}}\|^2} \]
ズレが小さいほど高得点になるように変換します(イメージ)。
\[ \text{score1} = 100 \times \max\!\left(0,\; 1 - \frac{d}{d_{\max}}\right) \]
つまり 「形がそっくり = 高得点」。向きや大きさがちがっても、形が合っていれば満点に近づきます。
問題ごとに「このペアは近いはず」「このペアは遠いはず」というルールが決まっています。 score2 は、そのルールを どれだけ守れたか(達成率) です。
\[ \text{score2} = 100 \times \frac{\text{守れたルールの数}}{\text{ルール全体の数}} \]
形(score1)は合っていても、特定のペアの距離がイマイチなときに、ここで差がつきます。
このアプリは体験用に 2次元(平面) にしていますが、本物の word2vec は単語を 数百次元(たとえば100〜300個の数の並び)のベクトルで表します。次元が多いほど、 「色」「大きさ」「気持ち」みたいなたくさんの意味の軸を同時に表せます。
本物では、ことばの近さを測るのに コサイン類似度(ベクトルの「向き」の近さ)をよく使います。
\[ \cos(\boldsymbol{a}, \boldsymbol{b}) = \frac{\boldsymbol{a}\cdot\boldsymbol{b}}{\|\boldsymbol{a}\|\,\|\boldsymbol{b}\|} \]
有名な例として、ベクトルどうしの足し算・引き算で意味の関係が表せることがあります。
\[ \text{king} - \text{man} + \text{woman} \approx \text{queen} \]
(「王」から「男」を引いて「女」を足すと「女王」に近づく、というイメージ)
このアプリで「同じ関係のペアは同じ向き・同じ距離になる」と感じた感覚が、 実はこの足し算・引き算の世界につながっています。
この教材はオープンキャンパス体験用に作成されています。