メインコンテンツへスキップ

11.2.1 表現学習ロードマップ:意味をベクトルで扱う

前章では、テキストを token と ID にしました。この章では一歩進めて、「意味が近い言葉は、ベクトル空間でも近くなる」という考え方を扱います。

先に全体像を見る

表現学習章の進め方

順番学ぶこと役割
1単語 embedding固定の意味ベクトルを作る
2文脈依存 embedding文によって意味が変わる単語を扱う
3言語モデル文脈全体から表現を学ぶ

ベクトルの近さを手で確かめる

意味空間のイメージ

embedding は、token を数字の並びに変えたものです。数字そのものを暗記する必要はありません。大事なのは、似た意味の token が近い場所に置かれることです。

vectors = {
"cat": [1.0, 0.8],
"dog": [0.9, 0.7],
"car": [0.1, 0.2],
}

def dot(a, b):
return sum(x * y for x, y in zip(a, b))

print("cat_dog:", round(dot(vectors["cat"], vectors["dog"]), 2))
print("cat_car:", round(dot(vectors["cat"], vectors["car"]), 2))

期待される出力:

cat_dog: 1.46
cat_car: 0.26

ここでは簡単に内積を使っています。値が大きいほど、今回の小さな例では近い関係だと見なします。本格的な検索では cosine similarity なども使います。

固定表現と文脈依存表現を比べる

固定 embedding と文脈依存 embedding の違い

同じ単語でも、文によって意味が変わります。たとえば bank は銀行にも川岸にもなります。固定 embedding は単語ごとに 1 つの表現を持ち、文脈依存 embedding は周囲の文から表現を変えます。

通過条件

チェック合格ライン
embedding とは何かtoken を意味を含むベクトルに変えるものだと説明できる
ID との違いID は区別、embedding は近さを扱えると説明できる
文脈依存表現同じ単語でも文によって表現が変わる理由を言える
次章とのつながりembedding を分類器の入力にできると説明できる