我有一个数据库,我在其中记录了一个电视节目的嘉宾以及他们出现在哪些剧集中。主要是我有三个表:
guest (姓名、身份证)
剧集(日期、主题、ID)
EpisodeGuest(剧集 ID、GuestID)
然而,经过检查,我发现许多客人的名字被多次记录,但他们的名字拼写略有不同。当我从网站上抓取客人的外貌时,这有点超出了我的控制范围。
例子:
Peter N. Larsson
彼得·N·拉尔森
Peter N. Larson
这些名字现在被记录为多次出现的多位客人。如何在不手动进行的情况下将这些合并为同一个人?客人输入的是姓氏和姓氏,因此在所有情况下,可以说,两个名字之间只有 3 个字符不同,可以安全(足够)说这是同一位客人。
最好的合并方法是遍历每个名字,搜索 3 个字符以内的相似内容,然后通过编辑 EpisodeGuest 表进行合并吗?
最佳答案
Postgres 有一个名为 fuzzystrmatch 的模块.该模块包含可以提供帮助的功能。我倾向于建议 Levenshtein 距离,但您可能会发现模块中的其他函数也适合您。
我会提醒您注意这种方法。首先,两个名字看起来非常相似并不意味着他们是同一个人。其次,您需要手动检查结果。
但是,我们的想法是让候选人使用这样的东西:
select t.name, t2.name
from t join
t2
on levenshtein(t.name, t2.name) < 4 and -- arbitrary number
t.name <> t2.name;
关于python - 合并 SQL 数据库中的相似条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41408733/