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

2024-04-29 15:51:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一堆人的名字和他们各自的识别号码(例如社会保险号码/国民身份证号码/护照号码)。但是,由于重复,一个身份号码最多可以有100个名字,这些名字可能相似,也可能完全不同。E、 g.ID221可以有名称Richard Parker, Mary Parker, Aunt May, Parker Richard, M@rrrrryy Richard等等。有些拼写错误,但有些完全不同的名称。在

最初,我只想显示3个(或一个类似的小数目)尽可能不同于其他的名字,以提醒观众,多个名字不能是打字错误,甚至可能是身份盗窃或疏忽数据捕捉或其他任何情况!在

我读过一个检测相似性的算法,现在来看这个one,它允许你计算一个分数,分数为1表示两个字符串是相同的,而分数较低表示它们不同。在我的用例中,我如何通过说出100个名称并显示最不相似的3个名称?因为我觉得我需要一个起点,然后在所有其他算法之间进行比较,然后再循环等等,所以这个算法就从我的脑海中消失了


Tags: 名称算法richard身份名字分数号码身份证
1条回答
网友
1楼 · 发布于 2024-04-29 15:51:37

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

相关问题 更多 >