논문의 사사(Funding/Acknowledgement) 텍스트에서 과제 번호를 추출하고, 기관명을 정규화합니다. 한국(NRF, MSIT, IITP), 미국(NIH, NSF), 일본(JSPS), 중국(NSFC), 유럽(ERC) 등 주요 기관을 지원합니다.
사용법
import {
extractGrantNumbers,
normalizeAgency,
normalizeAgencies,
parseFundingInfo,
inferAgencyFromGrant,
summarizeFunding,
getAgencyColor,
AGENCY_COLORS
} from "@/lib/grant-parser"
// 1. 텍스트에서 과제 번호 추출
const grants = extractGrantNumbers(
"This work was supported by NRF-2023R1A2C1005678 and NIH R01 GM987654"
)
// → ["2023R1A2C1005678", "R01GM987654"]
// 2. 기관명 정규화
normalizeAgency("national research foundation of korea") // → "NRF"
normalizeAgency("national institutes of health") // → "NIH"
normalizeAgency("japan society for the promotion of science") // → "JSPS"
// 3. WoS Funding 정보 통합 파싱
const funding = parseFundingInfo(
"NRF; NIH", // fundingOrgs
"Grant No. 2023R1A2C1005678" // fundingText
)
// → { agencies: ["NRF", "NIH"], grantNumbers: ["2023R1A2C1005678"], fundingText: "..." }
// 4. 과제 번호로 기관 추론
inferAgencyFromGrant("2023R1A2C1005678") // → "NRF"
inferAgencyFromGrant("R01GM987654") // → "NIH"
inferAgencyFromGrant("2021-0-01234-001") // → "IITP"
// 5. UI 표시용 요약
const summary = summarizeFunding(["NRF", "NIH"], ["2023R1A2C1005678", "R01GM987654"])
// → { hasGrants: true, primaryAgency: "NRF", grantCount: 2, displayText: "NRF (2)" }
// 6. 기관 배지 색상
getAgencyColor("NRF") // → "bg-blue-100 text-blue-800 border-blue-300"
getAgencyColor("NIH") // → "bg-green-100 text-green-800 border-green-300"
getAgencyColor("JSPS") // → "bg-red-100 text-red-800 border-red-300"지원 과제번호 패턴
한국
| 기관 | 패턴 | 예시 |
|---|---|---|
| NRF (한국연구재단) | YYYY R N A N A NNNN... | 2023R1A2C1005678 |
| MSIT/IITP | YYYY-N-NNNNN(-NNN) | 2021-0-01234-001 |
미국
| 기관 | 패턴 | 예시 |
|---|---|---|
| NIH | XNN XX NNNNN+ | R01 GM987654, P50 CA211015 |
| NSF | 일반 패턴 매칭 |
일반
| 패턴 | 키워드 |
|---|---|
grant/award/project + no./number/# + 번호 | 6~20자 영숫자-하이픈 |
지원 기관 목록 (정규화)
한국 기관 (파란색 계열)
| 입력 | 정규화 | 배지 색상 |
|---|---|---|
| national research foundation of korea | NRF | bg-blue-100 |
| ministry of science and ict | MSIT | bg-blue-50 |
| information & communications technology planning & evaluation | IITP | bg-indigo-100 |
| korea health industry development institute | KHIDI | bg-cyan-100 |
| national cancer center | NCC | bg-blue-100 |
미국 NIH 관련 (녹색 계열)
| 입력 | 정규화 | 배지 색상 |
|---|---|---|
| national institutes of health | NIH | bg-green-100 |
| national cancer institute | NCI | bg-emerald-100 |
| national institute of general medical sciences | NIGMS | bg-green-50 |
| national heart, lung, and blood institute | NHLBI | bg-green-100 |
미국 기타
| 입력 | 정규화 | 배지 색상 |
|---|---|---|
| national science foundation | NSF | bg-orange-100 |
| department of defense | DOD | bg-slate-100 |
아시아/유럽
| 입력 | 정규화 | 배지 색상 |
|---|---|---|
| japan society for the promotion of science | JSPS | bg-red-100 |
| national natural science foundation of china | NSFC | bg-amber-100 |
| european research council | ERC | bg-purple-100 |
트러블슈팅
1. 과제 번호 미추출
원인: 비표준 형식이거나 패턴에 미등록 해결: extractGrantNumbers() 함수에 새 패턴 추가 (정규식)
2. 기관명 미인식
원인: AGENCY_ALIASES에 미등록 해결: grant-parser.ts의 AGENCY_ALIASES 맵에 추가
3. WoS Funding Text가 없음
원인: WoS 데이터에 Funding 정보가 미포함 해결: PDF 분석(batch-author-extractor 스킬)에서 펀딩 정보 추출
관련 파일
| 파일 | 경로 | 설명 |
|---|---|---|
| 파서 유틸리티 | src/lib/grant-parser.ts | 과제번호 추출, 기관 정규화 |
| 펀딩 업데이트 | scripts/update-paper-funding.ts | 일괄 펀딩 정보 업데이트 |
| 저자 추출 서비스 | src/lib/author-extraction-service.ts | WOS 펀딩 파싱 연동 |
업데이트 이력
- 2026-02: 스킬 등록