2008-09-03 57 views
2

我今天早些时候提出一个问题,当我在Stackoverflow中遇到令人惊讶的功能时。当我写了我的问题标题stackoverflow建议我几个相关的问题,我发现已经有两个类似的问题。那太棒了!如何实现“相关”度度量算法?

然后我开始思考如何实现这样的功能。我怎么会为了通过关联的问题:

  1. 问题有较多的 话与新的问题
  2. 配衬如果配衬的数量是 相同,词的顺序被认为是
  3. 词在标题中出现 更高的相关性

这将是一个简单的工作流程或复杂的分数algortithm?有些可能会增加召回率? 有没有一些库实现这个功能? 你会考虑哪些其他方面?也许杰夫可以回答自己!你是如何在Stackoverflow中实现的? :)

回答

3

实现这样的算法将涉及排名的问题,按照其使用以下步骤分配“相关性”的权重因子启发式功能,这种方法之一:

  1. 应用噪声滤波器“新建”问题,以去除是在大量的对象共同如文字:“在”,“和”,“或”等
  2. 获取匹配的话,其包含在“新”问题的单词数已在网站上发布的一组问题。 [A]
  3. 获取“新建”问题中的单词与可用单词之间的标记匹配数量。 [B]
  4. 计算基于 '关联重量'[A]和[B]为x [A] + Y [B]“,其中x和y是加权乘法器(分配一个更高的权重乘法器为[B ]作为标记比简单词汇搜索更具相关性)
  5. 获得具有最高“相关权重”的前5个问题。

启发式可能需要调整以获得最佳结果,但它应该工作。

-1

是不是StackOverflow将在某些时候开源?如果是这样,你可以随时了解他们是如何做到的。

更新:看来,他们说他们威力开源它。我希望他们这样做。

0

@marcio

对不起,我不知道有任何直接的API参考,我可以建议在这里,我从来没有与Lucene的工作。

但是,我知道Google桌面使用查询API对相关搜索结果进行排名和建议。有关API的更多信息,请参见here

也许其他人可以提示和引导你。

1

你的问题似乎类似于this one,它有一些额外的答案。