2

我正在使用 Dedupe 库将人员记录相互匹配。我的数据包括姓名、出生日期、地址、电话号码和其他个人身份信息。

这是我的问题:如果两个记录具有匹配的姓名和电话号码(例如),我总是希望以 100% 的置信度匹配它们。

这是我的一些代码的示例:

fields = [
    {'field' : 'LAST_NM', 'variable name' : 'last_nm', 'type': 'String'},
    {'field' : 'FRST_NM', 'variable name' : 'frst_nm', 'type': 'String'},
    {'field' : 'FULL_NM', 'variable name' : 'full_nm', 'type': 'Name'},
    {'field' : 'BRTH_DT', 'variable name' : 'brth_dt', 'type': 'String'},
    {'field' : 'SEX_CD', 'type': 'Exact'},
    {'field' : 'FULL_US_ADDRESS', 'variable name' : 'us_address', 'type': 'Address'},
    {'field' : 'APT_NUM', 'type': 'Exact'},
    {'field' : 'CITY', 'type': 'ShortString'},
    {'field' : 'STATE', 'type': 'ShortString'},
    {'field' : 'ZIP_CD', 'type': 'ShortString'},
    {'field' : 'HOME_PHONE', 'variable name' : 'home_phone', 'type': 'Exact'},
    {'type': 'Interaction', 'interaction variables' : ['full_nm', 'home_phone']},

在 Dedupe 库中,我有什么方法可以显式匹配两个或多个字段?根据文档,“交互字段乘以多个变量的值。” (https://dedupe.readthedocs.org/en/latest/Variable-definition.html#interaction)。我想实施一个严格的规则,它与 100% 的置信度匹配 - 而不仅仅是乘以变量的值。我问的原因是我发现 Dedupe 偶尔会错过这两个标准的一些匹配项(可能是我训练时间不够长的结果,但无论如何,我只想将这些匹配项硬编码到我的脚本中)。

有什么建议么?

4

2 回答 2

5

Dedupe 没有此功能,并且可能永远不会(我是主要作者之一)。如果这些字段上的完全匹配确实是一条规则意味着记录是共同引用的,那么您可以编写一些代码来明确匹配这些字段,然后再将其余记录发送到 Dedupe。

exact_matches = defaultdict(list)
for record_id, record in records.items():
    match_key = (record['name'], record['phone'])
    exact_matches[match_key].append(record_id)

partially_deduplicated = []
exact_lookup = {}
for match_group in exact_matches.values():
     head_id = match_group.pop()
     partially_deduplicated.append((head_id, records[head_id]))
     for dupe_id in match_group :
         exact_lookup[dupe_id] = head_id
于 2015-10-10T20:43:32.923 回答
1

将您想要完全匹配的所有字段设置为输入“精确” - 例如:

{'field' : 'FULL_NM', 'variable name' : 'full_nm', 'type': 'Exact'},
于 2015-09-13T14:18:50.693 回答