如何实现“相关”程度度量算法?
-
09-06-2019 - |
题
今天早些时候,当我看到 Stackoverflow 中的一个令人惊讶的功能时,我正打算问一个问题。当我写下我的问题标题时,stackoverflow 向我推荐了几个相关的问题,我发现已经有两个类似的问题了。太棒了!
然后我开始思考如何实现这样的功能。我如何按相关性对问题进行排序:
- 与新问题相匹配的单词数量较高的问题
- 如果匹配的数量相同,则考虑单词顺序
- 标题中出现的单词具有更高的相关性
这是一个简单的工作流程还是一个复杂的评分算法?也许是为了增加召回率?有没有一些库可以实现这个功能?您还会考虑哪些其他方面?也许杰夫可以自己回答!你是如何在 Stackoverflow 中实现这一点的?:)
解决方案
实现这种算法的一种方法是根据启发式函数对问题进行排名,该函数使用以下步骤分配“相关性”权重因子:
- 对“新”问题应用噪声过滤器,以删除大量对象中常见的单词,例如:“该”、“和”、“或”等
- 获取“新”问题中包含的与网站上已发布的问题集的单词相匹配的单词数。[A]
- 获取“新”问题中的单词与可用单词之间的标签匹配数。[乙]
- 根据 [A] 和 [B] 计算“相关权重”为“x[A] + y[B]”,其中 x 和 y 是权重乘数(为 [B] 分配更高的权重乘数,因为标记更相关比简单的单词搜索)
- 获取“相关权重”最高的前 5 个问题。
启发式方法可能需要进行调整才能获得最佳结果,但它应该有效。
不隶属于 StackOverflow