3

出会い系サイトの問題を解決しようとしています。ここに問題があります

アプリの各ユーザーには、読んだ本、視聴した映画、音楽、テレビ番組など、いくつかの属性があります。これらは、定義された最上位の属性カテゴリです。これらの各カテゴリには、任意の数の値を指定できます。例:本:噴水頭、ラブストーリー..。

次に、プロファイル属性に基づいてユーザーを照合する必要があります。これが私がやろうとしていることです:

逆インデックスを使用してデータを保存します。Fountain Head、Love Storyなどのそれぞれが、その属性を持つユーザーのセットのインデックスキーである場合。

新しいユーザーが参加するときは、このユーザーの属性を取得し、このユーザーのインデックスキーを見つけ、これらのキーのすべてのユーザーを取得し、ユーザーの回数に基づいて並べ替えるバケット(または基数ソートまたは同様のソート)を取得しますこのマージされたリスト。

これは良いですか、悪いですか、悪いですか?他に何か提案はありますか?

ありがとうAjay

4

1 に答える 1

8

あなたが説明したアルゴリズムは悪くありませんが、人々の間の類似性の非常に単純な概念を使用しています.

複雑な一致基準を作成せずに、より調整可能にしましょう。同じ本が好きな人は、同じ音楽を聴いている人よりも似ているとしましょう。同じことがすべての興味に当てはまります。つまり、異なる分野の類似性には異なる重みがあります。

あなたが言ったように、プロファイルにそれを持っている人に、各興味(本、歌など)のリストを保持できます. 次に、 guy の一致を見つけたいとしますg

for each interest i in g's interests:
  for each person p in list of i
    if p and g have mismatching sexual preferences
      continue
    if p is already in g's match list
      g->match_list[p].score += i->match_weight
    else
      add p to g->match_list with score i->match_weight

sort g->match_list based on score

ただし、重みの選択は簡単な作業ではありません。それを正しく理解するには、多くの心理学が必要です。しかし、常識を働かせれば、そう遠くない値を得ることができます。

一般に、人物のマッチングは、いくつかのスコアを合計するよりもはるかに複雑です。たとえば、一致する関心の特定のセットは、それらを個別に合計した場合よりも効果が大きい (場合によっては小さい) 場合があります。また、一致する他の興味が存在する場合でも、一方に興味があると、もう一方から完全に拒否される可能性があります (たとえば、一方が愛し、もう一方がトワイライトを嫌う 2 人の非常によく似た人を考えてみましょう)。

于 2012-05-07T10:39:58.833 に答える