Busan Data Guide
목차
- 1 📚 부산 지역 인문학 데이터 편찬 입문 가이드
- 1.1 📚 부산 지역 인문학 데이터 편찬 입문 가이드
- 1.2 📚 부산 지역 인문학 데이터 편찬 입문 가이드
- 1.3 들어가며
- 1.4 📖 들어가며: 부산 인문 자료의 디지털화
- 1.5 📚 프로젝트 규모 및 팀 구성
- 1.6 👥 팀 구성 (총 24명: 인문계 18명 + 이공계 6명)
- 1.7 📊 인문계 학생 (각 팀 4~7명씩, 총 18명) 주요 역할
- 1.8 💻 이공계 학생 (각 팀 2명씩, 총 6명) 주요 역할
- 1.9 📊 작업 일정 계획 (2026년 1월~2월)
- 1.10 이제 책 속의 자료를 시맨틱 데이터로 변환하는 기초 작업을 진행할 예정입니다. 왜 이 작업이 필요할까요?
- 1.11 🔥 전체 로드맵: 3단계 여정
- 1.12 📊 우리 팀 데이터 구조 이해하기
- 1.13 🔑 핵심 필드 설명
- 1.14 🔢 ID 부여 규칙 마스터하기
- 1.15 🛠️ 단계별 작업 프로세스
- 1.16 최종 체크리스트
- 1.17 STEP 3: XML태깅
- 1.18 📚 온톨로지 설계 참고: 광주인문도시 사례
- 1.19 🎯 단계별 태깅 전략 (난이도별 접근)
- 1.20 🔍 1차 작업: 인명 + 지명 태깅 실전
- 1.21 xml 규칙: 같은 내용도 나올 때마다 계속 표기, id는 처음에 한번, 그다음은 ref 속성(#은 문서 내에 있는 id 참조하라는 의미)
- 1.22 <요소명 속성="속성값">(시작태그)콘텐츠</요소명>(끝태그)
- 1.23 예시
- 1.24 text_type: 인용문 전체를 태깅
- 1.25 인용문의 출처가 있는 경우 → <cit> 안에 <quote>와 <bibl> 추가
- 1.26 평서문과 인용문이 이어지는 경우
- 1.27 text_original에 / → 한시 행바꿈<l>(line), 1연<lg>(line group)
- 1.28 🔄 작업 도구별 역할 정리
- 1.29 ⚠️ 태깅 시 주의사항
- 1.30 태깅 진도 체크리스트
- 1.31 💻 실습 스프레드시트
- 1.32 마무리
- 1.33 📎 참고 자료
📚 부산 지역 인문학 데이터 편찬 입문 가이드
부산광역시 문화유산과 시사편찬실 발간 도서 『부산을 빛낸 인물』과 『부산의 자연마을』의 디지털 데이터 변환
| 들어가며 · 전체 로드맵 · 데이터 구조(Excel) · 실전 예시 · ID 규칙 · 작업 프로세스 · 실습 스프레드시트 · XML 태깅 · Q&A |
📚 부산 지역 인문학 데이터 편찬 입문 가이드
부산광역시 문화유산과 시사편찬실 발간 도서 『부산을 빛낸 인물』과 『부산의 자연마을』의 디지털 데이터 변환
📚 부산 지역 인문학 데이터 편찬 입문 가이드
부산광역시 문화유산과 시사편찬실 발간 도서 『부산을 빛낸 인물』과 『부산의 자연마을』의 디지털 데이터 변환
들어가며
전체 로드맵
데이터 구조(Excel)
실전 예시
ID 규칙
작업 프로세스
실습 스프레드시트
XML 태깅
Q&A
📖 들어가며: 부산 인문 자료의 디지털화
본 프로젝트는 부산광역시 문화유산과 시사편찬실에서 발간한 『부산을 빛낸 인물』과 『부산의 자연마을』이라는 부산의 인문 자료를 디지털 데이터로 변환하는 기초 작업입니다.
📚 프로젝트 규모 및 팀 구성
작업 대상 자료: 부산광역시사편찬위원회 자료실 및 부산 지역사 도서관에서 PDF 확인 가능
- 『부산의 자연마을』전 6권 : 약 2,400페이지
- 『부산을 빛낸 인물』전 3권 : 약 800페이지
👥 팀 구성 (총 24명: 인문계 18명 + 이공계 6명)
역할: 인문계-데이터 편찬 및 태깅 / 이공계-기술 지원 및 자동화
A팀
- 부산을 빛낸 인물 전 3권(총 800페이지)
- 인원: 6명 (인문계 4명 + 이공계 2명)
- 담당: 『부산을 빛낸 인물』 800페이지
- 총괄: 디지털인문학센터 연구전략부장
B팀
- 부산의 자연마을 제1, 2, 6권(총 1,200페이지)
- 인원: 9명 (인문계 7명 + 이공계 2명)
- 담당: 『부산의 자연마을』 1,200페이지
- 총괄: 디지털인문학센터 교육지원부장
C팀
- 부산의 자연마을 제3, 4, 5권(총 1,200페이지)
- 인원: 9명 (인문계 7명 + 이공계 2명)
- 담당: 『부산의 자연마을』 1,200페이지
- 총괄: 디지털인문학센터 계약교수
📊 인문계 학생 (각 팀 4~7명씩, 총 18명) 주요 역할
- PDF에서 추출한 텍스트를 Excel/구글 시트에 입력
- 텍스트 유형 판단 (분류 작업)
- 의미 요소 식별 (XML 태깅을 위한 준비 작업)
- 메타데이터(페이지, 장 번호 등 서지 정보 기록) 관리
💻 이공계 학생 (각 팀 2명씩, 총 6명) 주요 역할
- 파이썬 스크립트 개발 (태깅 마커 → XML 자동 변환)
- 데이터 검증 및 오류 체크 자동화
- 팀 내 기술적 문제 실시간 지원
- VSCode, Git 등 도구 활용 교육
📊 작업 일정 계획 (2026년 1월~2월)
📚 전체 분량
- 『부산을 빛낸 인물』: 총 800여 페이지 → 1개 팀 (6명) 담당
- 『부산의 자연마을』: 총 2,400여 페이지 → 2개 팀 (각 9명) 분담
- 1팀: 1,200페이지
- 2팀: 1,200페이지
※ 각 팀원은 담당 권/장을 선정하여 2개월간 데이터 편찬 작업을 진행합니다.
💡 팀별 작업 진도 관리 팁
- 일일/주간/월간 목표 정하기
- 정기 모임: 매주 날짜와 시간을 정해 줌으로 진도 점검 등
- 비상 연락: 단톡방 개설/공동 작업 파일
이제 책 속의 자료를 시맨틱 데이터로 변환하는 기초 작업을 진행할 예정입니다. 왜 이 작업이 필요할까요?
부산광역시사편찬위원회 자료실에 PDF로 제공되는 도서는 한 번에 한 사람만 읽을 수 있지만, 디지털 데이터로 변환된 지식은:
- 💡 검색 가능: "1950년대 부산 영도구"라고 검색하면 관련된 모든 내용이 한눈에 보이게 만들 수 있습니다!
- 🔗 연결 가능: 인물과 장소, 사건이 서로 연결되어 새로운 통찰을 발견할 수 있습니다!
- 📊 분석 가능: 빈도, 패턴, 관계를 통해 보이지 않던 역사적 의미를 발견할 수 있습니다!
- 🌐 공유 가능: 전 세계 연구자들과 부산의 이야기를 나눌 수 있어요
🔥 전체 로드맵: 3단계 여정
1. 데이터 편찬(Data Compilation)현재 단계
- PDF → 텍스트 추출
- 구조화 → CSV 정리
- 태깅 → XML 변환
- 목표: 원천 자료를 DB에 업로드 가능한 형태로 구조화
2. 데이터 분석(Data Analysis)
- 빈도 분석 & 키워드 추출
- 관계 파악
- 의미 해석
- 목표: 구축된 데이터에서 학문적 의미와 패턴 도출
3. 데이터 설계(Data Modeling)
- 온톨로지 설계
- 지식 그래프 구상
- 활용 방안 기획
- 목표: 플랫폼 구축을 위한 데이터 모델링
📊 우리 팀 데이터 구조 이해하기
우리가 사용하는 구글 시트는 18개의 필드(열)로 구성되어 있어요. 각 필드가 왜 필요한지 함께 살펴볼까요?
💡 작업 단계별 사용 필드
- 1단계 (csv): id, book_title, person_id, text_original, text_type
- 2단계 (txt): text_original 컬럼만 별도로 text_tagged 작업
- 3단계 (xml): text_tagged 작업물 → XML 자동변환(파이썬 스크립트 개발)
💡 중간 산출물: 총괄 교수님과 상의 후 팀별로 경과 보고
💡 최종 산출물: 권별.csv, 권별.txt, 권별.xml + 팀별 결과보고서(팀장을 정해서 한 명이 9개 파일 수합 후 이메일로 제출)
💡 권별 파일명(부산 지역사 도서관 PDF파일명을 따름): lightuppeople01..., B_jayeonmaeul01...
🔑 핵심 필드 설명
| 필드명 | 예시 | 설명 | 작업자가 할 일 | |-|-|-|-| | id | txt_10001 | 텍스트 고유 번호 | 필수 반드시 부여 (중복 금지!) | | book_id | lightuppeople01 | 책 식별자 | 책마다 고정값 사용 | | book_title | 부산을_빛낸_인물 | 책 제목 | 언더바(_)로 연결 | | sub_title | 20세기_이전_인물편 | 부제목 | 있는 경우만 입력 | | publisher | 부산광역시_문화유산과_시사편찬실 | 발행처 | 책 정보 그대로 | | pub_date | 2004.06 | 출판일 | YYYY.MM 형식 | | chapter | 001 | 장 번호 | 3자리 숫자 (001, 002...) | | page | 005 | 페이지 | 3자리 숫자 (005, 006...) | | person_id | per_101_001 | 인물 고유 번호 | 필수 새 인물마다 부여 | | name_ko | 최치원 | 인물 한글 이름 | 정확하게 입력 | | name_ch | 崔致遠 | 인물 한자 이름 | 있는 경우만 입력 | | topic | 해운대의_유래 | 소주제 | 섹션 제목 그대로 | | author | 정경주_경성대교수 | 글쓴이 | 이름_소속 형식 | | text_original | (본문 내용) | 원문 텍스트 | 필수 가장 중요! | | text_type | normal / citation / poem | 텍스트 유형 | 집필자가 기술한 텍스트인지 인용문인지 등을 구별 | | relation_note | txt_10008 | 관련 텍스트 ID | 연결된 경우만 | | img_caption | 최치원_영정 | 이미지 설명 | 이미지 있을 때만 | | remark | 번역문 / 원문 | 비고 | 필수 2월말에 결과보고서로 제출 |
🔢 ID 부여 규칙 마스터하기
1. 텍스트 ID (id) 규칙
txt_10001, txt_10002, txt_10003...
- 형식: txt_ + 5자리 숫자
- 시작: 10001부터 시작
- 연속성: 중간에 번호를 건너뛰지 않음
- 고유성: 전체 데이터베이스에서 중복되면 안 됨!
2. 인물 ID (person_id) 규칙
per_101_001, per_101_002, per_102_001...
- 형식: per_ 10001
- 책번호:
- 10001 = 『부산을 빛낸 인물』 권1
- 20001 = 『부산을 빛낸 인물』 권2
- 40001 = 『부산의 자연마을』 권1
- 인물번호: 책 내에서 등장 순서대로 10001, 10002 … 순으로 부여
실전 예시
| 상황 | person_id | 설명 | |-|-|-| | 최치원이 5페이지에서 처음 등장 | per_101_001 | 첫 번째 인물 | | 정서가 11페이지에서 처음 등장 | per_101_002 | 두 번째 인물 | | 최치원이 다시 15페이지에 등장 | per_101_001 | 동일 ID 재사용! |
※ 인물 등장 순서대로 번호 부여: 페이지 순서가 아니라 등장 순서
※ 같은 인물은 같은 ID: 여러 페이지 혹은 다른 책에 등장해도 ID는 하나(인물별 주민번호처럼 사용)
※ 엑셀 필터 활용: 이미 부여된 인물 ID 확인하기
🛠️ 단계별 작업 프로세스
STEP 1: PDF에서 텍스트 추출
- 방법 1: 부산 지역사 도서관에서 pdf 다운로드(파일명 확인)
- PDF 파일에서 문단 단위로 Ctrl+C (복사) → 엑셀에 도서의 페이지, 챕터 번호, 챕터명(한글: name_ko, 한문: name_ch), 장제목(topic)확인 하면서 원문을 text_original 컬럼에 Ctrl+V (붙여넣기)
- 텍스트 문단별 (txt_id) 부여, 인물별 (per_id) 부여, 집필자 (author) 확인
- 인용문 등의 text_type 표기, 이어지는 문단 및 이미지 삽입 위치(relation_note) 입력, 이미지 캡션, 도서 정보 채우기(시트마다 동일)
- 기타 기록사항(remark)은 기계 학습보다 사람이 참고하는 컬럼이므로 자유롭게 기술, 논의가 필요한 부분이나 애매한 부분, 임의로 처리한 부분들을 기재한 후 나중에 모아서 결과보고서 양식에 맞게 작성하여 제출
- 띄어쓰기는 _표시
STEP 2: 텍스트 전처리
정규표현식:
- 중복된 단어로 인식하므로 괄호와 괄호 안의 모든 문자를 찾아서 제거: clean_text = re.sub(r'([^)]*)', , text)
- 형태소 분석시 같이 추출될 수 있으므로 한글, 영어, 숫자, 공백을 제외한 모든 특수문자 제거(따옴표, 괄호, 꺽쇠, 마침표 등 싹 지워짐): clean_text = re.sub(r'[^ws]', , text)
text_original 문장을 메모패드 등에서 정규표현식으로 전처리 작업
| text_original | 전처리 작업 후 | |-|-| | 사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 인하여 이름을 얻게 된다. 한반도 동남쪽 끝 바닷가의 한 모퉁이에 있는 해운대는 천년 전 신라의 학사 최치원이 머물며 자취를 남긴 곳이다. 지금도 동백섬 동남쪽 해변에는 "해운대(海雲臺)"라 새긴 글자가 남아 있는데, 최치원이 쓴 글씨라고 전해온다. | 사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 인하여 이름을 얻게 된다. 한반도 동남쪽 끝 바닷가의 한 모퉁이에 있는 해운대는 천년 전 신라의 학사 최치원이 머물며 자취를 남긴 곳이다. 지금도 동백섬 동남쪽 해변에는 해운대라 새긴 글자가 남아 있는데, 최치원이 쓴 글씨라고 전해온다. |
1월 16일까지 excel 파일 제출
1월 23일까지 전처리 작업한 txt 제출
1월25일까지 검수 완료, xml에 대한 완성된 지침을 발송할 예정
최종 체크리스트
작업 완료 전에 꼭 확인하세요!
- id가 연속되어 있나요? (txt_10001 → txt_10002 → txt_10003)
- person_id가 올바르게 부여되었나요?(부산인물)
- place_id가 올바르게 부여되었나요?(자연마을)
- 같은 인물이 다른 도서에도 나오는지 확인하고 person_id를 사용했나요?(중요)
- 인용문의 경우 text_type에 표시되어 있나요?
- 시의 원문과 번역문을 분리했나요?
- relation_note로 관련 텍스트를 연결했나요?(이미지 위치 확인 포함)
- 한자 이름이 있는 경우 name_ch에 입력했나요?
- 도서 정보와 집필자 정보 정확하게 기입했나요?
- 전처리 작업물 중 누락된 부분은 없나요?(분석작업 시 방해요소 없는지 확인)
- 형태소 분석이나 토픽모델링 등의 분석을 진행할 파일이니 방해요소는 과감하게 다 지우셔도 됩니다. 그래야 토픽모델링 결과가 깔끔하게 잘 나옵니다!
STEP 3: XML태깅
🏷️ XML 태깅이란? 데이터에 의미를 부여하는 작업입니다. CSV로 정리한 텍스트에 의미론적 태그(Semantic Tags)를 붙여서 컴퓨터가 "누가", "어디서", "언제" 같은 정보를 컴퓨터가 이해할 수 있게 만드는 작업입니다.
🎯 왜 XML 태깅이 필요한가요?
태깅 전 (일반 텍스트)
최치원은 857년에 경주에서 태어났다.→ 컴퓨터는 그냥 글자로만 인식
태깅 후 (XML)
<persName>최치원</persName>은 <date when="857">857년</date>에 <placeName>경주</placeName>에서 태어났다.
→ 인물, 시간, 장소를 구분해서 인식!
📚 온톨로지 설계 참고: 광주인문도시 사례
우리 프로젝트는 광주인문도시스토리플랫폼의 온톨로지 설계를 참고합니다:
🔗 광주 온톨로지 Class 설계 보기
광주 사례에서는 Person, Place, Event, Organization, Artifact 등의 클래스를 정의했습니다. 우리는 이를 부산 지역 특성에 맞게 적용할 예정입니다.
🎯 단계별 태깅 전략 (난이도별 접근)
1차 작업 (필수) - 가장 명확한 요소
현재 작업 단계
| 요소 | 마커 | 설명 | |-|-|-| | 인명 | [P]최치원[/P] | 사람 이름 (판단 쉬움) | | 지명 | [L]영도구[/L] | 장소, 지역명 (판단 쉬움) |
💡 추천: 현재의 기초 작업에서는 인명과 지명, 날짜(연도)에 특히 집중하는 것을 권장합니다!
✅ 판단이 가장 명확
✅ 작업 속도가 빠름
✅ 온톨로지 핵심인 "누가-어디서" 관계망 우선 구축
2차 작업 (선택) - 조금 더 복잡
| 요소 | 마커 | 설명 | |-|-|-| | 기관명 | [O]동래부[/O] | 단체, 조직, 관청 | | 서명 | [B]동래부지[/B] | 책, 문서, 작품명 | | 시간 | [D]1876년[/D] | 날짜, 연도, 시대 |
진행 시기: 1차 작업 완료 후 또는 동시 진행 가능
3차 작업 (고급) - 전문가 검수 필요
| 요소 | 마커 | 설명 | |-|-|-| | 문화유산 | [H]동래읍성[/H] | 유적, 문화재, 건축물 | | 사건명 | [E]임진왜란[/E] | 역사적 사건, 행사 | | 작품명 | [W]해운대가[/W] | 시, 그림, 예술작품 |
진행 시기: 데이터 분석 및 설계 단계에서 정밀하게 진행될 예정이나, 명확한 판단이 가능하다면 기초 작업에서 작업 가능합니다.
※ 문화유산과 지명, 작품명과 서명의 구분이 애매할 수 있으므로 검수자 확인 반드시 필요
🔍 1차 작업: 인명 + 지명 태깅 실전
예시 1: 『부산을 빛낸 인물』
원문:
최치원은 857년(헌안왕 원년)에 신라의 서울 경주에서 태어났다. 868년(경문왕 8)에 12세의 나이로 당나라에 들어갔다.
1차 태깅 (인명 + 지명+날짜만):
[P]최치원[/P]은 [D]857년(헌안왕 원년)[/D]에 [L]신라[/L]의 서울 [L]경주[/L]에서 태어났다. [D]868년(경문왕 8)[/D]에 12세의 나이로 [L]당나라[/L]에 들어갔다.
예시 2: 『부산의 자연마을』
원문:
영도구 동삼동은 조선시대에는 절영도의 일부였다. 1876년 개항 이후 일본인들이 거주하기 시작했으며, 1942년 부산부에 편입되었다.
1차 태깅 (인명 + 지명+날짜만):
[L]영도구[/L] [L]동삼동[/L]은 조선시대에는 [L]절영도[/L]의 일부였다. [D]1876년[/D] 개항 이후 일본인들이 거주하기 시작했으며, [D]1942년[/D] [L]부산부[/L]에 편입되었다.
💡 판단 기준
역할 분담: 3단계 워크플로우
인문계 학생 - Excel/Google Sheets에서 태깅
- text_original 열 오른쪽에 새 열 text_tagged 추가
- 인명과 지명, 날짜에 마커 표시:
- 인명: [P]최치원[/P]
- 지명: [L]경주[/L]
이공계 학생 - 파이썬으로 XML 자동 변환
- text_tagged 컬럼의 마커 표시된 문장
- XML 태그로 변환(TEI 준수)
- XML 파일로 출력
- 샘플 작업 후 먼저 연구책임자 검토
- 검토 의견 반영 후 Python으로 자동화 작업 시작
- VSCode(Visual Studio Code )로 XML 검수 및 수정 작업
✅ XML 구문 하이라이팅 (오류를 쉽게 발견)
✅ 태그 자동 완성
✅ 검색 & 일괄 치환 기능
✅ 확장 프로그램으로 XML 검증 가능
- 태그가 올바르게 닫혔는가? (<persName>...</persName>)
- 잘못된 마커가 남아있지 않은가? ([P] → <persName>)
- 중첩된 태그가 있는가? (수정 필요)
- 인명/지명/날짜 구분이 올바른가?
xml 규칙: 같은 내용도 나올 때마다 계속 표기, id는 처음에 한번, 그다음은 ref 속성(#은 문서 내에 있는 id 참조하라는 의미)
만약 첫 번째에만 태깅하고 두 번째부터는 그냥 텍스트로 둔다면, 나중에 플랫폼에서 이런 검색이 불가능해집니다. "최치원이 '해운대'와 같이 등장하는 문장을 다 찾아줘"
태깅 안 했을 때: 컴퓨터는 뒤에 나오는 '최치원'을 그냥 글자(가나다)로만 인식해서, 인물과의 관계를 못 찾습니다.
태깅 했을 때: 문서의 어느 위치에 있든 <persName> 태그가 붙어 있으므로 모든 결과를 긁어올 수 있습니다.
tip: 처음에 나오는 최치원에서 태그하고, 그 다음에는 찾기 바꾸기(Ctrl+H) 기능으로 최치원 찾아서 <persName ref="#per_01">최치원</persName> 모두 바꾸기, 대명사는 태깅 안 함
<요소명 속성="속성값">(시작태그)콘텐츠</요소명>(끝태그)
인명 <persName>
최치원의 경우 per_id가 부여되어 있음(속성) → <persName id="per_10001">최치원</person>
"최치원의 아버지는 견일(肩逸)인데," → 한자 포함해서 태깅 <persName>견일(肩逸)</persName> → 나중에 id 부여할 예정, 한번 태깅했으면 계속 태깅, 최치원의 아버지는 최치원을 가리키는 것이 아니라 최견일을 가리키는 것이므로, 최치원(id)으로 태깅 안 함, 자호 같은 이명이 등장하는 경우는 태깅
지명 <placeName>
해운대(海雲臺) → <place>해운대(海雲臺)</place>
고유명사 <name> 시간으로 쓰면 부사이나 주어가 될 수 있음(예: 시대, 왕조, 사건명 등)
<name type="dynasty">신라</name>
시간 <date>: 숫자로 표시 가능한 콘텐츠
857년(헌안왕 원년) → <date when="0857">857년(헌안왕 원년)</date> when의 속성값은 반드시 서기 연도 4자리를 함께 입력
예시
<persName xml:id="per_10001">최치원</person>은 <date when="0857">857년(헌안왕 원년)</date>에 <name type="period">신라</name>의 서울 <place>경주</place>에서 태어났다. <place>경주</place>의 최씨는 본디 <name type="period">신라</name> 육촌의 하나인 <place>본피부(本彼部)</place>에서 비롯하였다. <persName ref="#per_10001">최치원</person>의 고택은 <name type="period">고려</name>중엽까지 <place>황룡사</place> 남쪽에 남아 있었다고 한다. 최치원의 아버지는 <persName name="최견일">견일(肩逸)</person>인데, 그 선조가 어떤 사람인지에 대하여는 밝혀진 것이 없다. <persName ref="#per_10001">최치원</person>은 <date when="0857">868년(경문왕 8)</date>에 12세의 나이로 배를 타고 <name type="period">당나라</name>에 들어갈 때, 그의 부친이 당부한 말을 종신토록 잊지 못하였다. 그는 나중에 지은 글에 당시 그 아버지가 하신 말씀을 옮겨 놓았다.
text_type: 인용문 전체를 태깅
<cit>제 나이 열 두살 때 집을 떠나 서쪽으로 갔습니다. 배를 탈 적에 돌아가신 아버지께서 타이르시기를, '십 년 안에 진사(進士)에 급제하지 못하면 내 아들이라 하지 말라. 나도 아들을 두었다 아니하리라. 가라! 부지런히 하여 네 힘을 게을리 말라'고 하셨습니다. 저는 엄한 말씀을 가슴에 지녀 감히 잊지 못하고, 머리를 묶어 매고 송곳으로 찔러가며 부모님의 뜻을 받들 것을 기약하여, 다른 사람이 백번 하면 나는 천번을 하여, 중국에 온 지 6년만에 영광스런 이름을 방의 끄트머리에 올리게 되었습니다.</cit>
인용문의 출처가 있는 경우 → <cit> 안에 <quote>와 <bibl> 추가
<cit>
<quote id="cit_10001" type="verse">狂奔疊石吼重巒 人語難分咫尺間 常恐是非聲到耳 故敎流水盡籠山</quote>
<tranlation corr_id="cit_10001">미친 물 바위 치며 겹겹 산을 뒤흔드니 지척 사이에도 사람 소리 모르겠네. 세상의 시비 소리 들릴까 두려워서 짐짓 흐르는 물로 산을 온통 가두었네.</tranlation>
<bibl>삼국사기 권46 열전</bibl>
</cit>
평서문과 인용문이 이어지는 경우
<name type="period">당나라</name>로 건너간 <persName id="per_10001">최치원</person>은 18세 되던 해에 <name type="period">당나라</name>의 과거에 급제하고 <name type="period">당나라</name>의 <place>낙양(洛陽)</place> 땅으로 옮겨 살았다. <name type="period">당나라</name>는 과거에 급제하더라도 고위 관직에 있는 사람이 추천해 주지 않으면 벼슬자리에 나갈 수 없었다. 아무리 재능이 있었다 하더라도 만리 이국의 소년을 선뜻 관직에 추천해 줄 인물은 흔치 않았다. <persName id="per_10001">최치원</person>이 그때 지은 시에는 <cit type="verse">>갈림 길 먼지 속에 이리 날리고 저리 굴러 파리한 말 혼자 타고 고생이 얼마던가? 고향 길이 좋은 줄 모르지 않지마는 돌아간다 하더라도 집이 가난한 걸 </cit> 이라 하여 탄식을 숨기지 않았다. 만리 이국 땅에서 어린 나이로 떠돌며 생활하는 것이 참으로 막막하였던 것이다.
text_original에 / → 한시 행바꿈<l>(line), 1연<lg>(line group)
<lg>
<l>
<l>
<lg>
🔄 작업 도구별 역할 정리
| 단계 | 도구 | 작업 내용 | 담당 | |-|-|-|-| | 1단계 csv | Excel / Google Sheets | CSV 데이터 입력 (text_original) | 전체 팀원 | | 2단계 txt | Notepad++ / VSCode | 태깅 마커 표시 (text_tagged) | 인문계 학생 | | 3단계 xml | Python | 마커 → XML 자동 변환 | 이공계 학생 | | 4단계 valid check | XML Validation 도구 | XML 파일 검수 및 수정 | 팀 총괄 + 전체 |
⚠️ 태깅 시 주의사항
- 일관성 유지: 같은 대상은 항상 같은 방식으로 태깅
- 중첩 금지: [P][L]김해[/L][/P] (X) → 하나만 선택
- 불확실하면 표시 안 함: 확실한 것만 태깅, 불확실한 것은 remarks에 기록
- Excel에서 작업: 익숙한 도구로 빠르게 진행
- VSCode는 검수용: XML 변환 후 최종 확인에만 사용
태깅 진도 체크리스트
- 인명과 지명의 차이를 구분할 수 있나요?
- 마커 표기법([P], [L])을 이해했나요?
- Excel에 text_tagged 열을 추가했나요?
- 샘플 10개 문단을 태깅해보았나요?
- 팀원들과 태깅 기준을 통일했나요?
- VSCode를 설치하고 XML Tools 확장을 설치했나요?
💻 실습 스프레드시트
아래는 우리 팀이 실제로 작업하는 구글 시트입니다. 실시간으로 데이터를 확인하고 입력할 수 있어요.
📊 PNU_DHC 플랫폼 데이터 작업 시트
💡 스프레드시트 사용 팁
- 위 임베드 창에서 바로 데이터를 확인할 수 있어요
- 실제 입력은 "새 탭에서 열기" 버튼을 클릭해서 진행하세요
- 여러 사람이 동시에 작업할 수 있어요 (실시간 공동 편집)
- 변경 이력은 자동으로 저장됩니다
마무리
기억해야 할 핵심 3가지
일관성이 생명: 같은 항목은 항상 같은 방식으로 진행, 자연마을에 부산 인물에 등장했던 사람이 언급될 수 있으므로, 같은 id 부여해야 함. 그러므로 세 팀의 전체 작업을 하나의 파일에서 작업할 것임, 복사본을 만들어 검수 작업 진행
ID는 신중하게: 한번 부여한 ID는 앞으로도 계속 사용될 예정이며, 중복되지 않는지 반드시 확인
협업이 중요: 막힐 때는 팀원들과 의논하기(논의가 필요하다 생각한 부분을 결과보고서에 기입!!)
📎 참고 자료
- 작업 스프레드시트: 구글 시트 바로가기
- XML 가이드: XML 설계 입문
- 광주인문도시스토리플랫폼: 사례 참고
© 2025 부산대학교 디지털인문학센터 (Digital Humanities Center of Pusan National University) PNU 로컬 인문학 데이터 편찬 프로젝트
문의 및 결과물 제출: 김서윤 sy527991@pusan.ac.kr | 051-510-1594 | 최종 업데이트: 2025년 12월