市場でお互いを見つけようとしている買い手と売り手がいるとします。バイヤーはキーワードで自分のニーズにタグを付けることができます。売り手は、販売しているものに対して同じことを行うことができます。2 つのキーワード セットに基づいて、特定の購入者との関連性に関して販売者をランク付けするアルゴリズムを見つけることに興味があります。
次に例を示します。
buyer_keywords = {"furry", "four legs", "likes catnip", "has claws"}
次に、関連性の観点から順序をランク付けする必要がある 2 つの潜在的な売り手があります。
seller_keywords[1] = {"furry", "four legs", "arctic circle", "white"}
seller_keywords[2] = {"likes catnip", "furry",
"hates mice", "yarn-lover", "whiskers"}
キーワードの交差のみを使用する場合、あまり差別化されません。両方が 2 つのキーワードで交差します。交差数を集合和集合のサイズで割ると、キーワードの数が多いため、実際には売り手 2 の方が悪いです。これにより、キーワード セットのサイズを修正しないメソッドに対して自動的にペナルティが発生するように思われます (キーワードの追加にペナルティを科したくはありません)。
問題をもう少し構造化するために、キーワード属性の強さの正確な測定値があるとします (各販売者の合計が 1 になる必要があります)。たとえば、次のようになります。
seller_keywords[1] = {"furry":.05,
"four legs":.05,
"arctic circle":.8,
"white":.1}
seller_keywords[2] = {"likes catnip":.5,
"furry":.4,
"hates mice":.02,
"yarn-lover":.02,
"whiskers":.06}
これで、ヒットの値を合計できます。つまり、売り手 1 のスコアは 0.1 しかありませんが、売り手 2 のスコアは 0.9 です。これまでのところ、非常に良いですが、非常に限定的で説明のないキーワード セットを持つ 3 番目のセラーを獲得する可能性があります。
seller_keywords[3] = {"furry":1}
これにより、唯一のキーワードがヒットした場合にトップに躍り出ますが、これは良くありません。
とにかく、私の推測 (そして希望) は、これはかなり一般的な問題であり、既知の長所と制限を持つさまざまなアルゴリズム ソリューションが存在するということです。これはおそらく CS101 でカバーされているものなので、この質問に対する適切な回答は、関連する参考文献へのリンクであると思います。