🧬 연구 허브

Skill

kol-profile 코드 참조

논문을 사람 단위로 뒤집어 역할·경력단계·Rising star·기관 집계를 낸다.

언제 쓰나

논문 목록을 사람 단위로 뒤집어 누가 이 분야의 핵심인지 볼 때. 입력은 병합된 논문 JSON, 출력은 시트 5개짜리 Excel(Papers / KOL / Institutions / Rising / Summary)이다.

정본 코드

~/Documents/혜연/BTC_KOL_PoC/analyze_kol.py   1,046줄
  resolve_roles()     저자 역할 판정
  career_stage()      경력 단계 분류
  build_profiles()    연구자 프로파일
  write_excel()       다중 시트 산출
python3 analyze_kol.py --topic btc
python3 analyze_kol.py --selfcheck

저자 동일인 판정이 선행되어야 한다 — author-disambiguate.

역할 판정 — 5단계 우선순위

이 함수의 주석이 이 스킬에서 가장 값진 부분이다.

순위근거성격
①WoS RP 필드실측 · Clarivate 가 저자 순서까지 맞춰둠
②OpenAlex is_corresponding실측 · 이름으로 맞춘 결과
③PDF 원문 ∪ 소속란 이메일실측 · ⑤를 대체하는 것이 목적
④PubMed Electronic address:실측이나 0.3% 만 존재
⑤마지막 저자추정 · 실측 대비 60.3% 오차

②를 ①보다 뒤에 두는 이유가 중요하다. 둘 다 실측이지만 WoS RP 는 저자 순서까지 맞춰진 값이고 OpenAlex 는 우리가 이름으로 맞춘 결과다. 같은 '실측'이라도 검증 단계를 더 거친 쪽을 먼저 쓴다.

③은 합집합으로 쓴다

PDF 와 이메일이 서로 다른 사람을 가리키면 한쪽을 버리지 않고 공동교신으로 본다.

각각 독립 근거이고 둘 다 이름으로 검증된 값이라, 서로 다른 사람을 가리키면 한쪽을 버릴 게 아니라 공동교신으로 보는 편이 맞다 — 실측 사례가 그랬다(Clin Mol Hepatol 2026, 원문 표기 "Corresponding authors" 복수형).

충돌을 오류로 처리하기 전에 둘 다 맞을 수 있는지 본다.

경력 단계

제1저자 수(fa)와 교신저자 수(ca)로 나눈다.

ca == 0                      → 신진 (pre_transition)
ca >= 10 또는 ca/(fa+ca) > 0.5 → 확립 (established)
그 외                         → 전환기 (in_transition)

교신저자 비중이 경력을 말해준다. 1저자만 있으면 아직 남의 연구를 수행하는 단계, 교신이 늘면 자기 연구를 이끄는 단계다.

Rising star 선별

rising = kol_df[(kol_df["Total"] >= 5)              # 최소 실적
                & (kol_df["Recent_Share"] >= 0.6)   # 최근 편중
                & (kol_df["Recent_Corresponding"] >= 1)]  # 최근 교신 경험

세 조건을 모두 요구한다. 최근 비중만 보면 논문 2편짜리가 100%로 1등이 되고, 실적만 보면 옛날 사람이 올라온다. 교신 경험을 넣어야 단순 참여자가 걸러진다.

recent_from(최근 실적 기준 연도)은 고정값으로 두고 인자로 덮어쓸 수 있게 한다 — 데이터에 의존하면 데이터가 바뀔 때마다 기준이 흔들려 비교가 안 된다.

기관은 두 단위로 낸다

# 상위기관 — 병원 단위와 대학 단위 집계를 모두 낼 수 있게 한다.
# (서울아산병원은 울산대학교 계열, 삼성서울병원은 성균관대학교 계열)

병원별·대학별 순위가 다르게 나오고 둘 다 필요하다. institution-resolve 의 parent_label 을 써서 한 번에 낸다.

연구주제는 MeSH 로

# ponytail: 수작업 키워드 분류표를 두지 않는다. MeSH는 NLM 인덱서가 이미 붙여둔
#   통제어휘이고, 질환을 바꿔도 그대로 동작한다.
#   한계 = MeSH 미부여 논문(최신·국내지, 약 19%)은 주제가 비게 된다.

한계와 업그레이드 경로를 주석에 같이 적어 뒀다. 19% 결측을 채우는 건 paper-relevance-judge 가 맡는다.

변별력 없는 MeSH(GENERIC_MESH)와 주제별 제외어(mesh_exclude)를 걷어낸다 — "Humans", "Male" 같은 게 상위 주제로 올라오면 표가 무의미하다.

함정

  • 애매한 저자 묶음은 ambig_df 로 따로 시트를 낸다. 자동 판정을 숨기지 않는다.
  • 지표를 내기 전에 author-disambiguate 결과를 먼저 검토한다. 저자가 잘못 묶이면 모든 지표가 틀린다.
  • --selfcheck 로 로직을 먼저 검증하고 전량을 돌린다.

연관 skill

author-disambiguate(선행), corresponding-author-verify(역할 근거 공급), institution-resolve, paper-relevance-judge