問題:
特定のユーザーの「興味」を他のすべてのユーザーの興味と比較して、そのユーザーに最も適合するトップ 10 を提案したいと考えています。ユーザー間の無向加重グラフを作成しています。ここで、加重 = 2 人のユーザー間の一致スコアです。
私はすでに N 人のユーザーのセットを持っています: S. S の任意のユーザー U に対して、私は一連の興味 I を持っています。長い間 (1 週間?) 後、一連の興味を持つ新しいユーザー U を作成し、それをに追加しますS. この新しいユーザーのグラフを生成するために、新しいユーザーの関心セット I を、S 内のすべてのユーザーの関心セットと繰り返し比較しています。問題は、この「すべてのユーザー」の部分にあります。
興味を比較する機能について話しましょう。一連の関心 I に対する関心は文字列です。WikipediaMiner を使用して 2 つの文字列/興味を比較しています (ウィキペディアのリンクを使用して、2 つの文字列がどれほど密接に関連しているかを推測します。例: ビリー ジーン & スリラー ==> 高い一致、ブラッド ピット & ジャマイカ ==> 低い一致何とか何とか)。これについても質問しました(現在使用しているソリューションよりも優れたソリューションがあるかどうかを確認するため.
したがって、上記の関数には無視できない時間がかかり、合計すると、数千 (おそらく数百万) のユーザーとその何百もの関心を比較すると、膨大な時間がかかります。100,000 ユーザーの場合、この方法で短時間 (<30 秒) に 100,000 ユーザーの比較を行う余裕はありません。しかし、私は 30 秒以内に上位 10 件の推奨事項を提示しなければなりません。これはおそらく暫定的な推奨事項であり、次の 1 分程度でそれを改善し、改善された推奨事項を計算します。1 人のユーザーと N 人のユーザーを順番に単純に比較するのは遅すぎます。
質問:
状況を改善したり、問題を解決したりするために使用できるアルゴリズム、方法、またはツールを提案してください。