0

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

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

类似的东西......有人有线索吗?如果可能的话,在 Java 中。

谢谢!

4

1 回答 1

1

对它们进行相似性定义和评分。

示例字符串:

香蕉

橙子

橙色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 有 3 个 a

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

1 代表 O

1 为 r

1 克

1 为 e

总减:8

总加分 - 总减分 = 0

这只是一个粗略的逻辑,但您可以从中得出一些结论。

于 2013-08-22T16:19:22.583 回答