比较多个字符串与随机起始点之间的相似性

时间:2013-09-08 21:56:15

标签: python similarity

我有一堆人名与他们各自的识别号码相关联(例如社会安全号码/国民身份证/护照号码)。但由于重复,一个身份号码最多可以有100个名称,这些名称可能相似或完全不同。例如。 ID 221可能有Richard Parker, Mary Parker, Aunt May, Parker Richard, M@rrrrryy Richard等名称等等。有些错别字但有些名字完全不同。

最初,我想只显示与其他名称尽可能不同的名称中的3个(或类似的小编号),以便提醒观众多个名称不能是错别字,但甚至可能是一个案例身份盗窃或疏忽数据捕获或其他任何事情!

我已经阅读了一种检测相似度的算法,目前正在查看此one,这将允许您计算得分,得分为1表示两个字符串相同而得分较低意味着他们是不一样的。在我的用例中,我如何通过说100个名称并显示最不相似的3个?这个算法只是逃避了我的想法,因为我觉得我需要一个起点然后查看和比较所有其他人并再次循环等等

1 个答案:

答案 0 :(得分:2)

如您所述,从https://stackoverflow.com/a/14631287/1082673获取功能,并迭代列表中的所有组合。如果您没有那么多条目,这将有效,否则计算时间可以非常快地增加......

以下是如何为给定列表生成对:

import itertools

persons = ['person1', 'person2', 'person3']

for p1, p2 in itertools.combinations(persons, 2):
    print "Compare", p1, "and", p2