テキストベクトルを探る(パート1)
先ほど学んだテキストベクトルの探索手法を、volunteer データセットの title の tf/idf ベクトルで発展させましょう。テキストベクトル探索の第1部では、スライドで紹介した関数に機能を追加します。まずはその関数で数値のリストを返すようにします。次の演習では、すべてのドキュメントを横断して上位の単語を集めて抽出する別の関数を書き、そのリストを使って text_tfidf ベクトルをフィルタリングします。
この演習はコースの一部です
Pythonで学ぶMachine Learningの前処理
演習の手順
tfidf_vec.vocabulary_用にoriginal_vocab、さらにtop_nというパラメータを追加します。- zip したディクショナリに対して
pd.Series()を呼び出します。こうすると操作しやすくなります。 .sort_values()関数で Series を並べ替え、インデックスをスライスして上位top_n語を取得します。- 関数を呼び出し、
original_vocab=tfidf_vec.vocabulary_を指定し、9 行目を取得するためにvector_index=8を指定し、上位 3 語を取得するためにtop_n=3を指定します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Add in the rest of the arguments
def return_weights(vocab, ____, vector, vector_index, ____):
zipped = dict(zip(vector[vector_index].indices, vector[vector_index].data))
# Transform that zipped dict into a series
zipped_series = ____({vocab[i]:zipped[i] for i in vector[vector_index].indices})
# Sort the series to pull out the top n weighted words
zipped_index = zipped_series.____(ascending=False)[:____].index
return [original_vocab[i] for i in zipped_index]
# Print out the weighted words
print(return_weights(vocab, ____, text_tfidf, ____, ____))