You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用OpenRefine识别并删除/合并近似重复姓名

用OpenRefine处理姓名近似重复项(25万行数据场景)

针对名、姓分离但存在格式/拼写差异的重复数据,OpenRefine的**聚类(Cluster)**功能是解决近似匹配的核心工具,以下是具体操作步骤:

1. 预处理:合并名与姓为全名列

先把分开的名、姓列合并成完整姓名,方便统一处理:

  • 点击列菜单 → 添加列基于此列(选名或姓列均可)
  • 在公式框输入:cells["名"].value + " " + cells["姓"].value,命名为“全名”列

2. 标准化姓名格式

先统一格式,减少无效差异:

  • 选中“全名”列 → 编辑单元格 → 变换
    • 替换连字符为空格:value.replace("-", " ")
    • 去掉中间名的点:value.replace(".", "")
    • 统一大小写(可选):value.toLowercase()(避免大小写导致的误判)

3. 用聚类功能识别近似重复

这一步是处理近似匹配的关键,替代仅支持精确匹配的blank down:

  • 选中“全名”列 → 编辑单元格 → 聚类
  • 在聚类窗口选择合适的算法(根据数据情况调整):
    • 指纹(Fingerprint):处理大小写、标点、空格顺序的差异(比如John Smith和john smith)
    • 邻接距离(Nearest Neighbor):处理拼写错误(比如John和Jhon),可调整Levenshtein距离阈值(建议设为1-2)
    • n-gram指纹:处理带中间名的情况(比如John Smith和John M Smith),通过字符片段匹配
  • 预览聚类组,确认每组属于同一人后,点击合并选中的聚类,选择组内出现次数最多的项作为标准值

4. 删除/合并重复项

处理完聚类后,可按需清理重复:

  • 删除重复:选中“全名”列 → 编辑单元格 → 标记重复项,然后筛选出标记为“重复”的行删除;或者用公式row.record.index == 0筛选保留每组的第一行,删除其余行
  • 合并数据:如果需要保留其他列的信息,可通过**记录(Records)**功能,将同一聚类组的行合并,保留需要的字段值

大数据注意事项

针对25万行数据:

  • 关闭不必要的浏览器进程,保证内存充足
  • 先采样1000行测试聚类参数,确认效果后再全量处理
  • 可分步处理:先对“名”列聚类标准化,再对“姓”列做同样操作,最后合并全名再聚类,提升准确率

内容的提问来源于stack exchange,提问作者Ahmed Rehman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 09:37:37