如何计算基于结构的字符串相似度



我有一些字符串,我想要测量它们的相似性,但与字符串编辑距离不同,例如,更多地基于结构相似性而不是字母相似性。

例如:312164和48479应该得到很高的分数,因为它们只是数字,长度相同。对于Bla blobb和Bla bloob blo应该是相同的,因为它们只包含字母,并且中间有间隙。对于像apple和app3f这样的情侣,即使他们共用一些字母,但结构不同,也应该使用较少的分数。

类似的。。。有人知道线索吗?如果可能的话,用Java。

谢谢!

定义它们的相似性并对其进行评分。

字符串示例:

香蕉

橙色

橙色123

香蕉234

长度=x点,其中x为长度

相同字符=1点(A!=A)

相似字符的相同位置=2点

每个字符串唯一的字符扣分

例如,将香蕉与橙色进行比较

长度=6个点(长度均为6)

对于"a"=1点(两者都有a)。如果双方都得了两个a,我们就得2分。如果"a"在两个字符串中的位置相同,我们会再加2分。

对于'n'=1点

总阳性点数:8

1代表B,因为Orange没有B

2表示"a",因为Banana有三个a的

1表示"n",因为Banana有2n的

1用于O

1用于r

1用于g

1用于e

总计减去:8

总分-总分=0

这只是一个粗略的逻辑,但你可以从中得到一些东西。

最新更新