9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[備忘録] テキスト埋め込み入門:自然言語処理の基礎とベクトル表現の考え方

Posted at

1. テキスト処理の課題と埋め込みの重要性

image.png

なぜコンピュータはテキストを理解できないのか?

コンピュータは数値しか理解できません。私たちが日常的に使う「猫」「犬」といった言葉は、そのままではコンピュータが処理できません。このギャップを埋めるために、テキストを「数値ベクトル」に変換する必要があります。これを「テキスト埋め込み」と呼びます。

テキスト埋め込みで何ができるの?

テキストを数値ベクトルに変換すると、以下のことが可能になります:

  • 機械学習モデルの入力として使える
  • 単語や文章の「意味的な近さ」を計算できる
  • 大量のテキストを効率的に表現できる

簡単に言えば、人間の言葉をコンピュータが理解できる形に翻訳するための技術です。

2. 単語の数値化と One-hot エンコーディングの限界

image.png

単語を数値に変える最も単純な方法

単語を数値に変える最も簡単な方法は、各単語に番号を振ることです。例えば:

  • "猫" → 1
  • "犬" → 2
  • "家" → 3

しかし、この方法では問題があります。コンピュータは数値の大小関係に意味を見出してしまうため、「犬」が「猫」の2倍の意味を持つと誤解します。例えば、'犬'に2、'猫'に1という番号を振ると、数値の大小で意味に優劣があると誤解される恐れがありますが、これは単なる便宜上の番号付けにすぎません。

One-hot エンコーディング

この問題を解決する一つの方法が「One-hot エンコーディング」です。これは、語彙数と同じ長さのベクトルを用意し、該当する単語の位置だけ1、他はすべて0にする方法です。

例えば、語彙が["猫", "犬", "家"]の場合:

  • "猫" → [1, 0, 0]
  • "犬" → [0, 1, 0]
  • "家" → [0, 0, 1]

これなら数値の大小関係に意味はなくなります。しかし、新たな問題が生じます:

One-hot エンコーディングの限界

  1. 次元の爆発:語彙が増えるとベクトルの長さも増加します。日本語の語彙は数万〜数十万あるため、非常に長いベクトルになります。
  2. 意味の関係を表現できない:「猫」と「犬」は動物という共通点がありますが、One-hotベクトルではその関係性を表現できません。すべての単語が等距離に配置されます。
  3. 未知語に対応できない:事前に知らない単語が出てきた場合、表現できません。

3. 分散表現(Distributed Representation)の基本

distributed-representation-svg.png

分散表現とは何か?

分散表現は、単語の意味を数百次元程度の密なベクトルで表現する方法です。このベクトルの各次元は明確な意味を持ちませんが、単語の意味的特徴を複数の次元に「分散」して表します。

重要なのは、意味的に似ている単語は似たベクトルになるという性質です。

分散表現はどう学習するのか?

「似た文脈に現れる単語は似た意味を持つ」という言語学的仮説に基づき、大量のテキストから統計的に学習します。代表的な手法は「Word2Vec」です:

  1. 大量のテキストを用意する
  2. 「ある単語の周りにどんな単語が出現するか」のパターンを学習
  3. この関係性を元に各単語の最適なベクトル表現を求める

例えば、「犬は〇〇を食べる」「猫は〇〇を食べる」のように似た文脈に現れる単語は、似たベクトルになります。

分散表現のメリット

  1. コンパクト:語彙数に関わらず、ベクトルの次元数は固定(通常100〜300次元程度)
  2. 意味関係の表現:意味的に近い単語は、ベクトル空間でも近くに配置されます
    • 「犬」と「猫」のベクトルは近くなる
    • 「銀行」と「金融」のベクトルは近くなる
  3. ベクトル演算で関係性を表現:有名な例として
    • 「王様 - 男性 + 女性 ≈ 女王」
    • つまり、ベクトル演算で意味的な関係を表現できます
  4. 未知語への対応:部分単語レベルの情報を活用することで、学習時に見たことのない単語にも対応できる手法もあります

分散表現の発展

単語レベルの埋め込みから、文や段落レベルの埋め込みへと発展してきました:

  • Word2Vec/GloVe/fastText:単語レベルの埋め込み
  • Doc2Vec:文書レベルの埋め込み
  • BERT/GPTなど:文脈を考慮した高度な埋め込み

まとめ:テキスト埋め込みの本質

text-embedding-essence-improved.png

テキスト埋め込みの本質は、「人間の言葉の意味や関係性を、コンピュータが理解できる数値ベクトルで表現する」ことです。

  • One-hot表現:単純だが、意味の関係を表現できない
  • 分散表現:意味の関係を低次元の密なベクトルで効率的に表現

良い埋め込みほど、似た意味の単語が似たベクトルとなり、自然言語処理タスクの性能向上につながります。テキスト埋め込みは、自然言語処理の基盤となる重要な技術なのです。

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?