如何实现“相关度量算法”?

8

今天早些时候,我本想在 Stackoverflow 上提问,但是我发现了一个令人惊讶的功能。当我写下我的问题标题时,Stackoverflow 提供了几个相关的问题,我发现已经有两个类似的问题了。那真是惊人!

然后我开始思考如何实现这样的功能。如何根据相关性排序问题:

  1. 与新问题匹配的单词数越多的问题排名越高
  2. 如果匹配数量相同,则考虑单词的顺序
  3. 标题中出现的单词具有更高的相关性

这是一个简单的工作流程还是一个复杂的分数算法呢?需要使用一些词干提取算法来增加召回率吗?是否有库可以实现此功能?您会考虑哪些其他方面?也许 Jeff 自己可以回答!你们是如何在 Stackoverflow 中实现这一点的?:)

4个回答

3
实现这样一种算法的方法之一是,根据启发式函数对问题进行排名,该函数使用以下步骤分配“相关性”权重因子:
  1. 对“新”问题应用噪声过滤器,以删除在大量对象中通用的单词,例如:“the”,“and”,“or”等。
  2. 获取包含在网站上已发布的问题集中与“新”问题匹配的单词数。[A]
  3. 获取“新”问题中的单词与可用标签之间的标签匹配数。[B]
  4. 基于[A]和[B]计算“相关性权重”为'x[A]+y[B]',其中x和y是权重乘数(将更高的权重乘数分配给[B],因为标记比简单的单词搜索更相关)
  5. 获取具有最高“相关性权重”的前5个问题。
启发式函数可能需要微调才能获得最佳结果,但它应该有效。

1

你的问题似乎与这个相似,它有一些额外的答案。


0

@marcio

抱歉,我不知道有任何直接的API参考可以在这里建议,也从未使用过Lucene。

然而,我知道Google桌面使用查询API对相关搜索结果进行排名和建议。有关该API的更多信息可以在此处找到。

也许其他人可以加入并指导您。


-1

StackOverflow不是有计划开源吗?如果是这样,你总可以在那里找到他们是如何做到的。

更新:看起来他们说他们可能会开源。我希望他们能这样做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接