2012-05-07 13 views
0

私は出会い系サイトの問題を解決しようとしています。ここに問題がある複数の属性の一致プロファイル

アプリの各ユーザーは、彼が読む本、彼が見る映画、音楽、テレビ番組など、いくつかの属性を持ちます。これらは、定義されたトップレベルの属性カテゴリです。これらのカテゴリのそれぞれは、任意の数の値を持つことができます。例えば本の中で:ファウンテンヘッド、ラブストーリー...

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

逆索引付けでデータを保存します。 i.f.ファウンテンヘッド、ラブストーリーなどのそれぞれは、その属性を持つユーザーのセットのインデックスキーです。

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

これは良い、悪い、悪いですか?その他の提案はありますか?それは人々の間の類似性の非常に単純な概念を用いているが

おかげ アジャイ

+0

私がなぜこの質問を見ることができませんすべきではない。 – DroidOS

答えて

7

あなたが説明したアルゴリズムは、悪いことではありません。

複雑なマッチング基準を作成することなく、調整を容易にしましょう。同じ書籍が好きな人は、同じ音楽を聴いている人よりも似ているとしましょう。すべての関心事と同じことが起こります。すなわち、異なる分野における類似性は異なる重みを有する。

あなたが言ったように、あなたのプロフィールにそれを持っている人々に(書籍、歌などのように)それぞれの関心のリストを保持することができます。その後、あなたは男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 

重みの選択はいえ、単純な作業ではありません。あなたはその権利を得るために多くの心理学が必要です。しかし、あなたの常識を使って、それほど遠くない価値を得ることができます。

一般に、マッチングする人々は、いくつかのスコアを合計するよりはるかに複雑です。例えば、一致する関心の特定のセットは、それらの合計よりも多くの(または場合によってはより少ない)効果を個別に有することができる。また、1への関心は完全に一致する関心が存在する(そのうちの一つが大好きで、他には例えば夕暮れが嫌いという2つの非常に似た人を取る)、他の何に関係なく、他から拒否しなくなることがあり

+0

ありがとうShahbaz。これは役に立ちます。さまざまな属性に基づいて人々を照合するための他の洗練されたアルゴリズムを提案できますか? –

+1

@AjayBansalは、私が言ったように、これは心理学の分野に入ります。 [this site](http://mashable.com/2011/07/13/match-com-equation/)を見て、あなたがどれだけ複雑になるかを知ることができます。私の意見では、これらのアルゴリズムは人間の行動に比べて非常に基本的なものです。あなたはまた、科学論文に何かを見つけるかもしれません。 – Shahbaz

+0

@Shahbaz、それは可能なSQLクエリで可能性がありますか? –

関連する問題