GloVeとFastTextの埋め込み
グローバルな共起統計、サブワードを扱うFastText、学習済み埋め込みの読み込みについて学習します。
「GloVeとFastTextの埋め込み」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
Word2Vec の先へ
Word2Vec は局所的な文脈ウィンドウから学習します。その他にも影響力のある埋め込み手法が2つあり、GloVe はグローバルな統計情報を使い、FastText は文字の部分列を使います。
GloVe とは
GloVe(Global Vectors)は、グローバルな共起行列を使って学習します。これは、局所的なウィンドウだけでなく、コーパス全体で各単語の組が一緒に現れる頻度を表したものです。
グローバルな統計情報が役立つ理由
完全な共起行列を因数分解することで、GloVe はコーパス全体にわたる単語間の関係や比率を捉えます。その結果、類推タスクで Word2Vec に匹敵する、または上回る高品質なベクトルを生成することがよくあります。
事前学習済みベクトルの読み込み
埋め込みの学習には巨大なコーパスが必要なので、通常は事前学習済みのベクトルをダウンロードします。gensim.downloader を使えば、GloVe ベクトルなどの一般的なモデルを1行で取得できます。
import gensim.downloader as api
glove = api.load("glove-wiki-gigaword-100")
print(glove["computer"].shape) # (100,)事前学習済み GloVe の利用
読み込んだ GloVe ベクトルでは、Word2Vec と同じように類似度の計算や類推を行えます。
import gensim.downloader as api
glove = api.load("glove-wiki-gigaword-100")
print(glove.most_similar("king", topn=3))
print(glove.most_similar(positive=["king", "woman"], negative=["man"], topn=1))語彙外問題
Word2Vec と GloVe は、学習時に見た単語にしかベクトルを割り当てません。新しい単語やスペルミスの単語(out-of-vocabulary、OOV)にはベクトルがなく、これは扱いの難しいテキストにおける大きな制限です。
FastText とは
FastText は、各単語を文字 n-gramの集合として表現することで OOV の問題を解決します。単語 "playing" には "pla"、"lay"、"ing" のような部分が含まれるため、関連する単語と構造を共有できます。
文字 n-gram が役立つ理由
単語ベクトルはその部分文字列から構築されるため、FastText は未知語の n-gram からベクトルを作成できます。また、形態論も捉えられるため、接頭辞、接尾辞、まれな単語の扱いにも役立ちます。
FastText の学習
gensim は Word2Vec と似た API で FastText を提供します。min_n と max_n パラメータで、文字 n-gram の範囲を設定します。
from gensim.models import FastText
model = FastText(
sentences,
vector_size=100,
window=5,
min_count=1,
min_n=3,
max_n=6,
)FastText は OOV を処理できる
学習時に一度も見ていない単語でも、その文字 n-gram から組み立てたベクトルが返されます。これは FastText が Word2Vec や GloVe に対して持つ特徴的な利点です。
from gensim.models import FastText
model = FastText(sentences, vector_size=100, min_n=3, max_n=6, min_count=1)
# works even if "catlike" was never in training
vec = model.wv["catlike"]埋め込みの選択
語彙が固定されたクリーンなテキストには GloVe または Word2Vec を使います。形態的に豊かな言語、ノイズの多いテキスト、または OOV の単語が頻出する場合は FastText を選びます。どの場合でも、事前学習済みベクトルは優れた出発点になります。
理解度チェック
埋め込みに関する知識を確認しましょう。
まとめ
まとめ: GloVe はグローバルな共起統計から学習し、FastText は文字 n-gram を使って語彙外の単語や形態論を扱います。gensim.downloader.load で事前学習済みベクトルを読み込みます。どちらも類似度の計算と類推をサポートします。ノイズの多いテキストや形態的に豊かなテキストには FastText を、クリーンで語彙が固定されたテキストには GloVe または Word2Vec を選びます。
よくある質問
「GloVeとFastTextの埋め込み」レッスンは無料ですか?
はい。「GloVeとFastTextの埋め込み」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「GloVeとFastTextの埋め込み」で何を学びますか?
グローバルな共起統計、サブワードを扱うFastText、学習済み埋め込みの読み込みについて学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「GloVeとFastTextの埋め込み」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Word2Vec:Skip-gramとCBOW
- GloVeとFastTextの埋め込み
- BERTによるテキスト分類
- 意味的類似度と文埋め込み