自分で確認してみたい場合
前回紹介したMapReduceの第一段階のReducerの出力結果のデータ構造で
<key value>
は
<単語id 単語idを含むアイテムidのリスト>
でした。
コンテンツベースのレコメンドは,
一般に,
したがって,
TF/IDF
TFはTerm Frequecny
TF/
TFは局所的な重み付けで,
各単語の重みはこれらTFとIDFの積で計算します。
以上の定義より,
ここで簡単な例で重みの付け方を説明します。
- ① 文書a,
bから文書内に含まれた単語を要素とする文書ベクトルを作成する。 - ② 文書ベクトルを表形式で表現する。
セル内の数値は各文書で列に該当する単語が出現した回数になる。 - ③ 文書ベクトルのTF値を表形式のデータから計算する。
TF値なので表形式のデータをそのまま使う。 - ④ 文書ベクトルのIDF値を表形式のデータから計算する。
ここでは全文書の数を10としている。
IDFの値は各文書での出現頻度に関係なく,同じ単語であれば全文書で共通であることに注意してください。 - ⑤ 文書ベクトルのTF/
IDF値をTF及びIDFのデータから計算する。
各文書かつ各単語ごとに③と④で計算した値を使って積を求めます。
MapReduceを使ってTF/IDFを計算しよう
図2に示した流れに従い,
- 単語→そのまま
- 文書→アイテムごとの文書群
同一アイテムへの文書が複数ある場合,
ここで知りたいのは
もちろん,
これらの重みを計算するために,