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

时间:2013-08-22 16:03:56

标签: java string text similarity

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

例如:312164和48479应得到非常高的分数,因为它们只是数字且长度相同。对于Bla blubb和bla bloob blo应该是相同的,因为它们只包含字母并且之间有间隙。 对于像apple和app3 f这样的情侣,即使他们分享一些字母,但结构也不同,也应该得分较低。

这样的事情......有人有线索吗?在Java中,如果可能的话。

谢谢!

1 个答案:

答案 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分

  

总积分:8

由于橙子没有B

,因此

1

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

1表示“n”,因为Banana有2个n

1表示O

1表示r

1 for g

1 for e

  

总减:8

总加分 - 总分数= 0

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