始める無料で始める

単語ベクトルのプロジェクション

語彙の単語がどのように群を成しているかを理解するには、散布図で単語ベクトルを可視化すると便利です。単語ベクトルを可視化するには、それらを2次元空間に射影する必要があります。射影には、主成分分析(PCA)で2つの主成分を抽出する方法が使えます。

この演習では、sklearnPCA ライブラリを使って、単語ベクトルを抽出し、2次元空間に射影する方法を練習します。

words リストに保存された短い単語リストと、en_core_web_md モデルが用意されています。モデルは nlp として読み込まれています。必要なライブラリとパッケージ(PCAnumpynp として)もすでにインポート済みです。

この演習はコースの一部です

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])
コードを編集して実行