単語ベクトルのプロジェクション
語彙の単語がどのように群を成しているかを理解するには、散布図で単語ベクトルを可視化すると便利です。単語ベクトルを可視化するには、それらを2次元空間に射影する必要があります。射影には、主成分分析(PCA)で2つの主成分を抽出する方法が使えます。
この演習では、sklearn の PCA ライブラリを使って、単語ベクトルを抽出し、2次元空間に射影する方法を練習します。
words リストに保存された短い単語リストと、en_core_web_md モデルが用意されています。モデルは nlp として読み込まれています。必要なライブラリとパッケージ(PCA、numpy は np として)もすでにインポート済みです。
この演習はコースの一部です
spaCyで学ぶNatural Language Processing
演習の手順
- 与えられた単語から単語IDを抽出し、
word_idsリストに保存します。 - 単語の単語ベクトルの先頭5要素を取り出し、
np.vstack()で縦方向に積み重ねてword_vectorsに格納します。 pcaオブジェクトが与えられているので、pcaクラスの.fit_transform()関数で変換後の単語ベクトルを計算します。- 変換後の単語ベクトルの第1主成分を
[:, 0]というインデックス指定で出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
words = ["tiger", "bird"]
# Extract word IDs of given words
word_ids = [nlp.____.____[w] for w in words]
# Extract word vectors and stack the first five elements vertically
word_vectors = np.vstack([nlp.____.____[i][:5] for i in word_ids])
# Calculate the transformed word vectors using the pca object
pca = PCA(n_components=2)
word_vectors_transformed = pca.____(____)
# Print the first component of the transformed word vectors
print(____[:, 0])