我有一些字符串,我想要测量它们的相似性,但与字符串编辑距离不同,例如,更多地基于结构相似性而不是字母相似性。
例如: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
这只是一个粗略的逻辑,但你可以从中得到一些东西。