単語ベクトルとは、コンピューターが言葉の意味を扱えるよう、単語を意味と関係性を込めた数値の並びに変換したものである。似た意味や似た文脈で使われる単語には似たベクトルが割り当てられるため、数値が近いほど意味が近いという関係が成り立つ。さらに、ベクトルに対して足し算・引き算のような数学的演算を行うことで、「王様から男を引いて女を足すと女王になる」といった意味の計算が可能になる。ただし、この計算は完全に一致するわけではなく、入力語の除外といった処理が前提になっており、得意・不得意のある近似的な仕組みである。


コンピューターは「言葉の意味」をどう扱うのか?
そもそも文字列では意味が伝わらない



昔の方法:疎ベクトルの問題
古典的なアプローチとして「one-hotエンコーディング」がある。語彙が1万語あれば、「りんご」は「りんごの番号の位置だけ1、それ以外は全部0」という1万次元のベクトルになる。


今の方法:密ベクトルで意味を込める


単語ベクトルって結局なに?地図で考えてみよう




似た意味の単語は「近所」に住んでいる


数値の例で実感してみよう
実際、意味の近い単語は数値も似ている。photo を表すベクトルが [0.53, -0.21, 0.02]、image が [0.49, -0.35, 0.01] のように数値がよく似ている——これが「意味が近い」ということの数値的な姿だ。

「王様 − 男 + 女 = 女王」はなぜ成り立つのか?

「方向ベクトル」が関係性を表す





他にもできる「意味の計算」
首都と国の関係も同じように表せる。
Paris − France + Italy→Rome(ローマ)vec(France) − vec(Paris)という方向ベクトルをvec(Germany)に足すとvec(Berlin)のすぐ近くに着く
形容詞の変化も計算できる。
bigger − big + cold→colder(より寒い)

ちょっと待って!実際はどのくらい正確?

注意点① ピッタリ一致するわけじゃない
king − man + woman の計算結果は queen のベクトルと完全に一致するわけじゃない。「語彙40万語の中で一番近い単語が queen になる」という意味だ。
注意点② 入力語を除外するトリックがある
実は計算するとき、入力した king man woman 自身を答えの候補から除外している。除外しないと最も近いベクトルが king 自身になってしまうんだ。

注意点③ 得意・苦手がある
ある研究では、単語ベクトルの類推タスクで「意味カテゴリ」の正解率が33.7%程度、「統語カテゴリ」が55.1%程度という報告もある。完璧には程遠く、カテゴリによって大きく差がある。男女・王と女王の関係は際立った例外的にうまくいくケースで、すべての意味計算がこんなにきれいに成立するわけじゃない。

単語ベクトルはどうやって学習されるのか?

テキスト自体が「答え」になる




Skip-GramとCBOW:2つの学習スタイル
Word2Vecには代表的な2つの学習アーキテクチャがある。
| モデル | 問題の向き |
|---|---|
| Skip-Gram | ある単語を入力 → 周囲に出る単語を予測 |
| CBOW | 周囲の文脈語を入力 → 中央の単語を予測 |


単語ベクトルは実際にどんな場面で使われているのか?

検索・翻訳・レコメンド
検索エンジンが「犬の散歩」と検索したとき「ペットの運動」という記事も引っかけられるのは、「犬」と「ペット」、「散歩」と「運動」のベクトルが近いから。翻訳も、英語の単語ベクトル空間と日本語の単語ベクトル空間を対応付けることで成り立っている。

ChatGPTのような大規模言語モデルとの違いは?



自分でも試せる?


まとめ:単語ベクトルで広がる自然言語処理の世界
今日学んだことを3行で
- 単語ベクトルとは、単語を数値の列(ベクトル)で表したもので、似た意味の単語ほどベクトル空間上で近い点になる——言語に「幾何」を与える仕組みだ。
- 学習の原理は「一緒に使われる単語は似た意味を持つ」という考え方で、人手ラベルなしに大量のテキストから自動で学べる。
- ベクトルには足し算・引き算ができ、意味の関係を「方向」として計算できる——ただし万能ではなく、得意・苦手がある。
単語ベクトルの限界と課題

| 課題 | 内容 |
|---|---|
| 多義性 | 「bank(銀行/川岸)」のような単語に対して1つの平均的なベクトルしか持てず、文脈ごとの意味を区別できない |
| 未知語(OOV) | 学習コーパスになかった単語にはベクトルを与えられない |
| 希少語 | 出現頻度が低い単語は学習する文脈が少なく、精度の低いベクトルになりやすい |
| 文脈非依存 | 1単語1ベクトルで固定されているため、文脈に応じた意味の違いを表現できない |

- FastText:単語をサブワード(部分文字列)に分解することで、未知語や希少語のベクトルも生成できるようにした。
- ELMo・BERT:文脈依存の埋め込みを実現し、同じ綴りの単語でも文脈ごとに異なるベクトルを生成して多義性問題を解決した。
次に学ぶべきステップ

単語ベクトル(Word2Vec / GloVe)
↓ 未知語・希少語を扱いたい
FastText(サブワード分解)
↓ 文脈によって意味を変えたい
ELMo・BERT(文脈依存の埋め込み)
↓ さらに大規模に
GPT・Transformerベースの大規模言語モデル


参考文献
- https://www.elastic.co/what-is/word-embedding
- https://www.elastic.co/what-is/vector-embedding
- https://arxiv.org/pdf/2008.09976
- https://arxiv.org/pdf/2304.00578
- https://image-ppubs.uspto.gov/dirsearch-public/print/downloadPdf/11620512
- https://arxiv.org/pdf/2405.09893
- https://informatics.ed.ac.uk/news-events/news/news-archive/king-man-woman-queen-the-hidden-algebraic-struct
- https://p.migdal.pl/blog/2017/01/king-man-woman-queen-why/
- https://www.analyticsvidhya.com/blog/2021/07/word2vec-for-word-embeddings-a-beginners-guide/
- https://www.tigerdata.com/blog/a-beginners-guide-to-vector-embeddings
- https://medium.com/@sahin.samia/word-embeddings-unveiled-a-beginners-guide-29c4132c1adf
- https://www.marekrei.com/blog/linguistic-regularities-word-representations/
- https://arxiv.org/pdf/2010.03446
- https://arxiv.org/pdf/1912.07506
- https://jalammar.github.io/illustrated-word2vec/


コメント