我正在开发一个Java项目,我需要将用户查询与几个引擎进行匹配。每个引擎都有一个方法相似性(对象a,对象b)返回:+1如果对象确实匹配; -1如果对象肯定不匹配;当存在不确定性时,任何中间浮动。用于处理相似性和差异性的Java聚类算法
示例:用户搜索“龙珠”。
- 发动机1返回“龙珠”,“龙珠GT”,“龙珠Z”,并声称它们是不同的结果(相似度= -1),无论他们的名字看起来多么相似。该发动机准确,因此具有很高的“重量”值。
- 发动机2返回100个不同的结果。其中一些涉及DBZ,另一些涉及DBGT等。引擎声称它们都“非常相似”(0.5和1之间的相似性)。
- 该系统查询其他几个引擎(10+)
我正在寻找一种方式来构建集群出这个系统。我需要确保具有接近-1的相似性的值可能最终会出现在不同的群集中,即使其他许多值与其中的所有值非常相似。
有没有一个众所周知的聚类算法来解决这个问题?有没有可用的Java实现?我可以在支持库的帮助下自行构建它吗?我擅长Java(15年以上的经验),但我在集群方面是全新的。
谢谢!
答案[这里](http://stackoverflow.com/questions/2129269/java-clustering-library)没有帮助吗? – Ironcache
我认为你的问题太广泛了...但让我们说别人的想法。 – GhostCat