"Busan Data Guide"의 두 판 사이의 차이

pnu_dhc
이동: 둘러보기, 검색
1번째 줄: 1번째 줄:
  
 +
<html lang="ko">
 +
<head>
 +
    <meta charset="UTF-8">
 +
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 +
    <title>부산 지역 인문학 데이터 편찬 입문 가이드</title>
 +
    <style>
 +
        * {
 +
            margin: 0;
 +
            padding: 0;
 +
            box-sizing: border-box;
 +
        }
  
<div style="background: linear-gradient(to right, #4a7ba7 0%, #5a8bb7 100%); color: white; padding: 60px 40px; border-radius: 8px; margin-bottom: 0; text-align: center; border-bottom: 6px solid #2c3e50;">
+
        body {
  <h1 style="font-size: 2.4em; margin: 0 0 15px 0; font-weight: bold; padding: 0 0 20px 0; border-bottom: 3px solid rgba(255,255,255,0.3);">
+
            font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    <span style="font-size: 1.2em;">📚</span> 부산 지역 인문학 데이터 편찬 입문 가이드
+
            line-height: 1.7;
  </h1>
+
            color: #2c3e50;
  <p style="font-size: 1.05em; margin: 0; line-height: 1.6;">부산광역시 문화유산과 시사편찬실 발간 도서 『부산을 빛낸 인물』과 『부산의 자연마을』의 디지털 데이터 변환</p>
+
            background-color: #f8f9fa;
</div>
+
            padding: 20px;
 +
        }
  
<div style="background-color: #2c5a7f; padding: 15px; margin: 0 0 20px 0; text-align: center; color: white; font-size: 0.95em;">
+
        .container {
[[#들어가며|들어가며]] · [[#전체_로드맵|전체 로드맵]] · [[#데이터_구조|데이터 구조]] · [[#실전_예시|실전 예시]] · [[#ID_규칙|ID 규칙]] · [[#작업_프로세스|작업 프로세스]] · [[#실습_스프레드시트|실습 스프레드시트]] · [[#XML_태깅|XML 태깅]] · [[#Q&A|Q&A]]
+
            max-width: 1200px;
</div>
+
            margin: 0 auto;
 +
            background-color: white;
 +
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
 +
            border-radius: 10px;
 +
            overflow: hidden;
 +
        }
  
 +
        /* Header - PNU DHC 스타일 */
 +
        header {
 +
            background: linear-gradient(135deg, #2b5a7a 0%, #3d6b8f 100%);
 +
            color: white;
 +
            padding: 40px;
 +
            text-align: center;
 +
        }
  
 +
        header h1 {
 +
            font-size: 2.2em;
 +
            margin-bottom: 10px;
 +
            font-weight: 700;
 +
            color: white;
 +
        }
  
 +
        header p {
 +
            font-size: 1.1em;
 +
            opacity: 0.95;
 +
        }
  
 +
        /* Navigation */
 +
        nav {
 +
            background-color: #1e4a66;
 +
            padding: 15px 40px;
 +
            position: sticky;
 +
            top: 0;
 +
            z-index: 100;
 +
        }
  
 +
        nav ul {
 +
            list-style: none;
 +
            display: flex;
 +
            flex-wrap: wrap;
 +
            gap: 25px;
 +
        }
  
 +
        nav a {
 +
            color: white;
 +
            text-decoration: none;
 +
            font-weight: 500;
 +
            transition: color 0.3s;
 +
        }
  
== 📚 부산 지역 인문학 데이터 편찬 입문 가이드 ==
+
        nav a:hover {
 +
            color: #ff6b35;
 +
        }
  
부산광역시 문화유산과 시사편찬실 발간 도서 『부산을 빛낸 인물』과 『부산의 자연마을』의 디지털 데이터 변환
+
        nav a:visited {
 +
            color: white;
 +
        }
  
 +
        /* Main Content */
 +
        main {
 +
            padding: 40px;
 +
        }
  
 +
        section {
 +
            margin-bottom: 60px;
 +
            scroll-margin-top: 70px;
 +
        }
  
<div style="background-color: #34495e; padding: 15px 20px; border-radius: 6px; margin-bottom: 30px; display: flex; gap: 15px; flex-wrap: wrap;">
+
        h2 {
<span style="color: white; padding: 8px 12px; border-radius: 4px;">[[#들어가며|들어가며]]</span>
+
            font-size: 2em;
<span style="color: white; padding: 8px 12px; border-radius: 4px;">[[#데이터 구조|데이터 구조]]</span>
+
            color: #2b5a7a;
<span style="color: white; padding: 8px 12px; border-radius: 4px;">[[#ID 규칙|ID 규칙]]</span>
+
            margin-bottom: 20px;
<span style="color: white; padding: 8px 12px; border-radius: 4px;">[[#작업 프로세스|작업 프로세스]]</span>
+
            padding-bottom: 10px;
<span style="color: white; padding: 8px 12px; border-radius: 4px;">[[#XML|XML 태깅]]</span>
+
            border-bottom: none;
</div>
+
        }
  
== 들어가며 ==
+
        h3 {
 +
            font-size: 1.5em;
 +
            color: #1e4a66;
 +
            margin: 30px 0 15px 0;
 +
        }
  
전체 로드맵
+
        h4 {
 +
            font-size: 1.2em;
 +
            color: #555;
 +
            margin: 20px 0 10px 0;
 +
        }
  
데이터 구조(Excel)
+
        p {
 +
            margin-bottom: 15px;
 +
        }
  
실전 예시
+
        /* Info Boxes - 차분한 색상 */
 +
        .info-box {
 +
            background-color: #e8f2f7;
 +
            border-left: 4px solid #2b5a7a;
 +
            padding: 20px;
 +
            margin: 20px 0;
 +
            border-radius: 5px;
 +
        }
  
ID 규칙
+
        .warning-box {
 +
            background-color: #fff8e6;
 +
            border-left: 4px solid #ff9f43;
 +
            padding: 20px;
 +
            margin: 20px 0;
 +
            border-radius: 5px;
 +
        }
  
작업 프로세스
+
        .success-box {
 +
            background-color: #e8f5e9;
 +
            border-left: 4px solid #4caf50;
 +
            padding: 20px;
 +
            margin: 20px 0;
 +
            border-radius: 5px;
 +
        }
  
실습 스프레드시트
+
        .tip-box {
 +
            background-color: #fff4e6;
 +
            border-left: 4px solid #ff6b35;
 +
            padding: 20px;
 +
            margin: 20px 0;
 +
            border-radius: 5px;
 +
        }
  
XML 태깅
+
        /* Tables */
 +
        .table-wrapper {
 +
            overflow-x: auto;
 +
            margin: 20px 0;
 +
        }
  
Q&A
+
        table {
 +
            width: 100%;
 +
            border-collapse: collapse;
 +
            background-color: white;
 +
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
 +
        }
  
== 📖 들어가며: 부산 인문 자료의 디지털화 ==
+
        th {
 +
            background-color: #2b5a7a;
 +
            color: white;
 +
            padding: 12px;
 +
            text-align: left;
 +
            font-weight: 600;
 +
        }
  
본 프로젝트는 부산광역시 문화유산과 시사편찬실에서 발간한 『부산을 빛낸 인물』과 『부산의 자연마을』이라는 부산의 인문 자료를 디지털 데이터로 변환하는 기초 작업입니다.
+
        td {
 +
            padding: 12px;
 +
            border-bottom: 1px solid #ddd;
 +
        }
  
== 📚 프로젝트 규모 및 팀 구성 ==
+
        tr:hover {
 +
            background-color: #f5f5f5;
 +
        }
  
작업 대상 자료: 부산광역시사편찬위원회 자료실 및 부산 지역사 도서관에서 PDF 확인 가능
+
        /* Code Blocks */
 +
        .code-block {
 +
            background-color: #2c3e50;
 +
            color: #ecf0f1;
 +
            padding: 20px;
 +
            border-radius: 5px;
 +
            overflow-x: auto;
 +
            margin: 20px 0;
 +
            font-family: 'Courier New', monospace;
 +
            line-height: 1.5;
 +
        }
  
* 『부산의 자연마을』전 6권 : 약 2,400페이지
+
        .code-inline {
* 『부산을 빛낸 인물』전 3권 : 약 800페이지
+
            background-color: #e8f2f7;
 +
            padding: 2px 6px;
 +
            border-radius: 3px;
 +
            font-family: 'Courier New', monospace;
 +
            color: #2b5a7a;
 +
            font-weight: 600;
 +
        }
  
== 👥 팀 구성 (총 24명: 인문계 18명 + 이공계 6명) ==
+
        /* Example Sections */
 +
        .example {
 +
            background-color: white;
 +
            border: 2px solid #2b5a7a;
 +
            padding: 20px;
 +
            border-radius: 8px;
 +
            margin: 20px 0;
 +
            box-shadow: 0 2px 5px rgba(0,0,0,0.08);
 +
        }
  
역할: 인문계-데이터 편찬 및 태깅 / 이공계-기술 지원 및 자동화
+
        .example h4 {
 +
            color: #ff6b35;
 +
            margin-top: 0;
 +
        }
  
=== A팀 ===
+
        /* Before/After Comparison */
 +
        .comparison {
 +
            display: grid;
 +
            grid-template-columns: 1fr 1fr;
 +
            gap: 20px;
 +
            margin: 20px 0;
 +
        }
  
* 부산을 빛낸 인물 전 3권(총 800페이지)
+
        .comparison-item {
* 인원: 6명 (인문계 4명 + 이공계 2명)
+
            padding: 15px;
* 담당: 『부산을 빛낸 인물』 800페이지
+
            border-radius: 5px;
* 총괄: 디지털인문학센터 연구전략부장
+
        }
  
=== B팀 ===
+
        .before {
 +
            background-color: #fff5f5;
 +
            border: 2px solid #ff6b6b;
 +
        }
  
* 부산의 자연마을 제1, 2, 6권(총 1,200페이지)
+
        .after {
* 인원: 9명 (인문계 7명 + 이공계 2명)
+
            background-color: #f0f9f4;
* 담당: 『부산의 자연마을』 1,200페이지
+
            border: 2px solid #51cf66;
* 총괄: 디지털인문학센터 교육지원부장
+
        }
  
=== C팀 ===
+
        /* Checklist */
 +
        .checklist {
 +
            background-color: #fafafa;
 +
            padding: 20px;
 +
            border-radius: 8px;
 +
            margin: 20px 0;
 +
        }
  
* 부산의 자연마을 제3, 4, 5권(총 1,200페이지)
+
        .checklist li {
* 인원: 9명 (인문계 7명 + 이공계 2명)
+
            margin: 10px 0;
* 담당: 『부산의 자연마을』 1,200페이지
+
            padding-left: 30px;
* 총괄: 디지털인문학센터 계약교수
+
            position: relative;
 +
        }
  
== 📊 인문계 학생 (각 팀 4~7명씩, 총 18명) 주요 역할 ==
+
        .checklist li:before {
 +
            content: "☐";
 +
            position: absolute;
 +
            left: 0;
 +
            font-size: 1.2em;
 +
            color: #2b5a7a;
 +
        }
  
* PDF에서 추출한 텍스트를 Excel/구글 시트에 입력
+
        /* Spreadsheet Embed */
* 텍스트 유형 판단 (분류 작업)
+
        .spreadsheet-container {
* 의미 요소 식별 (XML 태깅을 위한 준비 작업)
+
            margin: 30px 0;
* 메타데이터(페이지, 장 번호 등 서지 정보 기록) 관리
+
            border: 3px solid #2b5a7a;
 +
            border-radius: 8px;
 +
            overflow: hidden;
 +
        }
  
== 💻 이공계 학생 (각 팀 2명씩, 총 6명) 주요 역할 ==
+
        .spreadsheet-header {
 +
            background-color: #2b5a7a;
 +
            color: white;
 +
            padding: 15px;
 +
            font-weight: 600;
 +
            display: flex;
 +
            justify-content: space-between;
 +
            align-items: center;
 +
        }
  
* 파이썬 스크립트 개발 (태깅 마커 → XML 자동 변환)
+
        .spreadsheet-link {
* 데이터 검증 및 오류 체크 자동화
+
            background-color: white;
* 팀 내 기술적 문제 실시간 지원
+
            color: #2b5a7a;
* VSCode, Git 등 도구 활용 교육
+
            padding: 8px 16px;
 +
            border-radius: 5px;
 +
            text-decoration: none;
 +
            font-size: 0.9em;
 +
            transition: all 0.3s;
 +
            font-weight: 600;
 +
        }
  
== 📊 작업 일정 계획 (2026년 1월~2월) ==
+
        .spreadsheet-link:hover {
 +
            background-color: #f0f0f0;
 +
            transform: translateY(-2px);
 +
        }
  
=== 📚 전체 분량 ===
+
        .spreadsheet-embed {
 +
            width: 100%;
 +
            height: 600px;
 +
            border: none;
 +
        }
  
* 『부산을 빛낸 인물』: 총 800여 페이지 → 1개 팀 (6명) 담당
+
        /* Roadmap */
* 『부산의 자연마을』: 총 2,400여 페이지 → 2개 팀 (각 9명) 분담
+
        .roadmap {
** 1팀: 1,200페이지
+
            background-color: #f8fafb;
** 2팀: 1,200페이지
+
            padding: 30px;
 +
            border-radius: 10px;
 +
            margin: 30px 0;
 +
            border: 1px solid #e0e0e0;
 +
        }
  
※ 각 팀원은 담당 권/장을 선정하여 2개월간 데이터 편찬 작업을 진행합니다.
+
        .roadmap-step {
 +
            display: flex;
 +
            align-items: flex-start;
 +
            margin: 20px 0;
 +
            padding: 20px;
 +
            background-color: white;
 +
            border-radius: 8px;
 +
            box-shadow: 0 2px 5px rgba(0,0,0,0.08);
 +
        }
  
=== 💡 팀별 작업 진도 관리 팁 ===
+
        .roadmap-number {
 +
            background-color: #2b5a7a;
 +
            color: white;
 +
            width: 50px;
 +
            height: 50px;
 +
            border-radius: 50%;
 +
            display: flex;
 +
            align-items: center;
 +
            justify-content: center;
 +
            font-size: 1.5em;
 +
            font-weight: bold;
 +
            margin-right: 20px;
 +
            flex-shrink: 0;
 +
        }
  
* 일일/주간/월간 목표 정하기
+
        .roadmap-content h3 {
* 정기 모임: 매주 날짜와 시간을 정해 줌으로 진도 점검 등
+
            margin-top: 0;
* 비상 연락: 단톡방 개설/공동 작업 파일
+
            color: #2b5a7a;
 +
        }
  
== 이제 책 속의 자료를 시맨틱 데이터로 변환하는 기초 작업을 진행할 예정입니다. 왜 이 작업이 필요할까요? ==
+
        /* Lists */
 +
        ul, ol {
 +
            margin: 15px 0 15px 30px;
 +
        }
  
부산광역시사편찬위원회 자료실에 PDF로 제공되는 도서는 한 번에 한 사람만 읽을 수 있지만, 디지털 데이터로 변환된 지식은:
+
        li {
 +
            margin: 8px 0;
 +
        }
  
* 💡 검색 가능: "1950년대 부산 영도구"라고 검색하면 관련된 모든 내용이 한눈에 보이게 만들 수 있습니다!
+
        /* Badges */
* 🔗 연결 가능: 인물과 장소, 사건이 서로 연결되어 새로운 통찰을 발견할 수 있습니다!
+
        .badge {
* 📊 분석 가능: 빈도, 패턴, 관계를 통해 보이지 않던 역사적 의미를 발견할 수 있습니다!
+
            display: inline-block;
* 🌐 공유 가능: 전 세계 연구자들과 부산의 이야기를 나눌 수 있어요
+
            padding: 5px 12px;
 +
            border-radius: 20px;
 +
            font-size: 0.85em;
 +
            font-weight: 600;
 +
            margin: 5px;
 +
        }
  
== 🔥 전체 로드맵: 3단계 여정 ==
+
        .badge-primary {
 +
            background-color: #2b5a7a;
 +
            color: white;
 +
        }
  
=== 1. 데이터 편찬(Data Compilation)현재 단계 ===
+
        .badge-success {
 +
            background-color: #4caf50;
 +
            color: white;
 +
        }
  
* PDF → 텍스트 추출
+
        .badge-warning {
* 구조화 → CSV 정리
+
            background-color: #ff9f43;
* 태깅 → XML 변환
+
            color: white;
* 목표: 원천 자료를 DB에 업로드 가능한 형태로 구조화
+
        }
  
=== 2. 데이터 분석(Data Analysis) ===
+
        .badge-danger {
 +
            background-color: #e74c3c;
 +
            color: white;
 +
        }
  
* 빈도 분석 & 키워드 추출
+
        /* Fire Emoji Style for emphasis */
* 관계 파악
+
        .fire-emoji {
* 의미 해석
+
            color: #ff6b35;
* 목표: 구축된 데이터에서 학문적 의미와 패턴 도출
+
            font-size: 1.2em;
 +
        }
  
=== 3. 데이터 설계(Data Modeling) ===
+
        /* Footer */
 +
        footer {
 +
            background-color: #1e4a66;
 +
            color: white;
 +
            padding: 30px;
 +
            text-align: center;
 +
        }
  
* 온톨로지 설계
+
        /* Responsive */
* 지식 그래프 구상
+
        @media (max-width: 768px) {
* 활용 방안 기획
+
            body {
* 목표: 플랫폼 구축을 위한 데이터 모델링
+
                padding: 10px;
 +
            }
  
== 📊 우리 팀 데이터 구조 이해하기 ==
+
            main {
 +
                padding: 20px;
 +
            }
  
우리가 사용하는 구글 시트는 18개의 필드(열)로 구성되어 있어요. 각 필드가 왜 필요한지 함께 살펴볼까요?
+
            header h1 {
 +
                font-size: 1.6em;
 +
            }
  
=== 💡 작업 단계별 사용 필드 ===
+
            nav ul {
 +
                flex-direction: column;
 +
                gap: 10px;
 +
            }
  
* 1단계 (csv): id, book_title, person_id, text_original, text_type
+
            .comparison {
* 2단계 (txt): text_original 컬럼만 별도로 text_tagged 작업
+
                grid-template-columns: 1fr;
* 3단계 (xml): text_tagged 작업물 → XML 자동변환(파이썬 스크립트 개발)
+
            }
  
=== 💡 중간 산출물: 총괄 교수님과 상의 후 팀별로 경과 보고 ===
+
            .spreadsheet-header {
 +
                flex-direction: column;
 +
                gap: 10px;
 +
            }
  
=== 💡 최종 산출물: 권별.csv, 권별.txt, 권별.xml + 팀별 결과보고서(팀장을 정해서 한 명이 9개 파일 수합 후 이메일로 제출) ===
+
            .spreadsheet-embed {
 +
                height: 400px;
 +
            }
 +
        }
  
=== 💡 권별 파일명(부산 지역사 도서관 PDF파일명을 따름): lightuppeople01..., B_jayeonmaeul01... ===
+
        /* Print Styles */
 +
        @media print {
 +
            nav {
 +
                display: none;
 +
            }
  
== 🔑 핵심 필드 설명 ==
+
            .spreadsheet-embed {
 +
                display: none;
 +
            }
  
| 필드명 | 예시 | 설명 | 작업자가 할 일 |
+
            section {
|-|-|-|-|
+
                page-break-inside: avoid;
| 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 부여 규칙 마스터하기 ==
+
        /* Highlight Important Text */
 +
        strong {
 +
            color: #2b5a7a;
 +
        }
  
=== 1. 텍스트 ID (id) 규칙 ===
+
        /* Links */
 +
        a {
 +
            color: #2b5a7a;
 +
            text-decoration: none;
 +
            transition: color 0.3s;
 +
        }
  
txt_10001, txt_10002, txt_10003...
+
        a:hover {
 +
            color: #ff6b35;
 +
            text-decoration: underline;
 +
        }
 +
    </style>
 +
</head>
 +
<body>
 +
    <div class="container">
 +
        <header>
 +
            <h1>📚 부산 지역 인문학 자료 데이터화 입문 가이드</h1>
 +
            <p>『부산을 빛낸 인물』과 『부산의 자연마을』의 디지털 데이터 변환 </p>
 +
        </header>
  
* 형식: txt_ + 5자리 숫자
+
        <nav>
* 시작: 10001부터 시작
+
            <ul>
* 연속성: 중간에 번호를 건너뛰지 않음
+
                <li><a href="#intro">들어가며</a></li>
* 고유성: 전체 데이터베이스에서 중복되면 안 됨!
+
                <li><a href="#roadmap">전체 로드맵</a></li>
 +
                <li><a href="#structure">데이터 구조화</a></li>
 +
                <li><a href="#examples">실전 예시</a></li>
 +
                <li><a href="#id-rules">ID 규칙</a></li>
 +
                <li><a href="#process">작업 프로세스</a></li>
 +
                <li><a href="#spreadsheet">작업 스프레드시트</a></li>
 +
                <li><a href="#xml-tagging">XML 태깅</a></li>
 +
                <li><a href="#qa">Q&A</a></li>
 +
            </ul>
 +
        </nav>
  
=== 2. 인물 ID (person_id) 규칙 ===
+
        <main>
 +
            <!-- 들어가며 -->
 +
            <section id="intro">
 +
                <h2>📖 들어가며: 부산 인문 자료의 디지털화 </h2>
 +
               
 +
                <p>본 프로젝트는 부산광역시 문화유산과 시사편찬실에서 발간한 『부산을 빛낸 인물』과 『부산의 자연마을』이라는 부산의 인문 자료를 디지털 데이터로 변환하는 기초 작업입니다.</p>
  
per_101_001, per_101_002, per_102_001...
+
                <h3>📚 프로젝트 규모 및 팀 구성</h3>
 +
               
 +
                <div class="info-box">
 +
                    <p> <strong>작업 대상 자료</strong>: 부산광역시사편찬위원회 자료실 및 부산 지역사 도서관에서 PDF 확인 가능</p>
 +
                    <ul>
 +
                        <li><strong> <a href="https://busandabom.net/index.nm?menuCd=105">『부산의 자연마을』전 6권</a> </strong>: 약 2,400페이지</li>
 +
                        <li><strong> <a href="https://busandabom.net/index.nm?menuCd=110">『부산을 빛낸 인물』전 3권</a> </strong>: 약 800페이지</li>
 +
                    </ul>
 +
                </div>
  
* 형식: per_ 10001
+
                <div class="roadmap" style="margin-top: 20px;">
* 책번호:
+
                    <h4 style="color: #2b5a7a; margin-bottom: 15px;">👥 팀 구성 (총 24명: 인문계 18명 + 이공계 6명)</h4>
** 10001 = 『부산을 빛낸 인물』 권1
+
                    <p><strong>역할:</strong> 인문계-데이터 편찬 및 태깅 / 이공계-기술 지원 및 자동화</p>
** 20001 = 『부산을 빛낸 인물』 권2
+
                   
** 40001 = 『부산의 자연마을』 권1
+
                    <div class="roadmap-step">
* 인물번호: 책 내에서 등장 순서대로 10001, 10002 … 순으로 부여
+
                        <div class="roadmap-number">A팀</div>
 +
                        <div class="roadmap-content">
 +
                            <h3 style="margin-top: 0;"> 부산을 빛낸 인물 전 3권(총 800페이지)</h3>
 +
                            <ul>
 +
                                <li><strong>인원:</strong> 6명 (인문계 4명 + 이공계 2명)</li>
 +
                                <li><strong>담당:</strong> 『부산을 빛낸 인물』 800페이지</li>
 +
                                <li><strong>총괄:</strong> 디지털인문학센터 연구전략부장</li>
 +
                            </ul>
 +
                        </div>
 +
                    </div>
  
=== 실전 예시 ===
+
                    <div class="roadmap-step">
 +
                        <div class="roadmap-number">B팀</div>
 +
                        <div class="roadmap-content">
 +
                            <h3 style="margin-top: 0;">부산의 자연마을 제1, 2, 6권(총 1,200페이지)</h3>
 +
                            <ul>
 +
                                <li><strong>인원:</strong> 9명 (인문계 7명 + 이공계 2명)</li>
 +
                                <li><strong>담당:</strong> 『부산의 자연마을』 1,200페이지</li>
 +
                                <li><strong>총괄:</strong> 디지털인문학센터 겸직교수</li>
 +
                            </ul>
 +
                        </div>
 +
                    </div>
  
| 상황 | person_id | 설명 |
+
                    <div class="roadmap-step">
|-|-|-|
+
                        <div class="roadmap-number">C팀</div>
| 최치원이 5페이지에서 처음 등장 | per_101_001 | 첫 번째 인물 |
+
                        <div class="roadmap-content">
| 정서가 11페이지에서 처음 등장 | per_101_002 | 두 번째 인물 |
+
                            <h3 style="margin-top: 0;">부산의 자연마을 제3, 4, 5권(총 1,200페이지)</h3>
| 최치원이 다시 15페이지에 등장 | per_101_001 | 동일 ID 재사용! |
+
                            <ul>
 +
                                <li><strong>인원:</strong> 9명 (인문계 7명 + 이공계 2명)</li>
 +
                                <li><strong>담당:</strong> 『부산의 자연마을』 1,200페이지</li>
 +
                                <li><strong>총괄:</strong> 디지털인문학센터 계약교수</li>
 +
                            </ul>
 +
                        </div>
 +
                    </div>
  
※ 인물 등장 순서대로 번호 부여: 페이지 순서가 아니라 등장 순서
+
                    <div class="tip-box" style="margin-top: 20px;">
 +
                        <strong>📊 인문계 학생 (각 팀 4~7명씩, 총 18명) 주요 역할</strong>
 +
                        <ul>
 +
                            <li>PDF에서 추출한 텍스트를 Excel/구글 시트에 입력</li>
 +
                            <li>텍스트 유형 판단 (분류 작업)</li>
 +
                            <li>의미 요소 식별 (XML 태깅을 위한 준비 작업)</li>
 +
                            <li>대학원생: 메타데이터(페이지, 장 번호 등 서지 정보 기록) 관리 및 검수</li>
 +
                        </ul>
 +
                    </div>
  
※ 같은 인물은 같은 ID: 여러 페이지 혹은 다른 책에 등장해도 ID는 하나(인물별 주민번호처럼 사용)
+
                    <div class="tip-box" style="margin-top: 20px;">
 +
                        <strong>💻 이공계 학생 (각 팀 2명씩, 총 6명) 주요 역할</strong>
 +
                        <ul>
 +
                            <li>파이썬 스크립트 개발 (태깅 마커 [P][/P] → XML 자동 변환)</li>
 +
                            <li>데이터 검증 및 오류 체크 자동화</li>
 +
                            <li>팀 내 기술적 문제 실시간 지원</li>
 +
                            <li>VScode, Git 등 도구 활용 교육</li>
 +
                        </ul>
 +
                    </div>
 +
                </div>
  
※ 엑셀 필터 활용: 이미 부여된 인물 ID 확인하기
+
                <h3> 이제 책 속의 자료를 시맨틱 데이터로 변환하는 기초 작업을 진행할 예정입니다. 왜 이 작업이 필요할까요?</h3>
 +
               
 +
                <div class="info-box">
 +
                    <p>부산광역시사편찬위원회 자료실에 PDF로 제공되는 도서는 한 번에 한 사람만 읽을 수 있지만, 디지털 데이터로 변환된 지식은:</p>
 +
                    <ul>
 +
                        <li>💡 <strong>검색 가능</strong>: "1950년대 부산 영도구"라고 검색하면 관련된 모든 내용이 한눈에 보이게 만들 수 있습니다!</li>
 +
                        <li>🔗 <strong>연결 가능</strong>: 인물과 장소, 사건이 서로 연결되어 새로운 통찰을 발견할 수 있습니다!</li>
 +
                        <li>📊 <strong>분석 가능</strong>: 빈도, 패턴, 관계를 통해 보이지 않던 역사적 의미를 발견할 수 있습니다!</li>
 +
                        <li>🌐 <strong>공유 가능</strong>: 전 세계 연구자들과 부산의 이야기를 나눌 수 있어요</li>
 +
                    </ul>
 +
                </div>
 +
            </section>
  
== 🛠️ 단계별 작업 프로세스 ==
+
            <!-- 전체 로드맵 -->
 +
            <section id="roadmap">
 +
                <h2><span class="fire-emoji">🔥</span> 전체 로드맵: 3단계 여정</h2>
 +
               
 +
                <div class="roadmap">
 +
                    <div class="roadmap-step">
 +
                        <div class="roadmap-number">1</div>
 +
                        <div class="roadmap-content">
 +
                            <h3>기초 데이터 작업<p style="display: inline-block; padding: 5px 12px; border-radius: 20px; font-size: 0.85em; font-weight: 600; background-color: #ff6b35; color: white; margin: 5px;">현재 단계</p></h3>
 +
                            <ul>
 +
                                <li>PDF → 텍스트 추출</li>
 +
                                <li>구조화 → CSV 정리</li>
 +
                                <li>태깅 → XML 변환</li>
 +
                            </ul>
 +
                            <p><strong>목표:</strong> 원천 자료를 DB에 업로드 가능한 형태로 구조화</p>
 +
                        </div>
 +
                    </div>
  
=== STEP 1: PDF에서 텍스트 추출 ===
+
                    <div class="roadmap-step">
 +
                        <div class="roadmap-number">2</div>
 +
                        <div class="roadmap-content">
 +
                            <h3>데이터 분석(Data Analysis)</h3>
 +
                            <ul>
 +
                                <li>빈도 분석 & 키워드 추출</li>
 +
                                <li>관계 파악</li>
 +
                                <li>의미 해석</li>
 +
                            </ul>
 +
                            <p><strong>목표:</strong> 구축된 데이터에서 학문적 의미와 패턴 도출</p>
 +
                        </div>
 +
                    </div>
  
* 방법 1: 부산 지역사 도서관에서 pdf 다운로드(파일명 확인)
+
                    <div class="roadmap-step">
* PDF 파일에서 문단 단위로 Ctrl+C (복사) → 엑셀에 도서의 페이지, 챕터 번호,  챕터명(한글: name_ko, 한문: name_ch), 장제목(topic)확인 하면서 원문을 text_original 컬럼에 Ctrl+V (붙여넣기)
+
                        <div class="roadmap-number">3</div>
* 텍스트 문단별 (txt_id) 부여, 인물별 (per_id) 부여, 집필자 (author) 확인
+
                        <div class="roadmap-content">
* 인용문 등의 text_type 표기, 이어지는 문단 및 이미지 삽입 위치(relation_note) 입력, 이미지 캡션, 도서 정보 채우기(시트마다 동일)
+
                            <h3>데이터 설계(Data Modeling)</h3>
* 기타 기록사항(remark)은 기계 학습보다 사람이 참고하는 컬럼이므로 자유롭게 기술, 논의가 필요한 부분이나 애매한 부분, 임의로 처리한 부분들을 기재한 후 나중에 모아서 결과보고서 양식에 맞게 작성하여 제출
+
                            <ul>
* 띄어쓰기는 _표시
+
                                <li>온톨로지 설계</li>
 +
                                <li>지식 그래프 구상</li>
 +
                                <li>활용 방안 기획</li>
 +
                            </ul>
 +
                            <p><strong>목표:</strong> 플랫폼 구축을 위한 데이터 모델링</p>
 +
                        </div>
 +
                    </div>
 +
                </div>
  
=== STEP 2: 텍스트 전처리 ===
+
            </section>
  
정규표현식:
+
           
 +
            <!-- 주차별 작업 계획 -->
 +
            <section id="schedule">
 +
                <h2>📊 작업 일정 계획 (2026년 1월~2월)</h2>
  
* 중복된 단어로 인식하므로 괄호와 괄호 안의 모든 문자를 찾아서 제거: clean_text = re.sub(r'([^)]*)', '', text)
+
                <div class="info-box">
* 형태소 분석시 같이 추출될 수 있으므로 한글, 영어, 숫자, 공백을 제외한 모든 특수문자 제거(따옴표, 괄호, 꺽쇠, 마침표 등 싹 지워짐): clean_text = re.sub(r'[^ws]', '', text)
+
                    <strong>📚 전체 분량</strong>
 +
                    <ul>
 +
                        <li><strong>『부산을 빛낸 인물』</strong>: 총 800여 페이지 → 1개 팀 (6명) 담당</li>
 +
                        <li><strong>『부산의 자연마을』</strong>: 총 2,400여 페이지 → 2개 팀 (각 9명) 분담
 +
                            <ul>
 +
                                <li>1팀: 1,200페이지</li>
 +
                                <li>2팀: 1,200페이지</li>
 +
                            </ul>
 +
                        </li>
 +
                    </ul>
 +
                    <p style="margin-top: 10px;">※ 각 팀원은 담당 권/장을 선정하여 2개월간 데이터 편찬 작업을 진행합니다.</p>
 +
                </div>
  
text_original 문장을 메모패드 등에서 정규표현식으로 전처리 작업
+
                <div class="table-wrapper">
 +
                    <table>
 +
                        <thead>
 +
                            <tr>
 +
                                <th> 기간 </th>
 +
                                <th>목표</th>
 +
                                <th>세부 과제</th>
 +
                            </tr>
 +
                        </thead>
 +
                        <tbody>
 +
                            <tr>
 +
                                <td><strong>  1월 16일  </strong> </td>
 +
                                <td>
 +
                                  csv 작업 파일 및 txt 원본 제출
 +
                                </td>
 +
                                <td>
 +
                                    <div class="checklist">
 +
                                        <ul>
 +
                                            <li>XML 태깅 교육 및 연습 </li>
 +
                                            <li>팀장 및 담당 역할 선정</li>
 +
                                            <li>PDF 텍스트 추출 연습</li>
 +
                                            <li>검토 후 스프레드시트 작업 시작</li>
 +
                                            <li>검수자는 매주 일정 분량씩 받아서 작업</li>
 +
                                        </ul>
 +
                                    </div>
 +
                                </td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><strong>  1월 23일 </strong> </td>
 +
                                <td>txt 전처리 파일 및 기본 구조화 작업 파일 제출</td>
 +
                                <td>
 +
                                    <div class="checklist">
 +
                                        <ul>
 +
                                            <li>원본에서 병기된 한자 및 부호 제거 후 본문만 남기기</li>
 +
                                            <li>간단한 분석 테스트(형태소분석 등)</li>
 +
                                            <li>전처리 파일에 기본 구조화 작업(편장 구분 등)</li>
 +
                                            <li>1차 중간 점검 및 피드백</li>
 +
                                        </ul>
 +
                                    </div>
 +
                                </td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><strong>  1월 30일  </strong></td>
 +
                                <td>XML 마커 연습 파일 제출</td>
 +
                                <td>
 +
                                    <div class="checklist">
 +
                                        <ul>
 +
                                            <li>담당 분량의 10%를 연습 작업물로 제출</li>
 +
                                            <li><strong>인문계: text_tagged 열 작업 진행</strong></li>
 +
                                            <li><strong>이공계: 파이썬 스크립트 개발 시작</strong></li>
 +
                                            <li>2차 중간 점검 및 오류 수정</li>
 +
                                        </ul>
 +
                                    </div>
 +
                                </td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><strong>  2월 27일  </strong></td>
 +
                                <td>완료 및 품질 검수 + XML 변환</td>
 +
                                <td>
 +
                                    <div class="checklist">
 +
                                        <ul>
 +
                                            <li>담당 분량 100% 완료 작업물 제출</li>
 +
                                            <li><strong>인문계: 전체 text_tagged 완성</strong></li>
 +
                                            <li><strong>이공계: XML 자동 변환 실행</strong></li>
 +
                                            <li>전체 데이터 통합</li>
 +
                                            <li>팀원 간 교차 최종 오류 검토</li>
 +
                                            <li>최종 결과물 및 결과보고서 제출</li>
 +
                                        </ul>
 +
                                    </div>
 +
                                </td>
 +
                            </tr>
 +
                        </tbody>
 +
                    </table>
 +
                </div>
  
| text_original | 전처리 작업 후 |
 
|-|-|
 
| 사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 인하여 이름을 얻게 된다. 한반도 동남쪽 끝 바닷가의 한 모퉁이에 있는 해운대는 천년 전 신라의 학사 최치원이 머물며 자취를 남긴 곳이다. 지금도 동백섬 동남쪽 해변에는 "해운대(海雲臺)"라 새긴 글자가 남아 있는데, 최치원이 쓴 글씨라고 전해온다. | 사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 인하여 이름을 얻게 된다. 한반도 동남쪽 끝 바닷가의 한 모퉁이에 있는 해운대는 천년 전 신라의 학사 최치원이 머물며 자취를 남긴 곳이다. 지금도 동백섬 동남쪽 해변에는 해운대라 새긴 글자가 남아 있는데, 최치원이 쓴 글씨라고 전해온다. |
 
  
1월 16일까지 excel 파일 제출
+
            </section>
  
1월 23일까지 전처리 작업한 txt 제출
+
            <!-- 데이터 구조 -->
 +
            <section id="structure">
 +
                <h2>📊 우리 팀 데이터 구조 이해하기</h2>
  
1월25일까지 검수 완료, xml에 대한 완성된 지침을 발송할 예정
+
                <p>우리가 사용하는 구글 시트는 <strong>18개의 필드(열)</strong>로 구성되어 있어요. 각 필드가 왜 필요한지 함께 살펴볼까요?</p>
  
== 최종 체크리스트 ==
+
                <div class="tip-box">
 +
                    <strong>💡 작업 결과물 제출</strong>
 +
                   
 +
                  <li><strong>중간 산출물</strong>: 총괄 교수님과 상의 후 팀별로 경과 보고 </li>
 +
                  <li><strong>최종 산출물</strong>: 권별.csv, 권별.txt, 권별.xml + 팀별 결과보고서(팀장을 정해서 한 명이 9개 파일 수합 후 이메일로 제출)</li>
 +
                  <li><strong>권별 파일명</strong>: lightuppeople01..., B_jayeonmaeul01...(부산 지역사 도서관 PDF파일명을 따름)</li>
 +
                </div>
  
작업 완료 전에 꼭 확인하세요!
+
                <h3>🔑 핵심 필드 설명</h3>
  
* id가 연속되어 있나요? (txt_10001 → txt_10002 → txt_10003)
+
                <div class="table-wrapper">
* person_id가 올바르게 부여되었나요?(부산인물)
+
                    <table>
* place_id가 올바르게 부여되었나요?(자연마을)
+
                        <thead>
* 같은 인물이 다른 도서에도 나오는지 확인하고  person_id를 사용했나요?(중요)
+
                            <tr>
* 인용문의 경우 text_type에 표시되어 있나요?
+
                                <th>필드명</th>
* 시의 원문과 번역문을 분리했나요?
+
                                <th>예시</th>
* relation_note로 관련 텍스트를 연결했나요?(이미지 위치 확인 포함)
+
                                <th>설명</th>
* 한자 이름이 있는 경우 name_ch에 입력했나요?
+
                                <th>작업자가 할 일</th>
* 도서 정보와 집필자 정보 정확하게 기입했나요?
+
                            </tr>
* 전처리 작업물 중 누락된 부분은 없나요?(분석작업 시 방해요소 없는지 확인)
+
                        </thead>
 +
                        <tbody>
 +
                            <tr>
 +
                                <td><code class="code-inline">id</code></td>
 +
                                <td>txt_10001</td>
 +
                                <td>텍스트 고유 번호</td>
 +
                                <td><span class="badge badge-danger">필수</span> 반드시 부여 (중복 금지!)</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">book_id</code></td>
 +
                                <td>lightuppeople01</td>
 +
                                <td>책 식별자</td>
 +
                                <td>책마다 고정값 사용</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">book_title</code></td>
 +
                                <td>부산을_빛낸_인물</td>
 +
                                <td>책 제목</td>
 +
                                <td>언더바(_)로 연결</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">sub_title</code></td>
 +
                                <td>20세기_이전_인물편</td>
 +
                                <td>부제목</td>
 +
                                <td>있는 경우만 입력</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">publisher</code></td>
 +
                                <td>부산광역시_문화유산과_시사편찬실</td>
 +
                                <td>발행처</td>
 +
                                <td>책 정보 그대로</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">pub_date</code></td>
 +
                                <td>2004.06</td>
 +
                                <td>출판일</td>
 +
                                <td>YYYY.MM 형식</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">chapter</code></td>
 +
                                <td>001</td>
 +
                                <td>장 번호</td>
 +
                                <td>3자리 숫자 (001, 002...)</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">page</code></td>
 +
                                <td>005</td>
 +
                                <td>페이지</td>
 +
                                <td>3자리 숫자 (005, 006...)</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">person_id</code></td>
 +
                                <td>per_10001</td>
 +
                                <td>인물 고유 번호</td>
 +
                                <td><span class="badge badge-danger">필수</span> 새 인물마다 부여</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">name_ko</code></td>
 +
                                <td>최치원</td>
 +
                                <td>인물 한글 이름</td>
 +
                                <td>정확하게 입력</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">name_ch</code></td>
 +
                                <td>崔致遠</td>
 +
                                <td>인물 한자 이름</td>
 +
                                <td>있는 경우만 입력</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">topic</code></td>
 +
                                <td>해운대의_유래</td>
 +
                                <td>소주제</td>
 +
                                <td>섹션 제목 그대로</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">author</code></td>
 +
                                <td>정경주_경성대교수</td>
 +
                                <td>글쓴이</td>
 +
                                <td>이름_소속 형식</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">text_original</code></td>
 +
                                <td>(본문 내용)</td>
 +
                                <td>원문 텍스트</td>
 +
                                <td><span class="badge badge-danger">필수</span> 가장 중요!</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">text_type</code></td>
 +
                                <td>normal/citation</td>
 +
                                <td>텍스트 유형이 인용문인지 구분 </td>
 +
                                <td>집필자가 기술한 텍스트인지 인용문인지 등을 구별</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">relation_note</code></td>
 +
                                <td>txt_10008</td>
 +
                                <td>관련 텍스트 ID</td>
 +
                                <td>연결된 경우만</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">img_caption</code></td>
 +
                                <td>최치원_영정</td>
 +
                                <td>이미지 설명</td>
 +
                                <td>이미지 있을 때만</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><code class="code-inline">remark</code></td>
 +
                                <td>번역문 / 원문</td>
 +
                                <td>비고</td>
 +
                                <td><span class="badge badge-danger">필수</span> 2월말에 결과보고서로 제출</td>
 +
                            </tr>
 +
                        </tbody>
 +
                    </table>
 +
                </div>
 +
            </section>
  
** 형태소 분석이나 토픽모델링 등의 분석을 진행할 파일이니 방해요소는 과감하게 다 지우셔도 됩니다. 그래야 토픽모델링 결과가 깔끔하게 잘 나옵니다!
+
            <!-- 실전 예시 -->
 +
            <section id="examples">
 +
                <h2>📖 실전 예시로 배우기</h2>
  
== STEP 3: XML태깅 ==
+
                <div class="example">
 +
                    <h3>사례 1: 일반 텍스트 처리하기</h3>
 +
                   
 +
                    <h4>PDF 원문 (5페이지)</h4>
 +
                    <div class="code-block">
 +
해운대의 유래
  
🏷️ XML 태깅이란? 데이터에 의미를 부여하는 작업입니다. CSV로 정리한 텍스트에 의미론적 태그(Semantic Tags)를 붙여서 컴퓨터가 "누가", "어디서", "언제" 같은 정보를 컴퓨터가 이해할 수 있게 만드는 작업입니다.
+
사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 인하여 이름을 얻게 된다.  
 +
한반도 동남쪽 끝 바닷가의 한 모퉁이에 있는 해운대는 천년 전 신라의 학사
 +
최치원이 머물며 자취를 남긴 곳이다.
 +
                    </div>
  
=== 🎯 왜 XML 태깅이 필요한가요? ===
+
                    <h4>스프레드시트 입력 결과</h4>
 +
                    <div class="table-wrapper">
 +
                        <table>
 +
                            <thead>
 +
                                <tr>
 +
                                    <th>id</th>
 +
                                    <th>book_title</th>
 +
                                    <th>chapter</th>
 +
                                    <th>page</th>
 +
                                    <th>person_id</th>
 +
                                    <th>name_ko</th>
 +
                                    <th>topic</th>
 +
                                    <th>text_type</th>
 +
                                </tr>
 +
                            </thead>
 +
                            <tbody>
 +
                                <tr>
 +
                                    <td>txt_10001</td>
 +
                                    <td>부산을_빛낸_인물</td>
 +
                                    <td>001</td>
 +
                                    <td>005</td>
 +
                                    <td>per_10001</td>
 +
                                    <td>최치원</td>
 +
                                    <td>해운대의_유래</td>
 +
                                    <td>normal</td>
 +
                                </tr>
 +
                            </tbody>
 +
                        </table>
 +
                    </div>
  
태깅 전 (일반 텍스트)
+
                    <div class="tip-box">
 +
                        <strong>💡 체크포인트</strong>
 +
                        <ul>
 +
                            <li>✅ <strong>id는 연속된 번호</strong>: txt_10001, txt_10002, txt_10003...</li>
 +
                            <li>✅ <strong>person_id는 새 인물 등장시에만 변경</strong></li>
 +
                            <li>✅ <strong>한 문단 = 한 행</strong>: 문단 단위로 나누어 입력</li>
 +
                            <li>✅ <strong>text_type은 'normal'</strong>: 일반 서술 텍스트</li>
 +
                        </ul>
 +
                    </div>
 +
                </div>
  
최치원은 857년에 경주에서 태어났다.→ 컴퓨터는 그냥 글자로만 인식
+
                <div class="example">
 +
                    <h3>사례 2: 인용문(citation) 처리하기</h3>
 +
                   
 +
                    <h4>PDF 원문 (6페이지)</h4>
 +
                    <div class="code-block">
 +
제 나이 열 두살 때 집을 떠나 서쪽으로 갔습니다. 배를 탈 적에 돌아가신
 +
아버지께서 타이르시기를, '십 년 안에 진사(進士)에 급제하지 못하면 내 아들이라
 +
하지 말라. 나도 아들을 두었다 아니하리라. 가라! 부지런히 하여 네 힘을
 +
게을리 말라'고 하셨습니다.
 +
                    </div>
  
태깅 후 (XML)  
+
                    <h4>스프레드시트 입력 결과</h4>
 +
                    <div class="table-wrapper">
 +
                        <table>
 +
                            <thead>
 +
                                <tr>
 +
                                    <th>id</th>
 +
                                    <th>text_original</th>
 +
                                    <th>text_type</th>
 +
                                    <th>relation_note</th>
 +
                                </tr>
 +
                            </thead>
 +
                            <tbody>
 +
                                <tr>
 +
                                    <td>txt_10006</td>
 +
                                    <td>최치원은 857년(헌안왕 원년)에 신라의 서울 경주에서 태어났다</td>
 +
                                    <td>normal</td>
 +
                                    <td></td>
 +
                                </tr>
 +
                                <tr style="background-color: #fff8e6;">
 +
                                    <td>txt_10007</td>
 +
                                    <td>제 나이 열 두살 때 집을 떠나 서쪽으로 갔습니다.(도서 원본에서는 볼드체로 표시) </td>
 +
                                    <td><strong>citation</strong></td>
 +
                                    <td>txt_10006</td>
 +
                                </tr>
 +
                            </tbody>
 +
                        </table>
 +
                    </div>
  
<persName>최치원</persName>
+
                    <div class="tip-box">
<date when="857">857년</date>
+
                        <strong>💡 체크포인트</strong>
<placeName>경주</placeName>에서 태어났다.
+
                        <ul>
 +
                            <li>✅ <strong>text_type을 'citation'으로</strong>: 직접 인용문임을 표시</li>
 +
                            <li>✅ <strong>relation_note 활용</strong>: 앞 문장(txt_10006)과 연결됨을 표시</li>
 +
                            <li>✅ <strong>따옴표 포함</strong>: 원문의 인용 부호 그대로 유지</li>
 +
                        </ul>
 +
                    </div>
 +
                </div>
  
→ 인물, 시간, 장소를 구분해서 인식!
+
                <div class="example">
 +
                    <h3>사례 3: 시(poem) 처리하기 - 가장 까다로운 부분!</h3>
 +
                   
 +
                    <h4>PDF 원문 (11페이지) - 정서의 시</h4>
 +
                    <div class="code-block">
 +
狂奔疊石吼重巒
 +
人語難分咫尺間
 +
常恐是非聲到耳
 +
故敎流水盡籠山
  
== 📚 온톨로지 설계 참고: 광주인문도시 사례 ==
+
(번역)
 +
미친 물 바위 치며 겹겹 산을 뒤흔드니
 +
지척 사이에도 사람 소리 모르겠네.
 +
                    </div>
  
우리 프로젝트는 광주인문도시스토리플랫폼의 온톨로지 설계를 참고합니다:
+
                    <h4>스프레드시트 입력 결과 - 원문과 번역문을 <strong>분리</strong>!</h4>
 +
                    <div class="table-wrapper">
 +
                        <table>
 +
                            <thead>
 +
                                <tr>
 +
                                    <th>id</th>
 +
                                    <th>person_id</th>
 +
                                    <th>name_ko</th>
 +
                                    <th>text_original</th>
 +
                                    <th>text_type</th>
 +
                                    <th>relation_note</th>
 +
                                    <th>remark</th>
 +
                                </tr>
 +
                            </thead>
 +
                            <tbody>
 +
                                <tr style="background-color: #fff5f5;">
 +
                                    <td>txt_10013</td>
 +
                                    <td>per_101_002</td>
 +
                                    <td>정서</td>
 +
                                    <td>狂奔疊石吼重巒 / 人語難分咫尺間 / 常恐是非聲到耳 / 故敎流水盡籠山</td>
 +
                                    <td><strong>poem</strong></td>
 +
                                    <td>txt_10014</td>
 +
                                    <td>원문</td>
 +
                                </tr>
 +
                                <tr style="background-color: #f0f9f4;">
 +
                                    <td>txt_10014</td>
 +
                                    <td>per_101_002</td>
 +
                                    <td>정서</td>
 +
                                    <td>미친 물 바위 치며 겹겹 산을 뒤흔드니 / 지척 사이에도 사람 소리 모르겠네. / 세상의 시비 소리 들릴까 두려워서 / 짐짓 흐르는 물로 산을 온통 가두었네.</td>
 +
                                    <td><strong>poem</strong></td>
 +
                                    <td>txt_10013</td>
 +
                                    <td>번역문</td>
 +
                                </tr>
 +
                            </tbody>
 +
                        </table>
 +
                    </div>
  
🔗 광주 온톨로지 Class 설계 보기
+
                    <div class="tip-box">
 +
                        <strong>💡 체크포인트</strong>
 +
                        <ul>
 +
                            <li>✅ <strong>한문 원문과 번역문 = 2개 행</strong>: 별도로 입력!</li>
 +
                            <li>✅ <strong>연(구절) 구분은 슬래시(/)</strong>: 狂奔疊石吼重巒 / 人語難分咫尺間</li>
 +
                            <li>✅ <strong>relation_note로 연결</strong>: 원문과 번역이 서로를 가리킴</li>
 +
                            <li>✅ <strong>remark에 명시</strong>: '원문' 또는 '번역문'</li>
 +
                        </ul>
 +
                    </div>
 +
                </div>
  
광주 사례에서는 Person, Place, Event, Organization, Artifact 등의 클래스를 정의했습니다. 우리는 이를 부산 지역 특성에 맞게 적용할 예정입니다.
+
                <div class="example">
 +
                    <h3>사례 4: 가사(歌辭) 처리하기</h3>
 +
                   
 +
                    <h4>PDF 원문 (19페이지) - &lt;삼진작 三眞勺&gt;</h4>
 +
                    <div class="code-block">
 +
내 님믈 그리와 우니다니
 +
山졉동새 난 이슷요이다
 +
아니시며 거츠르신 아으
 +
잔월효성(殘月曉星)이 아시리이다
  
== 🎯 단계별 태깅 전략 (난이도별 접근) ==
+
(번역)
 +
내 임을 그리워하여 울고 있더니
 +
두견새와 나와는 비슷합니다 그려
 +
                    </div>
  
=== 1차 작업 (필수) - 가장 명확한 요소 ===
+
                    <div class="tip-box">
 +
                        <strong>💡 체크포인트</strong>
 +
                        <ul>
 +
                            <li>✅ <strong>고어도 poem으로 처리</strong>: 가사는 시(poem)로 분류</li>
 +
                            <li>✅ <strong>remark에 작품명</strong>: 가사 제목 명시</li>
 +
                            <li>✅ <strong>특수문자 처리</strong>: 깨진 부분은 원문 그대로 표시</li>
 +
                        </ul>
 +
                    </div>
 +
                </div>
 +
            </section>
  
현재 작업 단계
+
            <!-- ID 규칙 -->
 +
            <section id="id-rules">
 +
                <h2>🔢 ID 부여 규칙 마스터하기</h2>
  
| 요소 | 마커 | 설명 |
+
                <h3>1. 텍스트 ID (id) 규칙</h3>
|-|-|-|
+
               
| 인명 | [P]최치원[/P] | 사람 이름 (판단 쉬움) |
+
                <div class="code-block">
| 지명 | [L]영도구[/L] | 장소, 지역명 (판단 쉬움) |
+
txt_10001, txt_10002, txt_10003...
 
+
                </div>
💡 추천: 현재의 기초 작업에서는 인명과 지명, 날짜(연도)에 특히 집중하는 것을 권장합니다!
 
 
 
✅ 판단이 가장 명확
 
 
 
✅ 작업 속도가 빠름
 
 
 
✅ 온톨로지 핵심인 "누가-어디서" 관계망 우선 구축
 
 
 
=== 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단계 워크플로우
+
                <div class="info-box">
 +
                    <strong>규칙</strong>
 +
                    <ul>
 +
                        <li><strong>형식:</strong> <code class="code-inline">txt_</code> + 5자리 숫자</li>
 +
                        <li><strong>시작:</strong> 10001부터 시작</li>
 +
                        <li><strong>연속성:</strong> 중간에 번호를 건너뛰지 않음</li>
 +
                        <li><strong>고유성:</strong> 전체 데이터베이스에서 중복되면 안 됨!</li>
 +
                    </ul>
 +
                </div>
  
인문계 학생 - Excel/Google Sheets에서 태깅
 
  
* text_original 열 오른쪽에 새 열 text_tagged 추가
+
                <h3>2. 인물 ID (person_id) 규칙</h3>
* 인명과 지명, 날짜에 마커 표시:
+
               
** 인명: [P]최치원[/P]
+
                <div class="code-block">
** 지명: [L]경주[/L]
+
per_10001, per_10002, per_20001...
 +
                </div>
  
이공계 학생 - 파이썬으로 XML 자동 변환
+
                <div class="info-box">
 +
                    <strong>규칙</strong>
 +
                    <ul>
 +
                        <li><strong>형식:</strong> <code class="code-inline">per_</code> + 5자리 숫자</li>
 +
                        <li><strong>책번호:</strong>
 +
                            <ul>
 +
                                <li>10001 = 『부산을 빛낸 인물』 권1</li>
 +
                                <li>20001 = 『부산을 빛낸 인물』 권2</li>
 +
                                <li>40001 = 『부산의 자연마을』 권1</li>
 +
                            </ul>
 +
                        </li>
 +
                        <li><strong>인물번호:</strong> 첫자리수는 권마다 달라지며 등장 순서대로 부여</li>
 +
                    </ul>
 +
                </div>
  
* text_tagged 컬럼의 마커 표시된 문장
+
                <h4>실전 예시</h4>
* XML 태그로 변환(TEI 준수)
+
                <div class="table-wrapper">
* XML 파일로 출력
+
                    <table>
* 샘플 작업 후 먼저 연구책임자 검토
+
                        <thead>
* 검토 의견 반영 후 Python으로 자동화 작업 시작
+
                            <tr>
* VSCode(Visual Studio Code )로 XML 검수 및 수정 작업
+
                                <th>상황</th>
 +
                                <th>person_id</th>
 +
                                <th>설명</th>
 +
                            </tr>
 +
                        </thead>
 +
                        <tbody>
 +
                            <tr>
 +
                                <td>최치원이 5페이지에서 처음 등장</td>
 +
                                <td><code class="code-inline">per_10001</code></td>
 +
                                <td>첫 번째 인물</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td>정서가 11페이지에서 처음 등장</td>
 +
                                <td><code class="code-inline">per_10002</code></td>
 +
                                <td>두 번째 인물</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td>최치원이 다시 15페이지에 등장</td>
 +
                                <td><code class="code-inline">per_10001</code></td>
 +
                                <td>동일 ID 재사용!</td>
 +
                            </tr>
 +
                        </tbody>
 +
                    </table>
 +
                </div>
  
✅ XML 구문 하이라이팅 (오류를 쉽게 발견)
+
                <div class="tip-box">
 +
                    <strong>💡 팁</strong>
 +
                    <ul>
 +
                        <li><strong>인물 등장 순서대로 번호 부여</strong>: 페이지 순서가 아니라 등장 순서</li>
 +
                        <li><strong>같은 인물은 같은 ID</strong>: 다른 책에 등장해도 같은 인물이라면 ID는 하나</li>
 +
                        <li><strong>엑셀 필터 활용</strong>: 이미 부여된 인물 ID 확인하기</li>
 +
                    </ul>
 +
                </div>
 +
            </section>
  
✅ 태그 자동 완성
 
  
✅ 검색 & 일괄 치환 기능
+
            <!-- 작업 스프레드시트 -->
 +
            <section id="spreadsheet">
 +
                <h2>💻 공동작업용 스프레드시트</h2>
  
✅ 확장 프로그램으로 XML 검증 가능
+
                <p>아래는 우리 팀이 실제로 작업하는 구글 시트입니다. 실시간으로 데이터를 확인하고 입력할 수 있어요.</p>
  
* 태그가 올바르게 닫혔는가? (<persName>...</persName>)
+
                <div class="spreadsheet-container">
* 잘못된 마커가 남아있지 않은가? ([P] → <persName>)
+
                    <div class="spreadsheet-header">
* 중첩된 태그가 있는가? (수정 필요)
+
                        <span>📊 PNU_DHC 플랫폼 데이터 작업 시트</span>
* 인명/지명/날짜 구분이 올바른가?
+
                        <a href="https://docs.google.com/spreadsheets/d/1beVxX1Q-xRAyHOxjk-u3YLYszGZjftkONu_EtR0n9yM/edit?gid=0#gid=0"
 +
                          target="_blank"
 +
                          class="spreadsheet-link">
 +
                          새 탭에서 열기 →
 +
                        </a>
 +
                    </div>
 +
                    <iframe class="spreadsheet-embed"
 +
                            src="https://docs.google.com/spreadsheets/d/1beVxX1Q-xRAyHOxjk-u3YLYszGZjftkONu_EtR0n9yM/edit?gid=0&single=true&widget=true&headers=false&rm=minimal">
 +
                    </iframe>
 +
                </div>
  
== xml 규칙: 같은 내용도 나올 때마다 계속 표기, id는 처음에 한번, 그다음은 ref 속성(#은 문서 내에 있는 id 참조하라는 의미) ==
+
                <div class="info-box">
 +
                    <strong>💡 스프레드시트 사용 팁</strong>
 +
                    <ul>
 +
                        <li>위 임베드 창에서 바로 데이터를 확인할 수 있어요</li>
 +
                        <li>실제 입력은 "새 탭에서 열기" 버튼을 클릭해서 진행하세요</li>
 +
                        <li>여러 사람이 동시에 작업할 수 있어요 (실시간 공동 편집)</li>
 +
                        <li>변경 이력은 자동으로 저장됩니다</li>
 +
                    </ul>
 +
                </div>
  
만약 첫 번째에만 태깅하고 두 번째부터는 그냥 텍스트로 둔다면, 나중에 플랫폼에서 이런 검색이 불가능해집니다. "최치원이 '해운대'와 같이 등장하는 문장을 다 찾아줘"
+
                <h3>✅ 최종 체크리스트</h3>
 +
               
 +
                <p>작업 완료 전에 꼭 확인하세요!</p>
  
태깅 안 했을 때: 컴퓨터는 뒤에 나오는 '최치원'을 그냥 글자(가나다)로만 인식해서, 인물과의 관계를 못 찾습니다.
+
                <div class="checklist">
 +
                    <ul>
 +
                        <li>id가 연속되어 있나요? (txt_10001 → txt_10002 → txt_10003)</li>
 +
                        <li>person_id가 올바르게 부여되었나요?</li>
 +
                        <li>같은 인물이 여러 곳에 나오면 같은 person_id를 사용했나요?</li>
 +
                        <li>text_type이 정확한가요? (normal/citation)</li>
 +
                        <li>시의 원문과 번역문을 분리했나요?</li>
 +
                        <li>relation_note로 관련 텍스트를 연결했나요?</li>
 +
                    </ul>
 +
                </div>
 +
            </section>
  
태깅 했을 때: 문서의 어느 위치에 있든 <persName> 태그가 붙어 있으므로 모든 결과를 긁어올 수 있습니다.
 
  
tip: 처음에 나오는 최치원에서 태그하고, 그 다음에는 찾기 바꾸기(Ctrl+H) 기능으로 최치원 찾아서 <persName ref="#per_01">최치원</persName> 모두 바꾸기, 대명사는 태깅 안 함
 
  
== <요소명 속성="속성값">(시작태그)콘텐츠</요소명>(끝태그) ==
+
            <!-- XML 태깅 가이드 -->
 +
            <section id="xml-tagging">
 +
                <h2>🏷️ XML 태깅: 데이터에 의미 부여하기</h2>
 +
                <p>CSV로 정리한 텍스트에 <strong>의미론적 태그(Semantic Tags)</strong>를 붙여서 컴퓨터가 "누가", "어디서", "언제" 같은 정보를 이해할 수 있게 만드는 작업입니다.</p>
  
=== 인명 <persName> ===
+
                <h3>🎯 왜 XML 태깅이 필요한가요?</h3>
  
최치원의 경우 per_id가 부여되어 있음(속성) → <persName id="per_10001">최치원</person>
+
                <div class="comparison">
 +
                    <div class="comparison-item before">
 +
                        <strong>태깅 전 (일반 텍스트)</strong>
 +
                        <p style="margin-top: 10px;">최치원은 857년에 경주에서 태어났다.</p>
 +
                        <p style="margin-top: 10px; font-size: 0.9em; color: #666;">컴퓨터는 그냥 글자로만 인식</p>
 +
                    </div>
 +
                    <div class="comparison-item after">
 +
                        <strong>태깅 후 (XML)</strong>
 +
                        <p style="margin-top: 10px; font-family: monospace; font-size: 0.9em;">
 +
                            &lt;persName&gt;최치원&lt;/persName&gt;은<br>
 +
                            &lt;date when="857"&gt;857년&lt;/date&gt;에<br>
 +
                            &lt;placeName&gt;경주&lt;/placeName&gt;에서 태어났다.
 +
                        </p>
 +
                        <p style="margin-top: 10px; font-size: 0.9em; color: #666;">→ 인물, 시간, 장소를 구분해서 인식!</p>
 +
                    </div>
 +
                </div>
  
"최치원의 아버지는 견일(肩逸)인데," → 한자 포함해서 태깅 <persName>견일(肩逸)</persName> → 나중에 id 부여할 예정, 한번 태깅했으면 계속 태깅, 최치원의 아버지는 최치원을 가리키는 것이 아니라 최견일을 가리키는 것이므로, 최치원(id)으로 태깅 안 함, 자호 같은 이명이 등장하는 경우는 태깅
+
                <h3>📚 온톨로지 설계 참고: 광주인문도시 사례</h3>
  
=== 지명 <placeName> ===
+
                <div class="info-box">
 +
                    <p><strong>우리 프로젝트는 광주인문도시스토리플랫폼의 온톨로지 설계를 참고합니다:</strong></p>
 +
                    <p>🔗 <a href="https://dh.aks.ac.kr/~gwangju/wiki/index.php/Ontology:EKC_%EA%B4%91%EC%A3%BC:Class" target="_blank">
 +
                        광주 온톨로지 Class 설계 보기
 +
                    </a></p>
 +
                    <p style="margin-top: 10px; font-size: 0.95em;">광주 사례에서는 Person, Place, Event, Organization, Artifact 등의 클래스를 정의했습니다. 우리는 이를 부산 지역 특성에 맞게 적용할 예정입니다.</p>
 +
                </div>
  
해운대(海雲臺) → <place>해운대(海雲臺)</place>
+
                <h3>🎯 단계별 태깅 전략 (난이도별 접근)</h3>
  
=== 고유명사 <name> 시간으로 쓰면 부사이나 주어가 될 수 있음(: 시대, 왕조, 사건명 등) ===
+
                <div class="roadmap">
 +
                    <div class="roadmap-step" style="background-color: #e8f5e9;">
 +
                        <div class="roadmap-number" style="background-color: #4caf50;">1</div>
 +
                        <div class="roadmap-content">
 +
                            <h3 style="margin-top: 0; color: #4caf50;">1차 작업 (필수) - 가장 명확한 요소</h3>
 +
                            <p><span class="badge badge-success">현재 작업 단계</span></p>
 +
                            <table style="margin-top: 10px; width: 100%;">
 +
                                <tr>
 +
                                    <td><strong>인명</strong></td>
 +
                                    <td><code class="code-inline">[P]최치원[/P]</code></td>
 +
                                    <td>사람 이름 (판단 쉬움)</td>
 +
                                </tr>
 +
                                <tr>
 +
                                    <td><strong>지명</strong></td>
 +
                                    <td><code class="code-inline">[L]영도구[/L]</code></td>
 +
                                    <td>장소, 지역명 (판단 쉬움)</td>
 +
                                </tr>
 +
                            </table>
 +
                            <p style="margin-top: 10px;"><strong>💡 추천:</strong> 학부생 기초 작업은 <strong>인명과 지명만</strong> 집중하는 것을 권장합니다!</p>
 +
                            <ul style="margin-top: 10px;">
 +
                                <li>✅ 판단이 가장 명확</li>
 +
                                <li>✅ 작업 속도가 빠름</li>
 +
                                <li>✅ 온톨로지 핵심인 "누가-어디서" 관계망 우선 구축</li>
 +
                            </ul>
 +
                        </div>
 +
                    </div>
  
<name type="dynasty">신라</name>  
+
                    <div class="roadmap-step" style="background-color: #fff8e6;">
 +
                        <div class="roadmap-number" style="background-color: #ff9f43;">2</div>
 +
                        <div class="roadmap-content">
 +
                            <h3 style="margin-top: 0; color: #ff9f43;">2차 작업 (선택) - 조금 더 복잡</h3>
 +
                            <table style="margin-top: 10px; width: 100%;">
 +
                                <tr>
 +
                                    <td><strong>시간</strong></td>
 +
                                    <td><code class="code-inline">[D]1876년[/D]</code></td>
 +
                                    <td>날짜, 연도, 시대</td>
 +
                                </tr>
 +
                                <tr>
 +
                                    <td><strong>기관명</strong></td>
 +
                                    <td><code class="code-inline">[O]동래부[/O]</code></td>
 +
                                    <td>단체, 조직, 관청</td>
 +
                                </tr>
 +
                                <tr>
 +
                                    <td><strong>서명</strong></td>
 +
                                    <td><code class="code-inline">[T]동래부지[/T]</code></td>
 +
                                    <td>책, 문서, 작품명</td>
 +
                                </tr>
 +
                            </table>
 +
                            <p style="margin-top: 10px;"><strong>진행 시기:</strong> 1차 작업 완료 후 또는 동시 진행 가능</p>
 +
                        </div>
 +
                    </div>
  
=== 시간 <date>: 숫자로 표시 가능한 콘텐츠 ===
+
                    <div class="roadmap-step" style="background-color: #f3e5f5;">
 +
                        <div class="roadmap-number" style="background-color: #9c27b0;">3</div>
 +
                        <div class="roadmap-content">
 +
                            <h3 style="margin-top: 0; color: #9c27b0;">3차 작업 (고급) - 전문가 검수 필요</h3>
 +
                            <table style="margin-top: 10px; width: 100%;">
 +
                                <tr>
 +
                                    <td><strong>문화유산</strong></td>
 +
                                    <td><code class="code-inline">[H]동래읍성[/H]</code></td>
 +
                                    <td>유적, 문화재, 건축물</td>
 +
                                </tr>
 +
                                <tr>
 +
                                    <td><strong>사건명</strong></td>
 +
                                    <td><code class="code-inline">[E]임진왜란[/E]</code></td>
 +
                                    <td>역사적 사건, 행사</td>
 +
                                </tr>
 +
                                <tr>
 +
                                    <td><strong>작품명</strong></td>
 +
                                    <td><code class="code-inline">[W]해운대가[/W]</code></td>
 +
                                    <td>시, 그림, 예술작품</td>
 +
                                </tr>
 +
                            </table>
 +
                            <p style="margin-top: 10px;"><strong>진행 시기:</strong> 데이터 분석 및 설계 단계에서</p>
 +
                            <p style="font-size: 0.9em; color: #666;">※ 문화유산과 지명, 작품명과 서명의 구분이 애매할 수 있어 전문가 판단 필요</p>
 +
                        </div>
 +
                    </div>
 +
                </div>
  
857년(헌안왕 원년) → <date when="0857">857년(헌안왕 원년)</date> when의 속성값은 반드시 서기 연도 4자리를 함께 입력
+
             
  
== 예시 ==
+
                <h3>🔍 1차 작업: 인명 + 지명 태깅 실전</h3>
  
<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>에 들어갈 때, 그의 부친이 당부한 말을 종신토록 잊지 못하였다. 그는 나중에 지은 글에 당시 그 아버지가 하신 말씀을 옮겨 놓았다.
+
                <div class="example">
 +
                    <h4>예시 1: 『부산을 빛낸 인물』</h4>
 +
                   
 +
                    <strong>원문:</strong>
 +
                    <div class="code-block">
 +
최치원은 857년(헌안왕 원년)에 신라의 서울 경주에서 태어났다.  
 +
868년(경문왕 8)에 12세의 나이로 당나라에 들어갔다.
 +
                    </div>
  
== text_type: 인용문 전체를 태깅 ==
+
                    <strong>1차 태깅 (인명 + 지명만):</strong>
 +
                    <div class="code-block">
 +
[P]최치원[/P]은 857년([P]헌안왕[/P] 원년)에 [L]신라[/L]의 서울 [L]경주[/L]에서 태어났다.
 +
868년([P]경문왕[/P] 8)에 12세의 나이로 [L]당나라[/L]에 들어갔다.
 +
                    </div>
  
<cit>제 나이 열 두살 때 집을 떠나 서쪽으로 갔습니다. 배를 탈 적에 돌아가신 아버지께서 타이르시기를, '십 년 안에 진사(進士)에 급제하지 못하면 내 아들이라 하지 말라. 나도 아들을 두었다 아니하리라. 가라! 부지런히 하여 네 힘을 게을리 말라'고 하셨습니다. 저는 엄한 말씀을 가슴에 지녀 감히 잊지 못하고, 머리를 묶어 매고 송곳으로 찔러가며 부모님의 뜻을 받들 것을 기약하여, 다른 사람이 백번 하면 나는 천번을 하여, 중국에 온 지 6년만에 영광스런 이름을 방의 끄트머리에 올리게 되었습니다.</cit>
+
                    <div class="tip-box" style="margin-top: 15px;">
 +
                        <strong>💡 판단 기준</strong>
 +
                        <ul>
 +
                            <li><strong>인명:</strong> 사람 이름 (최치원, 헌안왕, 경문왕)</li>
 +
                            <li><strong>지명:</strong> 장소/지역 (신라, 경주, 당나라)</li>
 +
                            <li><strong>제외:</strong> 857년, 868년 같은 시간 표현 (2차 작업에서!)</li>
 +
                        </ul>
 +
                    </div>
 +
                </div>
  
== 인용문의 출처가 있는 경우 → <cit> 안에 <quote><bibl> 추가 ==
+
                <div class="example">
 +
                    <h4>예시 2: 『부산의 자연마을』</h4>
 +
                   
 +
                    <strong>원문:</strong>
 +
                    <div class="code-block">
 +
영도구 동삼동은 조선시대에는 절영도의 일부였다.
 +
1876년 개항 이후 일본인들이 거주하기 시작했으며,
 +
1942년 부산부에 편입되었다.
 +
                    </div>
  
<cit>
+
                    <strong>1차 태깅 (인명 + 지명만):</strong>
 +
                    <div class="code-block">
 +
[L]영도구[/L] [L]동삼동[/L]은 조선시대에는 [L]절영도[/L]의 일부였다.
 +
1876년 개항 이후 일본인들이 거주하기 시작했으며,
 +
1942년 [L]부산부[/L]에 편입되었다.
 +
                    </div>
  
    <quote id="cit_10001" type="verse">狂奔疊石吼重巒 人語難分咫尺間 常恐是非聲到耳 故敎流水盡籠山</quote>
+
                    <div class="tip-box" style="margin-top: 15px;">
 +
                        <strong>💡 판단 기준</strong>
 +
                        <ul>
 +
                            <li><strong>지명:</strong> 영도구, 동삼동, 절영도, 부산부 (모두 장소)</li>
 +
                            <li><strong>인명:</strong> 없음</li>
 +
                            <li><strong>제외:</strong> 조선시대, 1876년, 1942년 (2차 작업에서!)</li>
 +
                        </ul>
 +
                    </div>
 +
                </div>
  
    <tranlation corr_id="cit_10001">미친 물 바위 치며 겹겹 산을 뒤흔드니 지척 사이에도 사람 소리 모르겠네. 세상의 시비 소리 들릴까 두려워서 짐짓 흐르는 물로 산을 온통 가두었네.</tranlation>
 
  
    <bibl>삼국사기 권46 열전</bibl>
 
  
</cit>
+
                <h3>🔄 작업 도구별 역할 정리</h3>
  
== 평서문과 인용문이 이어지는 경우 ==
+
                <div class="table-wrapper">
 +
                    <table>
 +
                        <thead>
 +
                            <tr>
 +
                                <th>단계</th>
 +
                                <th>도구</th>
 +
                                <th>작업 내용</th>
 +
                                <th>담당</th>
 +
                            </tr>
 +
                        </thead>
 +
                        <tbody>
 +
                            <tr>
 +
                                <td><strong>1단계 csv</strong></td>
 +
                                <td>Excel / Google Sheets</td>
 +
                                <td>CSV 데이터 입력 (text_original)</td>
 +
                                <td>전체 팀원</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><strong>2단계 txt</strong></td>
 +
                                <td>Notepad++ / VSCode</td>
 +
                                <td>태깅 마커 표시 (text_tagged)</td>
 +
                                <td>인문계 학생</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><strong>3단계 xml</strong></td>
 +
                                <td>Python</td>
 +
                                <td>마커 → XML 자동 변환</td>
 +
                                <td>이공계 학생</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><strong>4단계 valid check</strong></td>
 +
                                <td>XML Validation 도구</td>
 +
                                <td>XML 파일 검수 및 수정</td>
 +
                                <td>팀 총괄 + 전체</td>
 +
                            </tr>
 +
                        </tbody>
 +
                    </table>
 +
                </div>
  
<p id="txt_10008">
+
                <div class="warning-box">
 +
                    <strong>⚠️ 태깅 시 주의사항</strong>
 +
                    <ul>
 +
                        <li><strong>일관성 유지:</strong> 같은 대상은 항상 같은 방식으로 태깅</li>
 +
                        <li><strong>중첩 금지:</strong> [P][L]김해[/L][/P] (X) → 하나만 선택</li>
 +
                        <li><strong>불확실하면 표시 안 함:</strong> 확실한 것만 태깅</li>
 +
                        <li><strong>Excel에서 작업:</strong> 익숙한 도구로 빠르게 진행</li>
 +
                        <li><strong>VSCode는 검수용:</strong> XML 변환 후 최종 확인에만 사용</li>
 +
                    </ul>
 +
                </div>
  
<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>이 그때 지은 시에는
+
                <h3>📊 태깅 진도 체크리스트</h3>
  
<cit type="verse">>갈림 길 먼지 속에 이리 날리고 저리 굴러 파리한 말 혼자 타고 고생이 얼마던가? 고향 길이 좋은 줄 모르지 않지마는 돌아간다 하더라도 집이 가난한 걸 </cit>
+
                <div class="checklist">
 +
                    <ul>
 +
                        <li>인명과 지명의 차이를 구분할 수 있나요?</li>
 +
                        <li>마커 표기법([P], [L])을 이해했나요?</li>
 +
                        <li>Excel에 text_tagged 열을 추가했나요?</li>
 +
                        <li>샘플 10개 문단을 태깅해보았나요?</li>
 +
                        <li>팀원들과 태깅 기준을 통일했나요?</li>
 +
                        <li>VSCode를 설치하고 XML Tools 확장을 설치했나요?</li>
 +
                    </ul>
 +
                </div>
 +
            </section>
  
이라 하여 탄식을 숨기지 않았다. 만리 이국 땅에서 어린 나이로 떠돌며 생활하는 것이 참으로 막막하였던 것이다.
 
  
</p>
+
            <!-- 마무리 -->
 +
            <!-- Q&A -->
 +
            <section id="qa">
 +
                <h2>💬 자주 묻는 질문 (Q&A)</h2>
  
== text_original에 / → 한시 행바꿈<l>(line), 1연<lg>(line group) ==
+
                <div class="info-box">
 +
                    <h4>Q1. 인물이 명확하지 않은 경우는?</h4>
 +
                    <p><strong>A.</strong> person_id를 비워두고, remark에 "인물 미상" 표시</p>
 +
                </div>
  
<lg>
+
                <div class="info-box">
 +
                    <h4>Q2. 여러 인물이 한 문단에 나오면?</h4>
 +
                    <p><strong>A.</strong> 주요 인물의 person_id를 사용하고, remark에 "김철수, 이영희 등장" 메모</p>
 +
                </div>
  
<l>
+
                <div class="info-box">
 +
                    <h4>Q3. 페이지 번호가 불분명하면?</h4>
 +
                    <p><strong>A.</strong> 앞뒤 맥락으로 유추하고, remark에 "페이지 추정" 표시</p>
 +
                </div>
  
<l>
+
                <div class="info-box">
 +
                    <h4>Q4. 작업 중 막힐 때는?</h4>
 +
                    <p><strong>A.</strong></p>
 +
                    <ol>
 +
                        <li>팀 단톡방에 질문</li>
 +
                        <li>매주 팀별로 정기 모임(zoom)</li>
 +
                        <li>작업 메뉴얼 재확인</li>
 +
                    </ol>
 +
                </div>
 +
            </section>
  
<lg>
+
            <section id="conclusion">
 +
                <h2>🎯 마무리</h2>
  
== 🔄 작업 도구별 역할 정리 ==
+
                <div class="success-box">
 +
                    <h3>기억해야 할 핵심 3가지</h3>
 +
                    <ol>
 +
                        <li><strong>일관성이 생명:</strong> 같은 항목은 항상 같은 방식으로</li>
 +
                        <li><strong>ID는 신중하게:</strong> 한번 부여한 ID는 앞으로도 계속 사용될 예정</li>
 +
                        <li><strong>협업이 중요:</strong> 막힐 때는 팀원들과 의논하기(논의가 필요하다 생각한 부분을 결과보고서에 기입!!)</li>
 +
                    </ol>
 +
                </div>
  
| 단계 | 도구 | 작업 내용 | 담당 |
+
       
|-|-|-|-|
 
| 1단계 csv | Excel / Google Sheets | CSV 데이터 입력 (text_original) | 전체 팀원 |
 
| 2단계 txt | Notepad++ / VSCode | 태깅 마커 표시 (text_tagged) | 인문계 학생 |
 
| 3단계 xml | Python | 마커 → XML 자동 변환 | 이공계 학생 |
 
| 4단계 valid check | XML Validation 도구 | XML 파일 검수 및 수정 | 팀 총괄 + 전체 |
 
  
== ⚠️ 태깅 시 주의사항 ==
+
                <div class="info-box">
 +
                    <h3>📎 참고 자료</h3>
 +
                    <ul>
 +
                        <li><strong>작업 스프레드시트:</strong> <a href="https://docs.google.com/spreadsheets/d/1beVxX1Q-xRAyHOxjk-u3YLYszGZjftkONu_EtR0n9yM/edit?gid=0#gid=0" target="_blank">구글 시트 바로가기</a></li>
 +
                        <li><strong>XML 가이드:</strong> <a href="http://wikidocs.net/234314">XML 설계 입문</a></li>
 +
                        <li><strong>광주인문도시스토리플랫폼:</strong> <a href="https://dh.aks.ac.kr/~gwangju/wiki/index.php/Ontology:EKC_광주:Class" target="_blank">사례 참고</a></li>
 +
                    </ul>
 +
                </div>
 +
            </section>
 +
        </main>
  
* 일관성 유지: 같은 대상은 항상 같은 방식으로 태깅
+
        <footer>
* 중첩 금지: [P][L]김해[/L][/P] (X) → 하나만 선택
+
            <p>&copy; 2025 부산대학교 디지털인문학센터 (Digital Humanities Center of Pusan National University)</p>
* 불확실하면 표시 안 함: 확실한 것만 태깅, 불확실한 것은 remarks에 기록
+
            <p>PNU 로컬 인문학 데이터 프로젝트</p>
* Excel에서 작업: 익숙한 도구로 빠르게 진행
+
            <p style="margin-top: 10px; font-size: 0.9em;">
* VSCode는 검수용: XML 변환 후 최종 확인에만 사용
+
                문의 및 결과물 제출: 김서윤 sy527991@pusan.ac.kr | 051-510-1594 | 최종 업데이트: 2025년 12월
 
+
            </p>
== 태깅 진도 체크리스트 ==
+
        </footer>
 
+
    </div>
* 인명과 지명의 차이를 구분할 수 있나요?
+
</body>
* 마커 표기법([P], [L])을 이해했나요?
 
* Excel에 text_tagged 열을 추가했나요?
 
* 샘플 10개 문단을 태깅해보았나요?
 
* 팀원들과 태깅 기준을 통일했나요?
 
* VSCode를 설치하고 XML Tools 확장을 설치했나요?
 
 
 
== 💻 실습 스프레드시트 ==
 
 
 
아래는 우리 팀이 실제로 작업하는 구글 시트입니다. 실시간으로 데이터를 확인하고 입력할 수 있어요.
 
 
 
<html>
 
<div style="border: 1px solid #cccccc; padding: 0; margin: 0 0 20px 0;">
 
<iframe src="https://docs.google.com/spreadsheets/d/1beVxX1Q-xRAyHOxjk-u3YLYszGZjftkONu_EtR0n9yM/edit?usp=sharing" width="100%" height="600" style="border: none; margin: 0; padding: 0;"></iframe>
 
</div>
 
 
</html>
 
</html>
 
'''📊 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월
 

2025년 12월 24일 (수) 15:11 판

부산 지역 인문학 데이터 편찬 입문 가이드

📚 부산 지역 인문학 자료 데이터화 입문 가이드

『부산을 빛낸 인물』과 『부산의 자연마을』의 디지털 데이터 변환

📖 들어가며: 부산 인문 자료의 디지털화

본 프로젝트는 부산광역시 문화유산과 시사편찬실에서 발간한 『부산을 빛낸 인물』과 『부산의 자연마을』이라는 부산의 인문 자료를 디지털 데이터로 변환하는 기초 작업입니다.

📚 프로젝트 규모 및 팀 구성

작업 대상 자료: 부산광역시사편찬위원회 자료실 및 부산 지역사 도서관에서 PDF 확인 가능

👥 팀 구성 (총 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명) 주요 역할
  • 파이썬 스크립트 개발 (태깅 마커 [P][/P] → XML 자동 변환)
  • 데이터 검증 및 오류 체크 자동화
  • 팀 내 기술적 문제 실시간 지원
  • VScode, Git 등 도구 활용 교육

이제 책 속의 자료를 시맨틱 데이터로 변환하는 기초 작업을 진행할 예정입니다. 왜 이 작업이 필요할까요?

부산광역시사편찬위원회 자료실에 PDF로 제공되는 도서는 한 번에 한 사람만 읽을 수 있지만, 디지털 데이터로 변환된 지식은:

  • 💡 검색 가능: "1950년대 부산 영도구"라고 검색하면 관련된 모든 내용이 한눈에 보이게 만들 수 있습니다!
  • 🔗 연결 가능: 인물과 장소, 사건이 서로 연결되어 새로운 통찰을 발견할 수 있습니다!
  • 📊 분석 가능: 빈도, 패턴, 관계를 통해 보이지 않던 역사적 의미를 발견할 수 있습니다!
  • 🌐 공유 가능: 전 세계 연구자들과 부산의 이야기를 나눌 수 있어요

🔥 전체 로드맵: 3단계 여정

1

기초 데이터 작업

현재 단계

  • PDF → 텍스트 추출
  • 구조화 → CSV 정리
  • 태깅 → XML 변환

목표: 원천 자료를 DB에 업로드 가능한 형태로 구조화

2

데이터 분석(Data Analysis)

  • 빈도 분석 & 키워드 추출
  • 관계 파악
  • 의미 해석

목표: 구축된 데이터에서 학문적 의미와 패턴 도출

3

데이터 설계(Data Modeling)

  • 온톨로지 설계
  • 지식 그래프 구상
  • 활용 방안 기획

목표: 플랫폼 구축을 위한 데이터 모델링

📊 작업 일정 계획 (2026년 1월~2월)

📚 전체 분량
  • 『부산을 빛낸 인물』: 총 800여 페이지 → 1개 팀 (6명) 담당
  • 『부산의 자연마을』: 총 2,400여 페이지 → 2개 팀 (각 9명) 분담
    • 1팀: 1,200페이지
    • 2팀: 1,200페이지

※ 각 팀원은 담당 권/장을 선정하여 2개월간 데이터 편찬 작업을 진행합니다.

기간 목표 세부 과제
1월 16일 csv 작업 파일 및 txt 원본 제출
  • XML 태깅 교육 및 연습
  • 팀장 및 담당 역할 선정
  • PDF 텍스트 추출 연습
  • 검토 후 스프레드시트 작업 시작
  • 검수자는 매주 일정 분량씩 받아서 작업
1월 23일 txt 전처리 파일 및 기본 구조화 작업 파일 제출
  • 원본에서 병기된 한자 및 부호 제거 후 본문만 남기기
  • 간단한 분석 테스트(형태소분석 등)
  • 전처리 파일에 기본 구조화 작업(편장 구분 등)
  • 1차 중간 점검 및 피드백
1월 30일 XML 마커 연습 파일 제출
  • 담당 분량의 10%를 연습 작업물로 제출
  • 인문계: text_tagged 열 작업 진행
  • 이공계: 파이썬 스크립트 개발 시작
  • 2차 중간 점검 및 오류 수정
2월 27일 완료 및 품질 검수 + XML 변환
  • 담당 분량 100% 완료 작업물 제출
  • 인문계: 전체 text_tagged 완성
  • 이공계: XML 자동 변환 실행
  • 전체 데이터 통합
  • 팀원 간 교차 최종 오류 검토
  • 최종 결과물 및 결과보고서 제출

📊 우리 팀 데이터 구조 이해하기

우리가 사용하는 구글 시트는 18개의 필드(열)로 구성되어 있어요. 각 필드가 왜 필요한지 함께 살펴볼까요?

💡 작업 결과물 제출
  • 중간 산출물: 총괄 교수님과 상의 후 팀별로 경과 보고
  • 최종 산출물: 권별.csv, 권별.txt, 권별.xml + 팀별 결과보고서(팀장을 정해서 한 명이 9개 파일 수합 후 이메일로 제출)
  • 권별 파일명: lightuppeople01..., B_jayeonmaeul01...(부산 지역사 도서관 PDF파일명을 따름)
  • 🔑 핵심 필드 설명

    필드명 예시 설명 작업자가 할 일
    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_10001 인물 고유 번호 필수 새 인물마다 부여
    name_ko 최치원 인물 한글 이름 정확하게 입력
    name_ch 崔致遠 인물 한자 이름 있는 경우만 입력
    topic 해운대의_유래 소주제 섹션 제목 그대로
    author 정경주_경성대교수 글쓴이 이름_소속 형식
    text_original (본문 내용) 원문 텍스트 필수 가장 중요!
    text_type normal/citation 텍스트 유형이 인용문인지 구분 집필자가 기술한 텍스트인지 인용문인지 등을 구별
    relation_note txt_10008 관련 텍스트 ID 연결된 경우만
    img_caption 최치원_영정 이미지 설명 이미지 있을 때만
    remark 번역문 / 원문 비고 필수 2월말에 결과보고서로 제출

    📖 실전 예시로 배우기

    사례 1: 일반 텍스트 처리하기

    PDF 원문 (5페이지)

    해운대의 유래 사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 인하여 이름을 얻게 된다. 한반도 동남쪽 끝 바닷가의 한 모퉁이에 있는 해운대는 천년 전 신라의 학사 최치원이 머물며 자취를 남긴 곳이다.

    스프레드시트 입력 결과

    id book_title chapter page person_id name_ko topic text_type
    txt_10001 부산을_빛낸_인물 001 005 per_10001 최치원 해운대의_유래 normal
    💡 체크포인트
    • id는 연속된 번호: txt_10001, txt_10002, txt_10003...
    • person_id는 새 인물 등장시에만 변경
    • 한 문단 = 한 행: 문단 단위로 나누어 입력
    • text_type은 'normal': 일반 서술 텍스트

    사례 2: 인용문(citation) 처리하기

    PDF 원문 (6페이지)

    제 나이 열 두살 때 집을 떠나 서쪽으로 갔습니다. 배를 탈 적에 돌아가신 아버지께서 타이르시기를, '십 년 안에 진사(進士)에 급제하지 못하면 내 아들이라 하지 말라. 나도 아들을 두었다 아니하리라. 가라! 부지런히 하여 네 힘을 게을리 말라'고 하셨습니다.

    스프레드시트 입력 결과

    id text_original text_type relation_note
    txt_10006 최치원은 857년(헌안왕 원년)에 신라의 서울 경주에서 태어났다 normal
    txt_10007 제 나이 열 두살 때 집을 떠나 서쪽으로 갔습니다.(도서 원본에서는 볼드체로 표시) citation txt_10006
    💡 체크포인트
    • text_type을 'citation'으로: 직접 인용문임을 표시
    • relation_note 활용: 앞 문장(txt_10006)과 연결됨을 표시
    • 따옴표 포함: 원문의 인용 부호 그대로 유지

    사례 3: 시(poem) 처리하기 - 가장 까다로운 부분!

    PDF 원문 (11페이지) - 정서의 시

    狂奔疊石吼重巒 人語難分咫尺間 常恐是非聲到耳 故敎流水盡籠山 (번역) 미친 물 바위 치며 겹겹 산을 뒤흔드니 지척 사이에도 사람 소리 모르겠네.

    스프레드시트 입력 결과 - 원문과 번역문을 분리!

    id person_id name_ko text_original text_type relation_note remark
    txt_10013 per_101_002 정서 狂奔疊石吼重巒 / 人語難分咫尺間 / 常恐是非聲到耳 / 故敎流水盡籠山 poem txt_10014 원문
    txt_10014 per_101_002 정서 미친 물 바위 치며 겹겹 산을 뒤흔드니 / 지척 사이에도 사람 소리 모르겠네. / 세상의 시비 소리 들릴까 두려워서 / 짐짓 흐르는 물로 산을 온통 가두었네. poem txt_10013 번역문
    💡 체크포인트
    • 한문 원문과 번역문 = 2개 행: 별도로 입력!
    • 연(구절) 구분은 슬래시(/): 狂奔疊石吼重巒 / 人語難分咫尺間
    • relation_note로 연결: 원문과 번역이 서로를 가리킴
    • remark에 명시: '원문' 또는 '번역문'

    사례 4: 가사(歌辭) 처리하기

    PDF 원문 (19페이지) - <삼진작 三眞勺>

    내 님믈 그리와 우니다니 山졉동새 난 이슷요이다 아니시며 거츠르신 아으 잔월효성(殘月曉星)이 아시리이다 (번역) 내 임을 그리워하여 울고 있더니 두견새와 나와는 비슷합니다 그려
    💡 체크포인트
    • 고어도 poem으로 처리: 가사는 시(poem)로 분류
    • remark에 작품명: 가사 제목 명시
    • 특수문자 처리: 깨진 부분은 원문 그대로 표시

    🔢 ID 부여 규칙 마스터하기

    1. 텍스트 ID (id) 규칙

    txt_10001, txt_10002, txt_10003...
    규칙
    • 형식: txt_ + 5자리 숫자
    • 시작: 10001부터 시작
    • 연속성: 중간에 번호를 건너뛰지 않음
    • 고유성: 전체 데이터베이스에서 중복되면 안 됨!

    2. 인물 ID (person_id) 규칙

    per_10001, per_10002, per_20001...
    규칙
    • 형식: per_ + 5자리 숫자
    • 책번호:
      • 10001 = 『부산을 빛낸 인물』 권1
      • 20001 = 『부산을 빛낸 인물』 권2
      • 40001 = 『부산의 자연마을』 권1
    • 인물번호: 첫자리수는 권마다 달라지며 등장 순서대로 부여

    실전 예시

    상황 person_id 설명
    최치원이 5페이지에서 처음 등장 per_10001 첫 번째 인물
    정서가 11페이지에서 처음 등장 per_10002 두 번째 인물
    최치원이 다시 15페이지에 등장 per_10001 동일 ID 재사용!
    💡 팁
    • 인물 등장 순서대로 번호 부여: 페이지 순서가 아니라 등장 순서
    • 같은 인물은 같은 ID: 다른 책에 등장해도 같은 인물이라면 ID는 하나
    • 엑셀 필터 활용: 이미 부여된 인물 ID 확인하기

    💻 공동작업용 스프레드시트

    아래는 우리 팀이 실제로 작업하는 구글 시트입니다. 실시간으로 데이터를 확인하고 입력할 수 있어요.

    📊 PNU_DHC 플랫폼 데이터 작업 시트 새 탭에서 열기 →
    💡 스프레드시트 사용 팁
    • 위 임베드 창에서 바로 데이터를 확인할 수 있어요
    • 실제 입력은 "새 탭에서 열기" 버튼을 클릭해서 진행하세요
    • 여러 사람이 동시에 작업할 수 있어요 (실시간 공동 편집)
    • 변경 이력은 자동으로 저장됩니다

    ✅ 최종 체크리스트

    작업 완료 전에 꼭 확인하세요!

    • id가 연속되어 있나요? (txt_10001 → txt_10002 → txt_10003)
    • person_id가 올바르게 부여되었나요?
    • 같은 인물이 여러 곳에 나오면 같은 person_id를 사용했나요?
    • text_type이 정확한가요? (normal/citation)
    • 시의 원문과 번역문을 분리했나요?
    • relation_note로 관련 텍스트를 연결했나요?

    🏷️ XML 태깅: 데이터에 의미 부여하기

    CSV로 정리한 텍스트에 의미론적 태그(Semantic Tags)를 붙여서 컴퓨터가 "누가", "어디서", "언제" 같은 정보를 이해할 수 있게 만드는 작업입니다.

    🎯 왜 XML 태깅이 필요한가요?

    태깅 전 (일반 텍스트)

    최치원은 857년에 경주에서 태어났다.

    → 컴퓨터는 그냥 글자로만 인식

    태깅 후 (XML)

    <persName>최치원</persName>은
    <date when="857">857년</date>에
    <placeName>경주</placeName>에서 태어났다.

    → 인물, 시간, 장소를 구분해서 인식!

    📚 온톨로지 설계 참고: 광주인문도시 사례

    우리 프로젝트는 광주인문도시스토리플랫폼의 온톨로지 설계를 참고합니다:

    🔗 광주 온톨로지 Class 설계 보기

    광주 사례에서는 Person, Place, Event, Organization, Artifact 등의 클래스를 정의했습니다. 우리는 이를 부산 지역 특성에 맞게 적용할 예정입니다.

    🎯 단계별 태깅 전략 (난이도별 접근)

    1

    1차 작업 (필수) - 가장 명확한 요소

    현재 작업 단계

    인명 [P]최치원[/P] 사람 이름 (판단 쉬움)
    지명 [L]영도구[/L] 장소, 지역명 (판단 쉬움)

    💡 추천: 학부생 기초 작업은 인명과 지명만 집중하는 것을 권장합니다!

    • ✅ 판단이 가장 명확
    • ✅ 작업 속도가 빠름
    • ✅ 온톨로지 핵심인 "누가-어디서" 관계망 우선 구축
    2

    2차 작업 (선택) - 조금 더 복잡

    시간 [D]1876년[/D] 날짜, 연도, 시대
    기관명 [O]동래부[/O] 단체, 조직, 관청
    서명 [T]동래부지[/T] 책, 문서, 작품명

    진행 시기: 1차 작업 완료 후 또는 동시 진행 가능

    3

    3차 작업 (고급) - 전문가 검수 필요

    문화유산 [H]동래읍성[/H] 유적, 문화재, 건축물
    사건명 [E]임진왜란[/E] 역사적 사건, 행사
    작품명 [W]해운대가[/W] 시, 그림, 예술작품

    진행 시기: 데이터 분석 및 설계 단계에서

    ※ 문화유산과 지명, 작품명과 서명의 구분이 애매할 수 있어 전문가 판단 필요

    🔍 1차 작업: 인명 + 지명 태깅 실전

    예시 1: 『부산을 빛낸 인물』

    원문:
    최치원은 857년(헌안왕 원년)에 신라의 서울 경주에서 태어났다. 868년(경문왕 8)에 12세의 나이로 당나라에 들어갔다.
    1차 태깅 (인명 + 지명만):
    [P]최치원[/P]은 857년([P]헌안왕[/P] 원년)에 [L]신라[/L]의 서울 [L]경주[/L]에서 태어났다. 868년([P]경문왕[/P] 8)에 12세의 나이로 [L]당나라[/L]에 들어갔다.
    💡 판단 기준
    • 인명: 사람 이름 (최치원, 헌안왕, 경문왕)
    • 지명: 장소/지역 (신라, 경주, 당나라)
    • 제외: 857년, 868년 같은 시간 표현 (2차 작업에서!)

    예시 2: 『부산의 자연마을』

    원문:
    영도구 동삼동은 조선시대에는 절영도의 일부였다. 1876년 개항 이후 일본인들이 거주하기 시작했으며, 1942년 부산부에 편입되었다.
    1차 태깅 (인명 + 지명만):
    [L]영도구[/L] [L]동삼동[/L]은 조선시대에는 [L]절영도[/L]의 일부였다. 1876년 개항 이후 일본인들이 거주하기 시작했으며, 1942년 [L]부산부[/L]에 편입되었다.
    💡 판단 기준
    • 지명: 영도구, 동삼동, 절영도, 부산부 (모두 장소)
    • 인명: 없음
    • 제외: 조선시대, 1876년, 1942년 (2차 작업에서!)

    🔄 작업 도구별 역할 정리

    단계 도구 작업 내용 담당
    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) → 하나만 선택
    • 불확실하면 표시 안 함: 확실한 것만 태깅
    • Excel에서 작업: 익숙한 도구로 빠르게 진행
    • VSCode는 검수용: XML 변환 후 최종 확인에만 사용

    📊 태깅 진도 체크리스트

    • 인명과 지명의 차이를 구분할 수 있나요?
    • 마커 표기법([P], [L])을 이해했나요?
    • Excel에 text_tagged 열을 추가했나요?
    • 샘플 10개 문단을 태깅해보았나요?
    • 팀원들과 태깅 기준을 통일했나요?
    • VSCode를 설치하고 XML Tools 확장을 설치했나요?

    💬 자주 묻는 질문 (Q&A)

    Q1. 인물이 명확하지 않은 경우는?

    A. person_id를 비워두고, remark에 "인물 미상" 표시

    Q2. 여러 인물이 한 문단에 나오면?

    A. 주요 인물의 person_id를 사용하고, remark에 "김철수, 이영희 등장" 메모

    Q3. 페이지 번호가 불분명하면?

    A. 앞뒤 맥락으로 유추하고, remark에 "페이지 추정" 표시

    Q4. 작업 중 막힐 때는?

    A.

    1. 팀 단톡방에 질문
    2. 매주 팀별로 정기 모임(zoom)
    3. 작업 메뉴얼 재확인

    🎯 마무리

    기억해야 할 핵심 3가지

    1. 일관성이 생명: 같은 항목은 항상 같은 방식으로
    2. ID는 신중하게: 한번 부여한 ID는 앞으로도 계속 사용될 예정
    3. 협업이 중요: 막힐 때는 팀원들과 의논하기(논의가 필요하다 생각한 부분을 결과보고서에 기입!!)

    📎 참고 자료

    © 2025 부산대학교 디지털인문학센터 (Digital Humanities Center of Pusan National University)

    PNU 로컬 인문학 데이터 프로젝트

    문의 및 결과물 제출: 김서윤 sy527991@pusan.ac.kr | 051-510-1594 | 최종 업데이트: 2025년 12월