【问题标题】:Merging similar entries in SQL database合并 SQL 数据库中的相似条目
【发布时间】:2016-12-31 13:32:14
【问题描述】:

我有一个数据库,我记录了一个电视节目的嘉宾以及他们出现在哪些剧集中。我主要有三个表:

客人(姓名、身份证)

剧集(日期、主题、ID)

EpisodeGuest(剧集 ID、GuestID)

然而,经过检查,我发现许多客人被记录了好几次,他们的名字拼写略有不同。当我从网站上抓取客人的外观时,这有点超出我的控制范围。

例子:

Peter N. Larsson

Peter N Larsson

Peter N. Larson

这些名字现在被记录为多次出现的多个客人。如何在不手动操作的情况下将这些合并为同一个人?客人是用姓氏和姓氏输入的,所以在所有情况下,比如说,两个名字之间只有 3 个字符不同,它可以安全(足够)说它是同一个客人。

最好的合并方法是遍历每个名​​称,在 3 个字符内搜索远程相似的内容,然后通过编辑 EpisodeGuest 表进行合并?

【问题讨论】:

    标签: python sql postgresql


    【解决方案1】:

    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;
    

    【讨论】:

      猜你喜欢
      • 2012-03-18
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多