「クリスチアーノ・ロナウド」の類似記事を探す
動画では、NMFの特徴量とコサイン類似度を使って似た記事を見つける方法を学びました。
この手法を、Wikipediaの人気記事に対してNMFモデルに適用し、サッカー選手クリスチアーノ・ロナウドに関する記事と最も似ている記事を探してみましょう。先ほど取得したNMFの特徴量はnmf_featuresとして、記事タイトルのリストはtitles として、それぞれ利用できます。
この演習はコースの一部です
Pythonで学ぶ教師なし学習
演習の手順
sklearn.preprocessingからをnormalizeインポートしてください。nmf_featuresにnormalize()関数を適用してください。結果はnorm_featuresとして保存します。norm_featuresからDataFramedfを作成し、titlesをインデックスとして使用してください。dfの.loc[]アクセサを使って、'Cristiano Ronaldo'の行を選択してください。結果はarticleに代入してください。dfの.dot()メソッドをarticleに適用し、各行とarticleとのコサイン類似度を計算してください。similaritiesの.nlargest()メソッドの結果を出力し、最も似ている記事を表示してください。このコードはすでに入力されているので、「解答を送信」をクリックして結果を確認しましょう。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Perform the necessary imports
import pandas as pd
from ____ import ____
# Normalize the NMF features: norm_features
norm_features = ____
# Create a DataFrame: df
df = ____
# Select the row corresponding to 'Cristiano Ronaldo': article
article = df.loc[____]
# Compute the dot products: similarities
similarities = ____
# Display those with the largest cosine similarity
print(similarities.nlargest())