🧬 연구 허브

Skill

author-disambiguate 코드 참조

같은 사람의 여러 표기를 묶고 동명이인은 나눈다. 한글 로마자 이표기·이니셜 축약 처리.

왜 어려운가

한 사람이 논문마다 다르게 적힌다. Kim, Jae Heon · Kim JH · Kim J-H · Kim J.H. — 그리고 진짜 다른 사람도 Kim JH 다. 너무 좁게 묶으면 한 사람이 여러 명이 되고, 너무 넓게 묶으면 여러 명이 한 사람이 된다. 둘 다 저자 단위 집계를 망친다.

정본 코드에 두 방향의 실패가 모두 실측으로 적혀 있다.

방식결과
구두점 정규화 없이 문자열 그대로 키같은 사람이 332개 그룹으로 쪼개짐(과분할)
성 + 이니셜로만 묶기KIM JH 하나에 71명이 뭉침(과병합)

정본 코드

~/Documents/혜연/BTC_KOL_PoC/analyze_kol.py
  same_name()        음절 동치 판정
  author_key()       저자 식별 키 생성
  build_alias_map()  표기 묶음 만들기 (234줄)

--selfcheck 로 로직 자체를 검증한다.

기본 전략 — 풀네임 키 + 구두점 정규화

fullname (기본)
    성 + 이름 전체.  'Kim, Jae Heon' → 'KIM JAE HEON'
    구두점만 정규화: 'J-H' 'J.H.' 'JH' 'J H' → 모두 'J H'

이 정규화 하나가 332개 과분할을 없앤다. 서로 다른 사람이 섞이지 않는 게 우선이고, 이니셜 표기 레코드와 풀네임 레코드가 갈리는 과분할은 다음 단계(alias map)에서 잡는다.

이니셜인지 이름인지는 소문자 유무로 판정한다

# 소문자 유무로 판정해야 한다 — 대문자로 바꾼 뒤 보면 'Shin'도 이니셜로 오인된다.
if fore and " " not in fore and len(fore) <= 4 and not re.search(r"[a-z]", raw):
    fore = " ".join(fore)

Shin 은 네 글자 이름이고 SHIN 으로 바꾸면 이니셜 4개처럼 보인다. 정규화 전 원문의 대소문자를 봐야 구분된다. 대문자 변환을 먼저 하면 이 정보가 사라진다.

표기 동치 — 두 규칙

same_name() 이 성을 뺀 이름 토큰들을 비교한다.

① 음절 수가 같고 각 음절이 동치      'SEONG KOO' ≡ 'SUNG KOO'
② 마지막 음절이 한 글자인 축약 표기   'DONG W'    ≡ 'DONG WAN'

①은 한글 로마자 표기 흔들림이다. 성구 → Seong Koo / Sung Koo / Seong Gu. 음절 동치표(_SYL)를 두고 매핑한다. ②는 이름 뒷부분만 이니셜로 적은 경우다. 앞 음절이 모두 같고 마지막만 한 글자면 접두어인지 확인한다.

둘 다 음절 수가 같을 것을 요구한다. 길이가 다르면 다른 사람으로 본다 — 안 그러면 Kim J 가 모든 김씨와 묶인다.

과분할과 과병합 중 하나를 골라야 한다

동시에 없앨 수 없다. 어느 쪽 오류가 덜 나쁜지 정하고 그 방향으로 기울인다.

  • KOL·업적 분석 → 과병합이 치명적이다(남의 논문이 내 실적이 됨). 풀네임 기본 + alias 로 보수적으로 묶는다.
  • 네트워크·규모 추정 → 과분할이 더 아프다. 이니셜 키를 쓰되 결과를 그렇게 읽는다.

정본은 KEY_MODE = "fullname" 을 기본으로 두고 initials 를 비교용으로 남겨 뒀다. 두 방식을 모두 돌려 차이를 보는 것 자체가 진단이다.

함정

  • 묶은 결과를 반드시 사람이 본다. build_alias_map 은 trace 인자로 어떤 표기가 왜 묶였는지 남긴다.
  • 수동 교정은 코드가 아니라 데이터로 둔다(load_merge_block() — 묶으면 안 되는 쌍 목록).
  • 애매한 건은 ambig_df 로 따로 뽑아 검토 대상으로 출력한다.
  • ORCID 가 있으면 그것이 최우선이다. 이름 매칭은 ORCID 가 없을 때의 차선책이다.

연관 skill

kol-profile(이 판정 위에서 동작), corresponding-author-verify, institution-resolve(같은 종류의 정규화 문제)