假设我们有买卖双方试图在市场上找到对方。买家可以用关键字标记他们的需求;卖家可以为他们卖的东西做同样的事情。我感兴趣的是根据他们的两个关键字集合来找到按照与特定买家的相关性对卖家进行排序的算法。基于关键词交集的匹配算法
下面是一个例子:
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实际上会变得更糟。这似乎会引入一个自动惩罚的方法,不纠正关键字集的大小(我们绝对不想惩罚添加关键字)。
为了把更多的结构上的问题,假设我们有关键字属性(其必须总和为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只得到.1的得分,而卖家2得到0.9的得分。到目前为止,一切都很好,但现在我们可能会得到第三个卖家有非常有限的,非描述性的关键词组:
seller_keywords[3] = {"furry":1}
这弹射他们顶端关于他们的唯一关键字命中的,这是不好。
无论如何,我的猜测(和希望)是这是一个相当普遍的问题,并且存在着已知强度和局限性的不同算法解决方案。这可能是CS101涵盖的内容,所以我认为这个问题的一个很好的答案可能只是一个链接到相关的参考文献。
我认为我们应该将有效分数乘以匹配关键字的数量。例如,在您的第二种情况下,例如,我们只有1个匹配,并且其得分为1,因此有效分数1 * 1 = 1。在这种情况下,如果找到两个匹配,我们将有效得分为2 * 1 = 2。因此,它被选中。您对这种方法有何看法。 – Algorithmist 2011-02-28 13:30:54