「犬」=[1, 0, 0]、「猫」=[0, 1, 0]、「鳥」=[0, 0, 1]。単語を数値にする最もシンプルな方法がワンホットベクトルです。仕組みは一目でわかるほど単純ですが、「なぜこれではダメで、分散表現が生まれたのか」という限界とセットで理解することが、自然言語処理の学習の出発点になります。

📖 ひと言でいうと

ワンホットベクトルとは、各単語を「該当する位置だけが1で、それ以外はすべて0」の高次元ベクトルで表現する、テキストデータの数値化手法の1つです。

例えるなら、クラスの出席簿で「自分の欄にだけ○を付ける」方式です。語彙(扱う単語の一覧)に含まれる単語の数だけマス目を用意し、その単語のマスにだけ1を立てます。1つだけ「熱い(hot)」マスがあることからone-hotと呼ばれます。

🖼 1枚でわかるワンホットベクトル

ワンホットベクトル
  • 定義 — 該当単語の位置のみ1、他はすべて0の高次元ベクトルで単語を表現
  • — 語彙{犬,猫,鳥}なら 犬=[1,0,0]、猫=[0,1,0]、鳥=[0,0,1]
  • 利点 — 各単語を独立した次元で表現でき、カテゴリカルデータの数値化に有用
  • 課題① — 語彙が増えると次元が増大し、計算資源・メモリを消費
  • 課題② — 「犬」と「猫」の意味的な近さを表せない → 分散表現の登場へ
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

テキストデータを数値化する手法の一つとしてワンホットベクトルがある。これは、各単語を高次元のベクトルで表現し、該当する単語の位置のみを1とし、他の位置を0とする方法である。例えば、語彙が「犬」「猫」「鳥」の3つからなる場合、「犬」は[1, 0, 0]、「猫」は[0, 1, 0]、「鳥」は[0, 0, 1]と表現される。ワンホットベクトルの利点として、単語間の関係性を持たず、各単語を独立した次元で表現できる点が挙げられる。これにより、カテゴリカルデータを数値データとして扱う際に有用である。しかし、語彙数が増加するとベクトルの次元も増大し、計算資源やメモリの消費が大きくなるという課題がある。また、ワンホットベクトルは単語間の意味的な類似性を捉えることが難しい。例えば、「犬」と「猫」は意味的に近いが、ワンホットベクトルでは全く異なる次元で表現されるため、類似性を反映できない。この問題を解決するために、単語の意味や文脈を考慮した分散表現(Word2VecやBERTなど)が開発され、広く利用されている。

この説明は「仕組み→利点→2つの課題→解決策(分散表現)」という物語構造になっています。仕組みは「該当位置のみ1、他は0」の一言で済むので、試験対策としては後半、つまり課題と分散表現へのつながりが本番です。

利点の「単語間の関係性を持たず独立に表現できる」は、裏を返せばそのまま課題(類似性を反映できない)になる、という表裏の関係も押さえておきましょう。

🔍 しっかり理解する

作り方は3ステップ

語彙を作る
扱う単語の一覧を用意(例: 犬・猫・鳥)
番号を割り当てる
犬=1番目、猫=2番目、鳥=3番目
ベクトル化
自分の番号の位置だけ1、他は0にする

重要なのは、ベクトルの次元数=語彙数になるという点です。語彙が3語なら3次元で済みますが、実際の日本語処理では語彙が数万〜数十万語になるため、1単語を表すのに数万〜数十万次元のベクトルが必要になります。しかもそのほとんどが0という、極めて「疎(スパース)」な表現です。

2つの限界:次元の爆発と「意味オンチ」

第1の課題は効率です。語彙数の増加とともに次元が増大し、計算資源やメモリの消費が大きくなります。10万語の語彙で100万文書を処理すれば、0だらけの巨大なデータを延々と扱うことになります。

第2の課題はより本質的です。ワンホットベクトルでは、「犬」と「猫」(意味的に近い)も、「犬」と「鳥」(やや遠い)も、まったく同じように「異なる次元」で表現されます。どの単語ペアを取ってもベクトル同士の距離や角度は同一で、意味の近さの情報が一切含まれません。機械にとっては全単語が「等しく無関係」に見えてしまうのです。

限界が生んだ次の一手:分散表現

この「意味的な類似性を反映できない」問題を解決するために開発されたのが、単語の意味や文脈を考慮した分散表現(Word2VecやBERTなど)です。分散表現は低次元の密なベクトルに意味を持たせ、「犬」と「猫」が近くに配置される空間を作ります。つまりワンホットベクトルは、単なる古い手法ではなく、「何ができないか」を明確にすることで分散表現・単語埋め込みという発展を生んだ出発点として位置づけられます。

💡 具体例で考える

「犬」と「猫」の距離を測ってみる

語彙{犬, 猫, 鳥}で、犬=[1, 0, 0]、猫=[0, 1, 0]としましょう。この2つのベクトルの内積は 1×0 + 0×1 + 0×0 = 0 です。同様に、犬と鳥の内積も0。つまり、どの単語の組み合わせでも「類似度ゼロ」という結果になります。人間には自明な「犬と猫は似ている」という感覚が、この表現ではまったく数値に現れない——これがワンホットベクトルの限界を示す最小の実例です。

機械学習の入力としては今も現役

一方で、ワンホットベクトル自体は今も広く使われています。たとえば「血液型(A・B・O・AB)」のようなカテゴリカルデータを機械学習モデルに入力する際、A型=[1,0,0,0]のように変換する処理(one-hotエンコーディング)は定番の前処理です。カテゴリ同士に順序や距離の関係がない場合、あえて「各カテゴリを独立した次元で表す」ことが適切だからです。また、ニューラルネットワークで単語埋め込みを学習する際も、入力層では単語をワンホット形式で与え、そこから低次元の埋め込みへ変換するという構成が使われます。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • 分散表現・単語埋め込みとの違い — ワンホットは「高次元・疎・意味の類似性なし」、分散表現(単語埋め込み)は「低次元・密・意味の類似性を反映」です。ワンホットの限界を解決するのが分散表現、という因果関係で覚えましょう。
  • BoW(Bag-of-Words)との混同 — ワンホットベクトルは「1つの単語」を表す表現です。一方BoWは「文書全体」を単語の出現(頻度)の集まりで表す方法で、対象の粒度が異なります。
  • 「時代遅れの無価値な手法」ではない — 意味の類似性が不要なカテゴリカルデータの数値化では現在も有用で、埋め込み学習の入力形式としても使われます。「利点」(独立した次元での表現)が問われることもあります。
  • 次元数の勘違い — ベクトルの次元数は文の長さではなく語彙数で決まります。「語彙数が増加すると次元も増大する」という記述はこの対応関係を指しています。

📝 試験でのポイント

💡 ポイント
  • 定義問題では「該当する単語の位置のみを1とし、他の位置を0とする」という言い回しが決め手です。犬=[1,0,0]型の具体例で問われることもあります。
  • 課題は2点セットで出ます。「語彙数の増加による次元・計算資源の増大」と「意味的な類似性を捉えられない」の両方を押さえましょう。
  • 「犬と猫は意味的に近いが、全く異なる次元で表現されるため類似性を反映できない」という例文はそのまま正誤問題の題材になります。
  • 「ワンホットの課題を解決するために分散表現(Word2VecやBERTなど)が開発された」という発展の流れを問う並べ替え・穴埋め形式が想定されます。

📚 まとめ

💡 ポイント
  • ワンホットベクトルは、該当単語の位置だけを1、他を0とする高次元ベクトルでテキストを数値化する手法です。
  • 各単語を独立した次元で表現でき、カテゴリカルデータの数値化に有用という利点があります。
  • 一方、語彙数に比例して次元が増大する効率の問題と、単語間の意味的類似性を捉えられないという本質的な限界を抱えます。
  • この限界を解決するために分散表現(Word2VecやBERTなど)が開発された、という「出発点としての位置づけ」が試験の急所です。