假设我们有买家和卖家试图在市场上找到对方。买家可以用关键字标记他们的需求;卖家可以对他们销售的东西做同样的事情。我有兴趣找到根据卖家的两个关键字集根据卖家与特定买家的相关性对卖家进行排名的算法。
这是一个例子:
buyer_keywords = {"furry", "four legs", "likes catnip", "has claws"}
然后我们有两个潜在的卖家,我们需要根据它们的相关性对它们进行排序:
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。到目前为止,一切都很好,但现在我们可能会得到第三个卖家,其关键字集非常有限,非描述性的:
seller_keywords[3] = {"furry":1}
这会将他们推到顶峰,因为他们唯一的关键字受到任何点击,这并不好。
无论如何,我的猜测(和希望)是这是一个相当普遍的问题,并且存在具有已知优势和局限性的不同算法解决方案。这可能是 CS101 中涵盖的内容,所以我认为这个问题的一个好的答案可能只是指向相关参考资料的链接。