python - 合并 SQL 数据库中的相似条目

标签 python sql postgresql

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

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/

相关文章:

java - JPA,如何插入数组?

python - Django 使用 GET 过滤搜索结果

python - Python 中的 XML 处理

sql - PostgreSQL jsonb 更新多个嵌套字段

node.js - 耐克斯 :Error Pool2 - Error: The server does not support SSL connections

postgresql - GreenPlum 子字符串 - 获取长文本的一部分

python - 如何检查字符串是否为回文?

python - 从 python 脚本创建可执行文件

sql - Informix - 两个日期之间

SQL:列值每天自动减少?