1. 定義と概要
word2vecとは、2013年にGoogle在籍時のトマス・ミコロフらが発表した、大量のテキストから単語の分散表現を学習するニューラルネットワーク(人間の脳の神経回路を模した計算の仕組み)の手法です。学習後は「王様」から「男」を引いて「女」を足すと「女王」に近いベクトルが得られるというように、ベクトル同士の足し算・引き算で単語の意味関係を計算できる点が代表的な特徴として知られています。
従来、自然言語処理では単語をコンピュータが扱える数値に変換する際、one-hot表現(1つの要素だけが1でほかがすべて0になる、単語を表す疎なベクトル形式)が使われてきました。しかし、この方式では単語同士の意味的な近さを表現できず、語彙が増えるほどベクトルが巨大になるという課題がありました。
word2vecは、分布仮説(周囲に出現する単語が似ていれば意味も似ているという自然言語処理の考え方)にもとづき、ニューラルネットワークで単語を密な低次元ベクトルへ変換する手法として登場しました。周囲に現れる単語が似ている語同士は、ベクトル上でも近い位置に配置されるという発想です。大規模なテキストからの学習を効率化した点が、普及の背景です。
2. 試験対策ポイント
word2vecには、CBOW(Continuous Bag-of-Words。周辺の単語から中心の単語を予測する学習方式)とスキップグラム(skip-gram。中心の単語から周辺の単語を予測する学習方式)という2つの学習方式があります。両者は予測の向きが逆の関係にあり、次のように整理できます。
| 学習方式 | 入力にするもの | 予測する対象 |
|---|---|---|
| CBOW | 周辺の単語(コンテキスト) | 中心の単語 |
| スキップグラム | 中心の単語 | 周辺の単語 |
それぞれの内部の計算手順は別のテーマとして扱われる領域のため、ここでは学習方式が2つに分かれ、向きが逆であるという位置づけの違いを整理しておきたいところです。名称と向きの組み合わせを取り違えないことが、試験対策では第一のポイントになります。
word2vecが普及した背景には、Negative Sampling(負例サンプリング。全単語ではなく一部の単語だけを比較対象に使って学習を効率化する工夫)があります。この工夫により、数百万語規模のコーパス(自然言語処理の学習に使う大量の文章データ)からでも、現実的な計算量で単語ベクトルを学習できるようになりました。
一方で、word2vecは1つの単語に対して1つのベクトルしか割り当てないため、複数の意味を持つ語である多義語(複数の異なる意味を持つ単語)を文脈によって区別できません。また、未知語(OOV)は、学習に使ったコーパスに存在しない単語(Out-of-Vocabulary の略)を指し、ベクトルを持たず扱えないという限界もあります。
こうした限界を補う手法として、単語を文字の並び(サブワード)に分解して学習することで未知語にも対応できるfastText(単語を文字の並び=サブワードに分解して学習し未知語にも対応できる手法)が登場しました。あわせて、文脈に応じて単語ベクトルを動的に変化させることで多義語に対応するELMo(文脈に応じて単語のベクトルを動的に変化させる手法)も登場しています。それぞれの仕組みの詳細は、別の記事が扱うテーマです。
3. 関連概念との比較・相違点
CBOWとスキップグラムは、同じword2vecに内包される2つの学習方式という位置づけです。CBOWは周辺の単語から中心の単語を予測し、スキップグラムは中心の単語から周辺の単語を予測するという向きの違いがあります。
ただし、どちらも学習後は単語ごとに1つのベクトルを持つ点は共通しています。最大の違いは予測の方向にあり、内部の計算方法はここでは扱いません。
word2vecと、その後に登場したfastText・ELMo との関係は、単語ベクトルの持ち方の違いとして整理できます。
| 手法 | 単語ベクトルの持ち方 | 補える限界 |
|---|---|---|
| word2vec | 単語ごとに固定された1つのベクトル | ー |
| fastText | 単語を文字の並び(サブワード)に分解して構成 | 未知語(OOV) |
| ELMo | 前後の文脈に応じて動的に変化 | 多義語 |
fastText との最大の違いは、未知語(OOV)への対応力です。word2vecは学習に使ったコーパスに存在しない単語のベクトルを持てませんが、fastText は単語を文字の並びに分解して学習するため、学習データに無かった単語でも構成要素から近いベクトルを推測できます。
ELMo との違いは、多義語への対応です。word2vecは1つの単語に対して固定された1つのベクトルしか持たないため、複数の意味を持つ語を文脈で区別できません。一方でELMo は、同じ単語でも前後の文脈に応じてベクトルを動的に変化させる仕組みを持ち、多義語の区別に対応しています。
4. ビジネス・実務での活用シナリオ
検索エンジンやECサイトでは、検索語と商品名・関連語のベクトルの近さを計算することで、表記揺れや同義語を吸収した検索結果を返す仕組みに使われています。同じ意味でも表現が異なる言葉をベクトルの近さでつなげられるため、利用者が求める商品によりたどり着きやすくなります。
推薦システムの分野では、閲覧履歴やクリック履歴に含まれる商品IDの並びをword2vecと同じ考え方で学習し、似た文脈で登場するアイテム同士を近いベクトルとして扱う手法が使われています。購入履歴だけでは見えにくい商品同士のつながりをベクトルの近さから見つけ出し、推薦候補として提示できる点に意義があります。
カスタマーサポートやFAQの領域では、問い合わせ文とFAQの文章をそれぞれベクトル化し、類似度を計算することで、表現が異なっていても意味が近い質問と回答を対応付ける仕組みに応用されています。言い回しの違いを人手で網羅しなくても、意味の近い質問に自動で回答を割り当てられる点が実務上の効果です。
5. 要点まとめ
- word2vecは2013年にGoogleのトマス・ミコロフらが発表した、単語をベクトルとして学習する自然言語処理の手法で、CBOWとスキップグラムという予測の向きが逆の2つの学習方式を持ちます。
- Negative Sampling(負例サンプリング)などの効率化の工夫により、大規模なコーパスからでも現実的な計算量で単語ベクトルを学習できる点が普及の背景にあります。
- 1つの単語に1つのベクトルしか割り当てないため多義語の区別や未知語(OOV)への対応ができず、この限界は未知語に強いfastText と文脈依存表現を持つELMo によって補われています。
6. 確認問題
問1word2vecは、周辺の単語から中心の単語を予測するCBOWと、中心の単語から周辺の単語を予測するスキップグラムという、予測の向きが逆の2つの学習方式を持つ。
解答・解説をみる
○ 正しい
CBOWとスキップグラムはどちらもword2vecに内包される学習方式で、予測の向きが逆の関係にあります。内部の計算処理までは、本記事では取り上げません。
問2word2vecは、Negative Sampling などの効率化の工夫により、大規模なコーパスからでも現実的な計算量で単語ベクトルを学習できる。
解答・解説をみる
○ 正しい
全単語との比較ではなく一部の単語だけを比較対象にサンプリングして学習を進める工夫により、数百万語規模のデータでも学習が現実的な時間で行えます。
問3word2vecは、文脈に応じて同じ単語でも異なるベクトルを動的に生成できるため、複数の意味を持つ語(多義語)の区別に対応している。
解答・解説をみる
× 誤り
正しくは、word2vecは単語ごとに1つの固定されたベクトルしか持たないため多義語を区別できません。文脈に応じて単語ベクトルを動的に変化させるのはELMo など文脈依存型モデルの特徴です。

