참고 문헌 GB/T 7714-2015 정규화 및 링크 검증
1. 왜 별도의 스킬로 만들 가치가 있는가
이 작업은 세 가지 특징을 가지고 있습니다: 규칙 세부 사항이 많음(문헌 유형 식별자, 전자 문헌의 인용 날짜, 세 명 이상의 저자 표기 방식이 각각 다름), 실수해도 오류가 보고되지 않음(수십 개의 문자열 중 하나가 잘못되어도 발견하기 어려움), 그리고 한 번 잘못 쓰면 육안으로 발견하기 매우 어려움. 따라서 핵심은 '규칙을 기억하는 것'이 아니라 프로그래밍 방식 쓰기 + 역방향 읽기 검증 + 링크 검증이라는 이 절차입니다.
2. GB/T 7714-2015 기술 요점
기본 구조
[일련번호] 주요 책임자. 제목[문헌 유형 식별자/매체 식별자]. 출처, 연도, 권(호): 시작 페이지-끝 페이지.
일반적인 유형 식별자
| 유형 | 식별자 | 전자 버전 표기 |
|---|---|---|
| 일반 도서 | [M] | [M/OL] |
| 학술지 논문 | [J] | [J/OL] |
| 신문 기사 | [N] | [N/OL] |
| 학위 논문 | [D] | [D/OL] |
| 보고서 | [R] | [R/OL] |
| 표준 | [S] | — |
| 전자公告 | [EB/OL] | — |
| 특허 | [P] | [P/OL] |
반드시 주의해야 할 세 가지
- 전자 문헌은 인용 날짜와 접근 경로를 반드시 기술해야 합니다 — GB/T 7714-2015 제4.9조 요구 사항.
URL / DOI가 포함된 문헌의 표준 표기는 다음과 같아야 합니다.
[J/OL]. 저널명, 연도, 권(호): 페이지[인용 날짜]. https://.... 반대로, 대상 저널/학교에서 요구하지 않는 경우 인용 날짜를 생략해도 괜찮지만, 이것이 자신의 선택임을 알아야 합니다. - 책임자가 3명을 초과할 경우, 중국어 문헌은 '주요 책임자, 등'으로, 서양 문헌은 '주 책임자, et al'로 씁니다. 국가 표준은 모두 나열하는 것을 허용하지만, 동일한 문헌 내에서는 일관성을 유지해야 합니다.
- 서양 저자의 성은 앞에, 이름 약자는 뒤에:
Büller HR, Verhamme P, Weitz JI. PubMed의Buller HR를 가져와서 변음 기호를 잃지 말고,HR Büller와 같이 쓰지 마십시오.
3. 링크 검증 (핵심 도구)
# 한 줄에 하나씩: URL / DOI / PMID / PMC 번호, 스크립트가 자동으로 유형 판별
python3 scripts/check_refs.py refs.txt
# JSON 입력, 명시적 유형 지정 지원
python3 scripts/check_refs.py refs.json --timeout 20 --workers 8
종료 코드: 0 = 명확한 오류 항목 없음; 1 = 오류 항목 존재.
지원되는 입력 형식:
| 입력 | 해석 결과 |
|---|---|
10.1056/NEJMoa2513880 또는 https://doi.org/... | DOI 링크 |
25482425 (순수 숫자) | PubMed 링크 |
PMC2909362 | PMC 링크 |
https://... 또는 베어 도메인 | 원본 그대로 접근 |
판단 로직 (중요)
스크립트는 결과를 세 가지 버킷으로 나눕니다. 200이 아닌 응답을 바로 오류로 판단하지 마십시오:
| 버킷 | 조건 | 처리 |
|---|---|---|
| 직접 접근 가능 | 200 / 203 / 30x | 통과 |
| 안티-스크래핑 의심 | 403 / 412 / 429 / 503 / 000 (치명적 오류 없음) | 브라우저로 재확인, 링크 오류 아님 |
| 확실한 오류 의심 | curl이 명시적으로 could not resolve host 등 DNS/인증서 오류 보고 | 확인 후 해당 링크 교체 또는 삭제 |
이미 테스트된 두 가지 함정:
- PubMed가 203 반환, 실패 아님. 한때 203을 오류로 간주하여 한바탕 불필요한 조사를 낭비함
curl -s는 DNS 오류를 자동으로 무시하여 '도메인 존재하지 않음'과 '네트워크 차단'이라는 완전히 다른 두 상황이 모두 000으로 표시됨. 스크립트는-sS를 사용하고 stderr를 통해 구분함
일반적인 사이트 접근 특성
| 사이트 | 특성 |
|---|---|
nhc.gov.cn (국가위생건강위원회) | curl은 종종 412 안티-스크래핑 반환, 브라우저에서 정상적으로 열림 |
| Wanfang med. 도메인 | 안티-스크래핑 있음, d.wanfangdata.com.cn/periodical/<xxx> 형식으로 변경 가능 |
| CNKI | 일반적으로 직접 링크 제공하지 않음, 문헌 검색 가능하면 OK, URL 강요 불필요 |
| NEJM / Lancet | 유료 벽, curl은 종종 403 반환; DOI만 있으면 충분 |
4. 쓰기 기술: 문자 오류 방지
이것은 이 스킬에서 가장 간과하기 쉽고 실제 피해를 가장 많이 일으키는 부분입니다.
긴 Heredoc을 사용하여 docx / json / py 파일에 긴 목록의 문헌을 직접 쓰지 마십시오.
실무에서 문자 오류가 자주 발생했습니다: DOI 접두사 오기 (10.7723가 10.19546 등으로 잘못됨),
저자명 오자, 정책 문서 번호 깨짐 등, 쓰기 과정에서 오류가 보고되지 않습니다.
올바른 방법:
# 1) 문헌 목록을 Python 데이터 구조로 구성하고, 프로그래밍 방식으로 전체 블록 쓰기
refs = [
{"id": 1, "text": "Büller HR, ...", "url": "https://...", "doi": "10.1056/..."},
...
]
# 2) 검증 목록 정의
must_have = ["25482425", "10.1056/NEJMoa2513880", "국위의발", "Büller"]
bads = ["10.7723", "리상지남", "ERUOIMMUON"]
# 3) 쓰기 후 즉시 역방향 읽기 검증
content = read_back()
missing = [s for s in must_have if s not in content]
leaked = [s for s in bads if s in content]
assert not missing and not leaked, (missing, leaked)
must_have에는 핵심 식별자(PMID, DOI, 문서 번호, 쓰기 어려운 인명/지명)를 넣고,
bads에는 알려진 잘못된 표기를 넣습니다. 둘 다 필요합니다: 전자는 내용 누락 방지, 후자는 오류 내용 생성 방지.
5. 일반적인 오류 목록 (하나씩 확인하세요)
| 오류 | 예시 | 올바른 표기 |
|---|---|---|
| 다른 기준의 수치 병합 | '2-4%(RCT)'와 '2-5%(실제 세계)'를 하나의 숫자로 병합 | 기준 차이 유지, 분리하여 작성 |
| 권/호/페이지 오기 | Büller를 2009;361:1722로 표기 | 실제는 NEJM 2015;372:232-240 |
| 인용 전환 오류 | 2차 리뷰의 숫자를 인용하면서 원본 RCT로 표시 | 원본 출처 추적, 또는 '재인용' 명시 |
| 정책 문서 출처 없음 | 본문에 5개 문서 인용했지만 참고 문헌 목록에 하나도 없음 | 본문에서 인용한 모든 정책/보고서는 목록에 포함 |
| 제목 불일치 | 문헌[1] 제목이 실제 게재 논문과 다름 | 항목별로 제목 확인 |
| 고유명사 철자 오류 | EUROIMMUN을 ERUOIMMUON으로 표기 | 항목별로 고유명사 시각 확인 |
6. Zotero / CSL 관련
Zotero 인용 스타일을 조정해야 할 때는 플러그인 설정보다 .csl 파일을 직접 수정하는 것이 더 제어하기 쉽습니다.
예를 들어 GB/T 7714-2015 숫자 스타일이 각 문헌 끝에 [인용 날짜]를 붙이는 경우,
accessed-date 매크로를 찾아 매크로 본문을 <group/>으로 비우면 전체 사이트에서 비활성화됩니다(한 번 수정).
동시에 id / title / updated를 수정하여 공식 스타일과 충돌하지 않도록 합니다.
단, 스스로 상기해야 할 점: GB/T 7714-2015는 전자 문헌에 인용 날짜 기술을 요구합니다(제4.9조). 이를 제거하면 공식投稿하는 저널/학위 논문에 대해 규격에 맞지 않을 수 있습니다. 이것은 사용자 자신의 판단이며, 이러한 선택을 명확히 알리고 조용히 제거해서는 안 됩니다.
issued-year 매크로에 남아 있는 하나의 accessed 대체 처리(issued 누락 시 접근 연도로 대체)는 합리적이므로,
함께 삭제하지 마십시오.
7. 점검 목록
- 각 문헌의 유형 식별자가
/OL여부와 일치하는가 - 3명 이상 저자의 처리 방식이 전반적으로 일관된가
- 서양 인명이 성 앞, 이름 약자; 변음 기호 누락 없음
- 전자 문헌에 인용 날짜(명시적으로 제외하기로 결정하지 않은 경우)와 접근 경로가 있는가
- DOI 접두사가 정확하고, 반각/전각 혼용 없음
- 링크가
check_refs.py실행 완료, '안티-스크래핑 의심' 항목은 브라우저로 재확인 - 쓰기 후
must_have/bads역방향 읽기 검증 통과 - 본문에서 인용된 모든 항목이 문헌 목록에 나타나고, 그 반대도 마찬가지인가