我有一些字符串,我想要一个测量它们的相似性,但不同于字符串编辑距离,例如,更多地基于结构相似性而不是字母相似性。
例如:312164和48479应得到非常高的分数,因为它们只是数字且长度相同。对于Bla blubb和bla bloob blo应该是相同的,因为它们只包含字母并且之间有间隙。 对于像apple和app3 f这样的情侣,即使他们分享一些字母,但结构也不同,也应该得分较低。
这样的事情......有人有线索吗?在Java中,如果可能的话。
谢谢!
答案 0 :(得分:1)
以相似性定义和评分。
示例字符串:
香蕉
橙
Orange 123
Banana 234
长度= x点,其中x是长度
相同的字符= 1分(A!= a)
相似角色的相同位置= 2分
每个字符串唯一的字符的扣除点
e.g。比较Banana和Orange
长度= 6分(两者均为6分)
'a'= 1分(两者都有)。如果两者都有两个,我们会给2分。如果'a'在两个字符串中处于相同位置,我们将再给出2分。
对于'n'= 1分
由于橙子没有B ,因此总积分:8
1
2表示'a',因为Banana有三个a的
1表示“n”,因为Banana有2个n
1表示O
1表示r
1 for g
1 for e
总减:8
总加分 - 总分数= 0
这只是一个粗略的逻辑,但你可以从中得到一些东西。