我正在开发一个Java项目,我需要将用户查询与多个引擎相匹配。 每个引擎都有一个方法相似性(对象a,对象b),它返回:如果对象肯定匹配,则返回+1; -1如果对象肯定不匹配;当存在不确定性时,任何浮动在中间。
示例:用户搜索“龙珠”。
我正在寻找一种从这个系统中构建集群的方法。我需要确保相似度接近-1的值可能会在不同的簇中结束,即使许多其他值与它们都非常相似。
是否有一个众所周知的聚类算法来解决这个问题?是否有可用的Java实现?我可以自己构建它,也许可以在支持库的帮助下构建它吗?我擅长Java(15年以上经验),但我对集群非常陌生。
谢谢!
答案 0 :(得分:0)
显而易见的方法是使用" 1 - 相似性"作为距离函数,因此将从0变为2.然后将它们相加。
或者您可以使用1 + similarity
并获取这些值的乘积,...或者,或者,或......
但是,由于你显然更信任第一个得分,你可能还想增加其影响力。没有数学解决方案,您可以根据您的数据和偏好选择权重。如果你有训练数据,你可以优化你的方法的权重,如果他们不能很好地工作或相关,你甚至可能想要丢弃一些学员。