単語を"ベクトル"にするとは?
— ゼロからわかる Word Embedding
2025-04-28
言葉を数字の並び=ベクトルに変換すると、コンピュータは『意味』を計算できます。地図・方位磁石のたとえで、初心者でも直感的に理解できるようにまとめました。
そもそも"ベクトル"って何?
項目 | ざっくり説明 |
---|---|
スカラー | 1 つの数字(温度 23℃ など) |
ベクトル | 方向と大きさを持つ数字のセット(「北東へ 3 km」など) |
イメージ: 単語を "地図上の点" に置くと、距離や方向で意味の近さ を測れるようになる。
🗺️
地図
🧭
方位磁石
📏
距離
単語 → ベクトル化 3 ステップ
-
語彙を用意
例:{king, queen, man, woman, apple, orange …} -
コンテキストを集める
「king は king of England のように man, queen と一緒に出現」
大量テキストから共起(一緒に出る)パターンを数える -
統計を圧縮して座標化
Word2Vec / GloVe などのアルゴリズムが
"似たコンテキストなら近い座標" になるように学習
📚
語彙
👯
共起
📊
座標
具体例:Word2Vec のしくみ
工程 | 何をしている? |
---|---|
Skip-gram | 1 単語 → 周囲の単語を予測(例:king → queen , royal ) |
CBOW | 周囲の単語 → 中央の単語を予測(例:the ___ and → king ) |
"当たり" や "ハズレ" を通じて 重み を更新 → ベクトル完成
ポイント: 予測がうまくいく=単語の意味空間が「いい感じ」に配置された証拠。
Skip-gram の例
context
→
target
"the king of"
→
the, of
ベクトルだからこそ出来る"意味の計算"
-
➕
足し算・引き算が通用
king - man + woman ≈ queen"男性的要素" を引いて "女性的要素" を足すと
queen
に近づく -
📏
近さ = 類似度
コサイン類似度 1.0 は同じ向き、0 は無関係
apple
とorange
は 0.85、apple
とkeyboard
は 0.1 など -
🔍
クラスタリング
動物/食べ物/感情… 自然にグループ化できる
空間に配置された単語同士の関係性が
数学的な操作で表現できる!
最新の流れ:文脈ベクトルへ
世代 | 代表技術 | 特徴 |
---|---|---|
第1世代 | Word2Vec, GloVe | 単語ごとに固定ベクトル |
第2世代 | FastText | 未知語をサブワードで表現 |
第3世代 | BERT, GPT | 文脈依存:同じ "bank" でも「川岸」か「銀行」かを区別 |
文脈ベクトル (Contextual Embedding) により、多義語も正しく扱えるように。
"bank" という単語の場合:
「川の土手」
🏞️
≠
「お金の銀行」
🏦
文脈によって違うベクトルになる!
どこで使われている?
- 🔍 検索エンジン:クエリと文書の意味的近さで順位付け
- 🤖 チャットボット:ユーザ入力をベクトル化 → 意図を推定
- 🛒 レコメンド:商品説明やレビューをベクトルにして類似アイテム抽出
- 🌐 機械翻訳:意味距離を保ったまま別言語に写像
ベクトル空間の強み
言葉の「近さ」や「関係性」を
コンピュータが理解できる形に変換!
まとめ
- 単語をベクトルにすると、計算で意味操作 が可能に
- 学習は "共起パターンを似せる" ことで自然言語の統計を圧縮
- 現在は 文脈依存ベクトル で、同じ単語でも使い方に応じた座標を取得
これで 「単語をベクトルにする」とは
"言葉を地図に置くこと" とイメージできたはず。
"言葉を地図に置くこと" とイメージできたはず。
次は実際に Python のライブラリ(
gensim
, sentence-transformers
など)で自作ベクトルを試してみましょう!