【发布时间】:2017-03-24 19:48:46
【问题描述】:
我正在开发一个 Java 项目,我需要将用户查询与多个引擎进行匹配。 每个引擎都有一个方法 similarity(Object a, Object b),它返回:+1 如果对象肯定匹配; -1 如果对象肯定不匹配;存在不确定性时的任何浮动。
示例:用户搜索“龙珠”。
- Engine 1 返回“Dragon Ball”、“Dragon Ball GT”、“Dragon Ball Z”,并声称它们是不同的结果(相似度=-1),无论它们的名字看起来多么相似。这个引擎是准确的,因此它具有很高的“权重”值。
- 引擎 2 返回 100 个不同的结果。其中一些与 DBZ 有关,另一些与 DBGT 等有关。引擎声称它们都“非常相似”(相似度在 0.5 和 1 之间)。
- 系统查询其他几个引擎 (10+)
我正在寻找一种方法来从这个系统中构建集群。我需要确保相似度接近 -1 的值最终可能会出现在不同的集群中,即使许多其他值与所有这些值都非常相似。
是否有众所周知的聚类算法来解决这个问题?是否有可用的 Java 实现?我可以自己构建它,也许在支持库的帮助下?我擅长 Java(15 年以上经验),但我对集群完全陌生。
谢谢!
【问题讨论】:
-
答案here没有帮助吗?
-
我认为你的问题太宽泛了......但让我们谈谈其他人的想法。
标签: java cluster-analysis