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

行政数据中识别并修正姓名顺序颠倒问题的方法

高效修正大型数据中的姓名顺序问题

核心思路

针对数据量大的场景,全程采用精确匹配避免性能损耗,结合已知名姓参考数据集+频率统计的方式,快速识别并修正颠倒的姓名。

具体实现步骤

1. 拆分姓名为独立部分

假设所有姓名均由两个空格分隔的部分组成,先拆分目标数据中的姓名:

library(tidyverse)

# 目标数据集
target_df <- tibble(names = c("MIMO DAGRYL", "LUMPERSTEIN ANASTASIA", "KEY MORPHIN", "DAGRYL MIMO", "ANASTASIA LUMPERSTEIN", "KEY MORPHIN"))

# 拆分姓名为两个部分
target_df <- target_df %>%
  separate(names, into = c("part1", "part2"), sep = " ", remove = FALSE)

2. 构建权威名姓映射

基于参考数据集,建立正向(名→姓)和反向(姓→名)的精确映射表,用于快速校验:

# 参考数据集
ref_df <- tibble(forename = c("MIMO", "KEY", "DAVID"),
                 surname = c("DAGRYL", "LUMPERSTEIN", "MORPHIN"))

# 正向映射:合法名对应正确姓氏
name_to_surname <- ref_df %>% deframe()

# 反向映射:合法姓氏对应正确名字
surname_to_name <- ref_df %>% select(surname, forename) %>% deframe()

3. 校验并修正姓名顺序

遍历拆分后的姓名,通过映射表判断顺序是否正确,直接修正颠倒的情况:

target_df <- target_df %>%
  mutate(
    # 标记当前顺序是否符合参考集
    is_correct = map2_lgl(part1, part2, ~ .x %in% names(name_to_surname) && name_to_surname[.x] == .y),
    # 标记是否是颠倒的合法姓名
    is_reversed = map2_lgl(part1, part2, ~ .x %in% names(surname_to_name) && surname_to_name[.x] == .y),
    # 生成修正后的姓名
    corrected_name = case_when(
      is_correct ~ names,
      is_reversed ~ str_c(part2, part1, sep = " "),
      TRUE ~ names # 参考集未覆盖的项暂保留原内容,后续可通过频率补充修正
    )
  )

4. 补充处理参考集未覆盖的姓名(可选)

对于参考集没有的姓名,利用出现频率判断顺序:通常姓氏的重复率更高,或正确顺序的姓名出现次数更多:

# 统计所有姓名片段的出现频率
part_freq <- target_df %>%
  pivot_longer(cols = c(part1, part2), values_to = "name_part") %>%
  count(name_part, sort = TRUE) %>%
  deframe()

# 基于频率修正未覆盖项:频率高的片段判定为姓氏
target_df <- target_df %>%
  mutate(
    corrected_name = case_when(
      is_correct ~ names,
      is_reversed ~ str_c(part2, part1, sep = " "),
      part_freq[part1] < part_freq[part2] ~ names,
      TRUE ~ str_c(part2, part1, sep = " ")
    )
  )

最终效果示例

处理后target_df的corrected_name列将输出修正后的正确姓名:

namespart1part2is_correctis_reversedcorrected_name
MIMO DAGRYLMIMODAGRYLTRUEFALSEMIMO DAGRYL
LUMPERSTEIN ANASTASIALUMPERSTEINANASTASIAFALSEFALSEANASTASIA LUMPERSTEIN
KEY MORPHINKEYMORPHINFALSEFALSEKEY LUMPERSTEIN
DAGRYL MIMODAGRYLMIMOFALSETRUEMIMO DAGRYL
ANASTASIA LUMPERSTEINANASTASIALUMPERSTEINFALSEFALSEANASTASIA LUMPERSTEIN
KEY MORPHINKEYMORPHINFALSEFALSEKEY LUMPERSTEIN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 14:28:25