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

pnu_dhc
이동: 둘러보기, 검색
1번째 줄: 1번째 줄:
<!DOCTYPE html>
+
 
 
<html lang="ko">
 
<html lang="ko">
 
<head>
 
<head>
456번째 줄: 456번째 줄:
 
         <header>
 
         <header>
 
             <h1>📚 부산 지역 인문학 데이터 편찬 입문 가이드</h1>
 
             <h1>📚 부산 지역 인문학 데이터 편찬 입문 가이드</h1>
             <p>『부산을 빛낸 인물』·『부산의 자연마을』 디지털 아카이브 구축</p>
+
             <p>『부산을 빛낸 인물』·『부산의 자연마을』 디지털화 </p>
 
         </header>
 
         </header>
  
476번째 줄: 476번째 줄:
 
             <!-- 들어가며 -->
 
             <!-- 들어가며 -->
 
             <section id="intro">
 
             <section id="intro">
                 <h2>📖 들어가며: 우리가 만들 디지털 지식 창고</h2>
+
                 <h2>📖 들어가며: 부산 인문 자료의 디지털화 </h2>
 
                  
 
                  
                 <p>안녕하세요! 오늘은 『부산을 빛낸 인물』과 『부산의 자연마을』이라는 소중한 부산의 문화유산을 디지털 데이터로 변환하는 첫걸음을 함께 시작하려고 합니다.</p>
+
                 <p>본 프로젝트는『부산을 빛낸 인물』과 『부산의 자연마을』이라는 소중한 부산의 인문자료를 디지털인문학센터에서 구축하는 플랫폼에서 활용하고자, 디지털 데이터로 변환하는 기초 작업을 진행합니다.</p>
  
 
                 <h3>📚 프로젝트 규모 및 팀 구성</h3>
 
                 <h3>📚 프로젝트 규모 및 팀 구성</h3>
492번째 줄: 492번째 줄:
 
                 <div class="roadmap" style="margin-top: 20px;">
 
                 <div class="roadmap" style="margin-top: 20px;">
 
                     <h4 style="color: #2b5a7a; margin-bottom: 15px;">👥 팀 구성 (총 24명: 인문계 18명 + 이공계 6명)</h4>
 
                     <h4 style="color: #2b5a7a; margin-bottom: 15px;">👥 팀 구성 (총 24명: 인문계 18명 + 이공계 6명)</h4>
 +
                    <p><strong>역할:</strong> 인문계-데이터 편찬 및 태깅 / 이공계-기술 지원 및 자동화</p>
 
                      
 
                      
 
                     <div class="roadmap-step">
 
                     <div class="roadmap-step">
 
                         <div class="roadmap-number">A</div>
 
                         <div class="roadmap-number">A</div>
 
                         <div class="roadmap-content">
 
                         <div class="roadmap-content">
                             <h3 style="margin-top: 0;">자연마을 1팀</h3>
+
                             <h3 style="margin-top: 0;">부산의 자연마을 1</h3>
 
                             <ul>
 
                             <ul>
 
                                 <li><strong>인원:</strong> 9명 (인문계 7명 + 이공계 2명)</li>
 
                                 <li><strong>인원:</strong> 9명 (인문계 7명 + 이공계 2명)</li>
 
                                 <li><strong>담당:</strong> 『부산의 자연마을』 1,200페이지</li>
 
                                 <li><strong>담당:</strong> 『부산의 자연마을』 1,200페이지</li>
                                 <li><strong>총괄:</strong> 디지털인문학센터 운영위원</li>
+
                                 <li><strong>총괄:</strong> 디지털인문학센터 교육지원부장</li>
                                <li><strong>역할:</strong> 인문계-데이터 편찬 및 태깅 / 이공계-기술 지원 및 자동화</li>
 
 
                             </ul>
 
                             </ul>
 
                         </div>
 
                         </div>
509번째 줄: 509번째 줄:
 
                         <div class="roadmap-number">B</div>
 
                         <div class="roadmap-number">B</div>
 
                         <div class="roadmap-content">
 
                         <div class="roadmap-content">
                             <h3 style="margin-top: 0;">자연마을 2팀</h3>
+
                             <h3 style="margin-top: 0;">부산의 자연마을 2</h3>
 
                             <ul>
 
                             <ul>
 
                                 <li><strong>인원:</strong> 9명 (인문계 7명 + 이공계 2명)</li>
 
                                 <li><strong>인원:</strong> 9명 (인문계 7명 + 이공계 2명)</li>
 
                                 <li><strong>담당:</strong> 『부산의 자연마을』 1,200페이지</li>
 
                                 <li><strong>담당:</strong> 『부산의 자연마을』 1,200페이지</li>
 
                                 <li><strong>총괄:</strong> 디지털인문학센터 계약교수</li>
 
                                 <li><strong>총괄:</strong> 디지털인문학센터 계약교수</li>
                                <li><strong>역할:</strong> 인문계-데이터 편찬 및 태깅 / 이공계-기술 지원 및 자동화</li>
 
 
                             </ul>
 
                             </ul>
 
                         </div>
 
                         </div>
522번째 줄: 521번째 줄:
 
                         <div class="roadmap-number">C</div>
 
                         <div class="roadmap-number">C</div>
 
                         <div class="roadmap-content">
 
                         <div class="roadmap-content">
                             <h3 style="margin-top: 0;">부산을 빛낸 인물 </h3>
+
                             <h3 style="margin-top: 0;"> 부산을 빛낸 인물 </h3>
 
                             <ul>
 
                             <ul>
 
                                 <li><strong>인원:</strong> 6명 (인문계 4명 + 이공계 2명)</li>
 
                                 <li><strong>인원:</strong> 6명 (인문계 4명 + 이공계 2명)</li>
 
                                 <li><strong>담당:</strong> 『부산을 빛낸 인물』 800페이지</li>
 
                                 <li><strong>담당:</strong> 『부산을 빛낸 인물』 800페이지</li>
                                 <li><strong>총괄:</strong> 디지털인문학센터 운영위원</li>
+
                                 <li><strong>총괄:</strong> 디지털인문학센터 연구전략부장</li>
                                <li><strong>역할:</strong> 인문계-데이터 편찬 및 태깅 / 이공계-기술 지원 및 자동화</li>
 
 
                             </ul>
 
                             </ul>
 
                         </div>
 
                         </div>
543번째 줄: 541번째 줄:
 
                 </div>
 
                 </div>
  
                 <h3>왜 이 작업이 필요할까요?</h3>
+
                 <h3> 이제 책 속의 자료를 시맨틱 데이터로 변환하는 기초 작업을 진행할 예정입니다. 왜 이 작업이 필요할까요?</h3>
 
                  
 
                  
 
                 <div class="info-box">
 
                 <div class="info-box">
                     <p><strong>책장에 꽂혀 있는 책</strong>은 한 번에 한 사람만 읽을 수 있지만, <strong>디지털 데이터로 변환된 지식</strong>은:</p>
+
                     <p>부산광역시사편찬위원회 자료실에 PDF로 제공되는 도서는 한 번에 한 사람만 읽을 수 있지만, 디지털 데이터로 변환된 지식은:</p>
 
                     <ul>
 
                     <ul>
                         <li>💡 <strong>검색 가능</strong>: "1950년대 부산 영도구"라고 검색하면 관련된 모든 내용이 한눈에!</li>
+
                         <li>💡 <strong>검색 가능</strong>: "1950년대 부산 영도구"라고 검색하면 관련된 모든 내용이 한눈에 보이게 만들 수 있습니다!</li>
                         <li>🔗 <strong>연결 가능</strong>: 인물과 장소, 사건이 서로 연결되어 새로운 통찰 발견</li>
+
                         <li>🔗 <strong>연결 가능</strong>: 인물과 장소, 사건이 서로 연결되어 새로운 통찰을 발견할 수 있습니다!</li>
                         <li>📊 <strong>분석 가능</strong>: 빈도, 패턴, 관계를 통해 보이지 않던 역사적 의미 발견</li>
+
                         <li>📊 <strong>분석 가능</strong>: 빈도, 패턴, 관계를 통해 보이지 않던 역사적 의미를 발견할 수 있습니다!</li>
 
                         <li>🌐 <strong>공유 가능</strong>: 전 세계 연구자들과 부산의 이야기를 나눌 수 있어요</li>
 
                         <li>🌐 <strong>공유 가능</strong>: 전 세계 연구자들과 부산의 이야기를 나눌 수 있어요</li>
 
                     </ul>
 
                     </ul>
602번째 줄: 600번째 줄:
 
                 </div>
 
                 </div>
  
                <div class="success-box">
 
                    <strong>오늘의 초점:</strong> 1단계 데이터 편찬을 중심으로, 2-3단계의 개요를 함께 살펴볼게요!
 
                </div>
 
 
             </section>
 
             </section>
 
            <!-- XML 태깅 가이드 -->
 
            <section id="xml-tagging">
 
                <h2>🏷️ XML 태깅: 데이터에 의미 부여하기</h2>
 
  
 
                 <div class="warning-box">
 
                 <div class="warning-box">
621번째 줄: 612번째 줄:
 
                 </div>
 
                 </div>
  
                <p>CSV로 정리한 텍스트에 <strong>의미론적 태그(Semantic Tags)</strong>를 붙여서 컴퓨터가 "누가", "어디서", "언제" 같은 정보를 이해할 수 있게 만드는 작업입니다.</p>
 
  
                <h3>🎯 왜 XML 태깅이 필요한가요?</h3>
 
  
                <div class="comparison">
+
            <!-- 데이터 구조 -->
                    <div class="comparison-item before">
+
            <section id="structure">
                        <strong>태깅 전 (일반 텍스트)</strong>
+
                <h2>📊 우리 팀 데이터 구조 이해하기</h2>
                        <p style="margin-top: 10px;">최치원은 857년에 경주에서 태어났다.</p>
+
 
                        <p style="margin-top: 10px; font-size: 0.9em; color: #666;">→ 컴퓨터는 그냥 글자로만 인식</p>
+
                <p>우리가 사용하는 구글 시트는 <strong>18개의 필드()</strong>로 구성되어 있어요. 각 필드가 왜 필요한지 함께 살펴볼까요?</p>
                    </div>
+
 
                     <div class="comparison-item after">
+
                <div class="tip-box">
                         <strong>태깅 후 (XML)</strong>
+
                    <strong>💡 작업 단계별 사용 필드</strong>
                         <p style="margin-top: 10px; font-family: monospace; font-size: 0.9em;">
+
                     <ul>
                            &lt;persName&gt;최치원&lt;/persName&gt;은<br>
+
                         <li><strong>1단계 (기본 입력):</strong> id, book_title, person_id, text_original, text_type</li>
                            &lt;date when="857"&gt;857년&lt;/date&gt;에<br>
+
                         <li><strong>2단계 (XML 태깅):</strong> text_tagged (새로 추가!)</li>
                            &lt;placeName&gt;경주&lt;/placeName&gt;에서 태어났다.
+
                         <li><strong>3단계 (자동화):</strong> 이공계 학생이 text_tagged XML 변환</li>
                         </p>
+
                     </ul>
                        <p style="margin-top: 10px; font-size: 0.9em; color: #666;">→ 인물, 시간, 장소를 구분해서 인식!</p>
 
                     </div>
 
 
                 </div>
 
                 </div>
  
                 <h3>📚 온톨로지 설계 참고: 광주인문도시 사례</h3>
+
                 <h3>🔑 핵심 필드 설명</h3>
  
                 <div class="info-box">
+
                 <div class="table-wrapper">
                     <p><strong>우리 프로젝트는 광주인문도시스토리플랫폼의 온톨로지 설계를 참고합니다:</strong></p>
+
                     <table>
                    <p>🔗 <a href="https://dh.aks.ac.kr/~gwangju/wiki/index.php/Ontology:EKC_%EA%B4%91%EC%A3%BC:Class" target="_blank">
+
                        <thead>
                        광주 온톨로지 Class 설계 보기
+
                            <tr>
                    </a></p>
+
                                <th>필드명</th>
                    <p style="margin-top: 10px; font-size: 0.95em;">광주 사례에서는 Person, Place, Event, Organization, Artifact 등의 클래스를 정의했습니다. 우리는 이를 부산 지역 특성에 맞게 적용할 예정입니다.</p>
+
                                <th>예시</th>
                </div>
+
                                <th>설명</th>
 
+
                                <th>작업자가 할 일</th>
                <h3>🎯 단계별 태깅 전략 (난이도별 접근)</h3>
+
                            </tr>
 
+
                        </thead>
                <div class="roadmap">
+
                        <tbody>
                    <div class="roadmap-step" style="background-color: #e8f5e9;">
+
                            <tr>
                        <div class="roadmap-number" style="background-color: #4caf50;">1</div>
+
                                <td><code class="code-inline">id</code></td>
                        <div class="roadmap-content">
+
                                <td>txt_10001</td>
                            <h3 style="margin-top: 0; color: #4caf50;">1차 작업 (필수) - 가장 명확한 요소</h3>
+
                                <td>텍스트 고유 번호</td>
                            <p><span class="badge badge-success">현재 작업 단계</span></p>
+
                                <td><span class="badge badge-danger">필수</span> 반드시 부여 (중복 금지!)</td>
                             <table style="margin-top: 10px; width: 100%;">
+
                            </tr>
                                 <tr>
+
                             <tr>
                                    <td><strong>인명</strong></td>
+
                                <td><code class="code-inline">book_id</code></td>
                                    <td><code class="code-inline">[P]최치원[/P]</code></td>
+
                                 <td>lightuppeople01</td>
                                    <td>사람 이름 (판단 쉬움)</td>
+
                                <td>책 식별자</td>
                                 </tr>
+
                                <td>책마다 고정값 사용</td>
                                 <tr>
+
                            </tr>
                                    <td><strong>지명</strong></td>
+
                            <tr>
                                    <td><code class="code-inline">[L]영도구[/L]</code></td>
+
                                <td><code class="code-inline">book_title</code></td>
                                    <td>장소, 지역명 (판단 쉬움)</td>
+
                                <td>부산을_빛낸_인물</td>
                                 </tr>
+
                                 <td>책 제목</td>
                             </table>
+
                                 <td>언더바(_)로 연결</td>
                             <p style="margin-top: 10px;"><strong>💡 추천:</strong> 학부생 기초 작업은 <strong>인명과 지명만</strong> 집중하는 것을 권장합니다!</p>
+
                            </tr>
                             <ul style="margin-top: 10px;">
+
                            <tr>
                                 <li>✅ 판단이 가장 명확</li>
+
                                <td><code class="code-inline">sub_title</code></td>
                                 <li>✅ 작업 속도가 빠름</li>
+
                                <td>20세기_이전_인물편</td>
                                 <li>✅ 온톨로지 핵심인 "누가-어디서" 관계망 우선 구축</li>
+
                                <td>부제목</td>
                             </ul>
+
                                 <td>있는 경우만 입력</td>
                        </div>
+
                             </tr>
                    </div>
+
                             <tr>
 
+
                                <td><code class="code-inline">publisher</code></td>
                    <div class="roadmap-step" style="background-color: #fff8e6;">
+
                                <td>부산광역시_문화유산과_시사편찬실</td>
                        <div class="roadmap-number" style="background-color: #ff9f43;">2</div>
+
                                <td>발행처</td>
                        <div class="roadmap-content">
+
                                <td>책 정보 그대로</td>
                            <h3 style="margin-top: 0; color: #ff9f43;">2차 작업 (선택) - 조금 더 복잡</h3>
+
                            </tr>
                             <table style="margin-top: 10px; width: 100%;">
+
                             <tr>
                                 <tr>
+
                                <td><code class="code-inline">pub_date</code></td>
                                    <td><strong>시간</strong></td>
+
                                 <td>2004.06</td>
                                    <td><code class="code-inline">[D]1876년[/D]</code></td>
+
                                 <td>출판일</td>
                                    <td>날짜, 연도, 시대</td>
+
                                 <td>YYYY.MM 형식</td>
                                 </tr>
+
                             </tr>
                                 <tr>
+
                            <tr>
                                    <td><strong>기관명</strong></td>
+
                                <td><code class="code-inline">chapter</code></td>
                                    <td><code class="code-inline">[O]동래부[/O]</code></td>
+
                                <td>001</td>
                                    <td>단체, 조직, 관청</td>
+
                                <td>장 번호</td>
                                 </tr>
+
                                <td>3자리 숫자 (001, 002...)</td>
                                 <tr>
+
                            </tr>
                                    <td><strong>서명</strong></td>
+
                             <tr>
                                    <td><code class="code-inline">[T]동래부지[/T]</code></td>
+
                                <td><code class="code-inline">page</code></td>
                                    <td>책, 문서, 작품명</td>
+
                                 <td>005</td>
                                 </tr>
+
                                <td>페이지</td>
                             </table>
+
                                <td>3자리 숫자 (005, 006...)</td>
                             <p style="margin-top: 10px;"><strong>진행 시기:</strong> 1차 작업 완료 후 또는 동시 진행 가능</p>
+
                            </tr>
                        </div>
+
                            <tr>
                    </div>
+
                                <td><code class="code-inline">person_id</code></td>
 
+
                                <td>per_101_001</td>
                    <div class="roadmap-step" style="background-color: #f3e5f5;">
+
                                 <td>인물 고유 번호</td>
                        <div class="roadmap-number" style="background-color: #9c27b0;">3</div>
+
                                 <td><span class="badge badge-danger">필수</span> 새 인물마다 부여</td>
                        <div class="roadmap-content">
+
                            </tr>
                            <h3 style="margin-top: 0; color: #9c27b0;">3차 작업 (고급) - 전문가 검수 필요</h3>
+
                            <tr>
                            <table style="margin-top: 10px; width: 100%;">
+
                                <td><code class="code-inline">name_ko</code></td>
                                <tr>
+
                                <td>최치원</td>
                                    <td><strong>문화유산</strong></td>
+
                                 <td>인물 한글 이름</td>
                                    <td><code class="code-inline">[H]동래읍성[/H]</code></td>
+
                                 <td>정확하게 입력</td>
                                    <td>유적, 문화재, 건축물</td>
+
                            </tr>
                                 </tr>
+
                            <tr>
                                 <tr>
+
                                <td><code class="code-inline">name_ch</code></td>
                                    <td><strong>사건명</strong></td>
+
                                <td>崔致遠</td>
                                    <td><code class="code-inline">[E]임진왜란[/E]</code></td>
+
                                <td>인물 한자 이름</td>
                                    <td>역사적 사건, 행사</td>
+
                                 <td>있는 경우만 입력</td>
                                 </tr>
+
                             </tr>
                                 <tr>
+
                             <tr>
                                    <td><strong>작품명</strong></td>
+
                                <td><code class="code-inline">topic</code></td>
                                    <td><code class="code-inline">[W]해운대가[/W]</code></td>
+
                                <td>해운대의_유래</td>
                                    <td>시, 그림, 예술작품</td>
+
                                <td>소주제</td>
                                 </tr>
+
                                <td>섹션 제목 그대로</td>
                             </table>
+
                            </tr>
                             <p style="margin-top: 10px;"><strong>진행 시기:</strong> 데이터 분석 및 설계 단계에서</p>
+
                            <tr>
                            <p style="font-size: 0.9em; color: #666;">※ 문화유산과 지명, 작품명과 서명의 구분이 애매할 수 있어 전문가 판단 필요</p>
+
                                <td><code class="code-inline">author</code></td>
                        </div>
+
                                <td>정경주_경성대교수</td>
                    </div>
+
                                <td>글쓴이</td>
                </div>
+
                                <td>이름_소속 형식</td>
 
+
                            </tr>
                <div class="success-box">
+
                            <tr>
                    <strong>🎯 우리 팀 결정사항</strong>
+
                                <td><code class="code-inline">text_original</code></td>
                    <p><strong>1차 작업 범위:</strong> 인명(persName) + 지명(placeName) <strong>2가지만</strong> 태깅</p>
+
                                <td>(본문 내용)</td>
                    <p style="margin-top: 5px; font-size: 0.95em;">→ 빠르고 정확한 작업으로 핵심 온톨로지 구축 우선!</p>
+
                                 <td>원문 텍스트</td>
                 </div>
+
                                 <td><span class="badge badge-danger">필수</span> 가장 중요!</td>
 
+
                            </tr>
                 <h3>🔍 1차 작업: 인명 + 지명 태깅 실전</h3>
+
                            <tr>
 
+
                                <td><code class="code-inline">text_type</code></td>
                 <div class="example">
+
                                <td>normal / citation / poem</td>
                     <h4>예시 1: 『부산을 빛낸 인물』</h4>
+
                                 <td>텍스트 유형</td>
 +
                                 <td><span class="badge badge-danger">필수</span> 반드시 구분</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>필요시 메모</td>
 +
                            </tr>
 +
                        </tbody>
 +
                    </table>
 +
                 </div>
 +
            </section>
 +
 
 +
            <!-- 실전 예시 -->
 +
            <section id="examples">
 +
                 <h2>📖 실전 예시로 배우기</h2>
 +
 
 +
                 <div class="example">
 +
                     <h3>사례 1: 일반 텍스트 처리하기</h3>
 
                      
 
                      
                     <strong>원문:</strong>
+
                     <h4>PDF 원문 (5페이지)</h4>
 
                     <div class="code-block">
 
                     <div class="code-block">
최치원은 857년(헌안왕 원년)에 신라의 서울 경주에서 태어났다.
+
해운대의 유래
868년(경문왕 8)에 12세의 나이로 당나라에 들어갔다.
 
                    </div>
 
  
                    <strong>1차 태깅 (인명 + 지명만):</strong>
+
사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 인하여 이름을 얻게 된다.
                    <div class="code-block">
+
한반도 동남쪽 끝 바닷가의 한 모퉁이에 있는 해운대는 천년 전 신라의 학사
[P]최치원[/P]은 857년([P]헌안왕[/P] 원년)에 [L]신라[/L]의 서울 [L]경주[/L]에서 태어났다.
+
최치원이 머물며 자취를 남긴 곳이다.
868년([P]경문왕[/P] 8)에 12세의 나이로 [L]당나라[/L]에 들어갔다.
 
 
                     </div>
 
                     </div>
  
                     <div class="tip-box" style="margin-top: 15px;">
+
                    <h4>스프레드시트 입력 결과</h4>
                         <strong>💡 판단 기준</strong>
+
                     <div class="table-wrapper">
                        <ul>
+
                         <table>
                             <li><strong>인명:</strong> 사람 이름 (최치원, 헌안왕, 경문왕)</li>
+
                            <thead>
                            <li><strong>지명:</strong> 장소/지역 (신라, 경주, 당나라)</li>
+
                                <tr>
                            <li><strong>제외:</strong> 857년, 868년 같은 시간 표현 (2차 작업에서!)</li>
+
                                    <th>id</th>
                        </ul>
+
                                    <th>book_title</th>
                    </div>
+
                                    <th>chapter</th>
                </div>
+
                                    <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_101_001</td>
 +
                                    <td>최치원</td>
 +
                                    <td>해운대의_유래</td>
 +
                                    <td>normal</td>
 +
                                </tr>
 +
                            </tbody>
 +
                        </table>
 +
                    </div>
  
                <div class="example">
+
                    <div class="tip-box">
                    <h4>예시 2: 『부산의 자연마을』</h4>
+
                        <strong>💡 체크포인트</strong>
                   
+
                        <ul>
                    <strong>원문:</strong>
+
                            <li>✅ <strong>id는 연속된 번호</strong>: txt_10001, txt_10002, txt_10003...</li>
                    <div class="code-block">
+
                            <li>✅ <strong>person_id는 새 인물 등장시에만 변경</strong></li>
영도구 동삼동은 조선시대에는 절영도의 일부였다.
+
                            <li>✅ <strong>한 문단 = 한 행</strong>: 문단 단위로 나누어 입력</li>
1876년 개항 이후 일본인들이 거주하기 시작했으며,
+
                            <li>✅ <strong>text_type은 'normal'</strong>: 일반 서술 텍스트</li>
1942년 부산부에 편입되었다.
+
                        </ul>
 
                     </div>
 
                     </div>
 +
                </div>
  
                     <strong>1차 태깅 (인명 + 지명만):</strong>
+
                <div class="example">
 +
                     <h3>사례 2: 인용문(citation) 처리하기</h3>
 +
                   
 +
                    <h4>PDF 원문 (6페이지)</h4>
 
                     <div class="code-block">
 
                     <div class="code-block">
[L]영도구[/L] [L]동삼동[/L]은 조선시대에는 [L]절영도[/L]의 일부였다.
+
제 나이 열 두살 때 집을 떠나 서쪽으로 갔습니다. 배를 탈 적에 돌아가신
1876년 개항 이후 일본인들이 거주하기 시작했으며,
+
아버지께서 타이르시기를, '십 년 안에 진사(進士)에 급제하지 못하면 내 아들이라
1942년 [L]부산부[/L]에 편입되었다.
+
하지 말라. 나도 아들을 두었다 아니하리라. 가라! 부지런히 하여 네 힘을
 +
게을리 말라'고 하셨습니다.
 
                     </div>
 
                     </div>
  
                     <div class="tip-box" style="margin-top: 15px;">
+
                    <h4>스프레드시트 입력 결과</h4>
                         <strong>💡 판단 기준</strong>
+
                     <div class="table-wrapper">
                        <ul>
+
                         <table>
                            <li><strong>지명:</strong> 영도구, 동삼동, 절영도, 부산부 (모두 장소)</li>
+
                            <thead>
                            <li><strong>인명:</strong> 없음</li>
+
                                <tr>
                             <li><strong>제외:</strong> 조선시대, 1876년, 1942년 (2차 작업에서!)</li>
+
                                    <th>id</th>
                        </ul>
+
                                    <th>text_original</th>
                    </div>
+
                                    <th>text_type</th>
                </div>
+
                                    <th>relation_note</th>
 
+
                                </tr>
                <h3>👥 역할 분담: 3단계 워크플로우</h3>
+
                             </thead>
 
+
                            <tbody>
                <div class="roadmap">
+
                                <tr>
                    <div class="roadmap-step">
+
                                    <td>txt_10006</td>
                        <div class="roadmap-number">1</div>
+
                                    <td>(최치원이 쓴 글 중에서)</td>
                        <div class="roadmap-content">
+
                                    <td>normal</td>
                            <h3 style="margin-top: 0;">인문계 학생 - Excel/구글 시트에서 태깅</h3>
+
                                    <td></td>
                            <p><strong>도구:</strong> Excel 또는 Google Sheets</p>
+
                                </tr>
                            <p><strong>방법:</strong></p>
+
                                <tr style="background-color: #fff8e6;">
                            <ol>
+
                                    <td>txt_10007</td>
                                 <li><code class="code-inline">text_original</code> 열의 텍스트 읽기</li>
+
                                    <td>제 나이 열 두살 때 집을 떠나... 게을리 말라'고 하셨습니다.</td>
                                <li>새 열 <code class="code-inline">text_tagged</code> 추가</li>
+
                                    <td><strong>citation</strong></td>
                                <li>인명과 지명에 마커 표시:
+
                                    <td>txt_10006</td>
                                    <ul>
+
                                 </tr>
                                        <li>인명: [P]최치원[/P]</li>
+
                            </tbody>
                                        <li>지명: [L]경주[/L]</li>
+
                        </table>
                                    </ul>
+
                    </div>
                                </li>
+
 
                            </ol>
+
                    <div class="tip-box">
                            <p><strong>예시:</strong></p>
+
                        <strong>💡 체크포인트</strong>
                            <div class="code-block" style="font-size: 0.85em;">
+
                        <ul>
[P]최치원[/P]은 857년에 [L]경주[/L]에서 태어났다.
+
                            <li><strong>text_type을 'citation'으로</strong>: 직접 인용문임을 표시</li>
                            </div>
+
                            <li><strong>relation_note 활용</strong>: 앞 문장(txt_10006)과 연결됨을 표시</li>
                             <p style="margin-top: 10px;"><strong>⏱️ 예상 소요 시간:</strong> 문단당 2~3분</p>
+
                             <li><strong>따옴표 포함</strong>: 원문의 인용 부호 그대로 유지</li>
                         </div>
+
                         </ul>
 
                     </div>
 
                     </div>
 +
                </div>
  
                    <div class="roadmap-step">
+
                <div class="example">
                        <div class="roadmap-number">2</div>
+
                    <h3>사례 3: 시(poem) 처리하기 - 가장 까다로운 부분!</h3>
                        <div class="roadmap-content">
+
                   
                            <h3 style="margin-top: 0;">이공계 학생 - 파이썬으로 XML 자동 변환</h3>
+
                    <h4>PDF 원문 (11페이지) - 정서의 시</h4>
                            <p><strong>도구:</strong> Python + pandas + re (정규식)</p>
+
                    <div class="code-block">
                            <p><strong>방법:</strong></p>
+
狂奔疊石吼重巒
                            <ol>
+
人語難分咫尺間
                                <li>CSV 파일의 <code class="code-inline">text_tagged</code> 열 읽기</li>
+
常恐是非聲到耳
                                <li>정규식으로 마커 → XML 태그 변환</li>
+
故敎流水盡籠山
                                <li>XML 파일로 출력</li>
 
                            </ol>
 
                            <p><strong>파이썬 스크립트 예시:</strong></p>
 
                            <div class="code-block" style="font-size: 0.8em;">
 
import re
 
import pandas as pd
 
  
def convert_to_xml(tagged_text):
+
(번역)
    # [P]...[/P] → &lt;persName&gt;...&lt;/persName&gt;
+
미친 물 바위 치며 겹겹 산을 뒤흔드니
    text = re.sub(r'\[P\](.*?)\[/P\]', r'&lt;persName&gt;\1&lt;/persName&gt;', tagged_text)
+
지척 사이에도 사람 소리 모르겠네.
    # [L]...[/L] → &lt;placeName&gt;...&lt;/placeName&gt;
+
                    </div>
    text = re.sub(r'\[L\](.*?)\[/L\]', r'&lt;placeName&gt;\1&lt;/placeName&gt;', text)
 
    return text
 
  
# CSV 읽기
+
                    <h4>스프레드시트 입력 결과 - 원문과 번역문을 <strong>분리</strong>!</h4>
df = pd.read_csv('busan_data.csv')
+
                     <div class="table-wrapper">
df['text_xml'] = df['text_tagged'].apply(convert_to_xml)
+
                         <table>
 
+
                            <thead>
# XML 파일 저장
+
                                <tr>
with open('busan_output.xml', 'w', encoding='utf-8') as f:
+
                                    <th>id</th>
    f.write('&lt;?xml version="1.0" encoding="UTF-8"?&gt;\n&lt;teiCorpus&gt;\n')
+
                                    <th>person_id</th>
    for _, row in df.iterrows():
+
                                    <th>name_ko</th>
        f.write(f'  &lt;p id="{row["id"]}"&gt;{row["text_xml"]}&lt;/p&gt;\n')
+
                                    <th>text_original</th>
    f.write('&lt;/teiCorpus&gt;')
+
                                    <th>text_type</th>
                            </div>
+
                                    <th>relation_note</th>
                            <p style="margin-top: 10px;"><strong>⏱️ 예상 소요 시간:</strong> 전체 데이터 1~2일</p>
+
                                    <th>remark</th>
                        </div>
+
                                 </tr>
                    </div>
+
                            </thead>
 
+
                            <tbody>
                     <div class="roadmap-step">
+
                                <tr style="background-color: #fff5f5;">
                         <div class="roadmap-number">3</div>
+
                                    <td>txt_10013</td>
                        <div class="roadmap-content">
+
                                    <td>per_101_002</td>
                            <h3 style="margin-top: 0;">전체 팀 - VSCode로 XML 검수 및 수정</h3>
+
                                    <td>정서</td>
                            <p><strong>도구:</strong> Visual Studio Code (VSCode)</p>
+
                                    <td>狂奔疊石吼重巒 / 人語難分咫尺間 / 常恐是非聲到耳 / 故敎流水盡籠山</td>
                            <p><strong>왜 VSCode인가?</strong></p>
+
                                    <td><strong>poem</strong></td>
                            <ul>
+
                                    <td>txt_10014</td>
                                <li>✅ XML 구문 하이라이팅 (오류를 쉽게 발견)</li>
+
                                    <td>원문</td>
                                 <li>✅ 태그 자동 완성</li>
+
                                 </tr>
                                <li>✅ 검색 & 일괄 치환 기능</li>
+
                                 <tr style="background-color: #f0f9f4;">
                                <li>✅ 확장 프로그램으로 XML 검증 가능</li>
+
                                    <td>txt_10014</td>
                            </ul>
+
                                    <td>per_101_002</td>
                            <p><strong>VSCode 설치 및 설정:</strong></p>
+
                                    <td>정서</td>
                            <ol>
+
                                     <td>미친 물 바위 치며 겹겹 산을 뒤흔드니 / 지척 사이에도 사람 소리 모르겠네. / 세상의 시비 소리 들릴까 두려워서 / 짐짓 흐르는 물로 산을 온통 가두었네.</td>
                                <li><a href="https://code.visualstudio.com/" target="_blank">VSCode 다운로드</a> 및 설치</li>
+
                                     <td><strong>poem</strong></td>
                                <li>확장 프로그램 설치: "XML Tools" 검색 후 설치</li>
+
                                     <td>txt_10013</td>
                                 <li>생성된 XML 파일 열기</li>
+
                                     <td>번역문</td>
                                 <li>Ctrl+Shift+P → "Format Document" 실행 (자동 정렬)</li>
+
                                 </tr>
                            </ol>
+
                             </tbody>
                            <p><strong>검수 체크리스트:</strong></p>
+
                         </table>
                            <div class="checklist">
 
                                <ul>
 
                                     <li>태그가 올바르게 닫혔는가? (&lt;persName&gt;...&lt;/persName&gt;)</li>
 
                                     <li>잘못된 마커가 남아있지 않은가? ([P] → &lt;persName&gt;)</li>
 
                                     <li>중첩된 태그가 있는가? (수정 필요)</li>
 
                                     <li>인명/지명 구분이 올바른가?</li>
 
                                 </ul>
 
                             </div>
 
                         </div>
 
 
                     </div>
 
                     </div>
                </div>
 
  
                <h3>🔄 작업 도구별 역할 정리</h3>
+
                    <div class="tip-box">
 
+
                         <strong>💡 체크포인트</strong>
                <div class="table-wrapper">
+
                         <ul>
                    <table>
+
                             <li><strong>한문 원문과 번역문 = 2개 행</strong>: 별도로 입력!</li>
                         <thead>
+
                            <li><strong>연(구절) 구분은 슬래시(/)</strong>: 狂奔疊石吼重巒 / 人語難分咫尺間</li>
                            <tr>
+
                             <li><strong>relation_note로 연결</strong>: 원문과 번역이 서로를 가리킴</li>
                                <th>단계</th>
+
                             <li><strong>remark에 명시</strong>: '원문' 또는 '번역문'</li>
                                <th>도구</th>
+
                        </ul>
                                <th>작업 내용</th>
+
                    </div>
                                <th>담당</th>
+
                </div>
                            </tr>
+
 
                        </thead>
+
                <div class="example">
                         <tbody>
+
                    <h3>사례 4: 가사(歌辭) 처리하기</h3>
                             <tr>
+
                   
                                <td><strong>1단계</strong></td>
+
                    <h4>PDF 원문 (19페이지) - &lt;삼진작 三眞勺&gt;</h4>
                                <td>Excel / Google Sheets</td>
+
                    <div class="code-block">
                                <td>CSV 데이터 입력 (text_original)</td>
+
내 님믈 그리와 우니다니
                                <td>전체 팀원</td>
+
山졉동새 난 이슷요이다
                            </tr>
+
아니시며 거츠르신 아으
                             <tr>
+
잔월효성(殘月曉星)이 아시리이다
                                <td><strong>2단계</strong></td>
 
                                <td>Excel / Google Sheets</td>
 
                                <td>태깅 마커 표시 (text_tagged)</td>
 
                                <td>인문계 학생</td>
 
                             </tr>
 
                            <tr>
 
                                <td><strong>3단계</strong></td>
 
                                <td>Python</td>
 
                                <td>마커 → XML 자동 변환</td>
 
                                <td>이공계 학생</td>
 
                            </tr>
 
                            <tr>
 
                                <td><strong>4단계</strong></td>
 
                                <td>VSCode</td>
 
                                <td>XML 파일 검수 및 수정</td>
 
                                <td>팀 총괄 + 전체</td>
 
                            </tr>
 
                        </tbody>
 
                    </table>
 
                </div>
 
  
                <div class="warning-box">
+
(번역)
                    <strong>⚠️ 태깅 시 주의사항</strong>
+
내 임을 그리워하여 울고 있더니
                    <ul>
+
두견새와 나와는 비슷합니다 그려
                        <li><strong>일관성 유지:</strong> 같은 대상은 항상 같은 방식으로 태깅</li>
+
                    </div>
                        <li><strong>중첩 금지:</strong> [P][L]김해[/L][/P] (X) → 하나만 선택</li>
+
 
                        <li><strong>불확실하면 표시 안 함:</strong> 확실한 것만 태깅</li>
+
                    <div class="tip-box">
                        <li><strong>Excel에서 작업:</strong> 익숙한 도구로 빠르게 진행</li>
+
                        <strong>💡 체크포인트</strong>
                         <li><strong>VSCode는 검수용:</strong> XML 변환 후 최종 확인에만 사용</li>
+
                        <ul>
                     </ul>
+
                            <li><strong>고어도 poem으로 처리</strong>: 가사는 시(poem)로 분류</li>
 +
                            <li><strong>remark에 작품명</strong>: 가사 제목 명시</li>
 +
                            <li><strong>특수문자 처리</strong>: 깨진 부분은 !! 나 -- 로 표시</li>
 +
                         </ul>
 +
                     </div>
 
                 </div>
 
                 </div>
 +
            </section>
  
                 <h3>📊 태깅 진도 체크리스트</h3>
+
            <!-- ID 규칙 -->
 +
            <section id="id-rules">
 +
                 <h2>🔢 ID 부여 규칙 마스터하기</h2>
  
                 <div class="checklist">
+
                <h3>1. 텍스트 ID (id) 규칙</h3>
 +
               
 +
                 <div class="code-block">
 +
txt_10001, txt_10002, txt_10003...
 +
                </div>
 +
 
 +
                <div class="info-box">
 +
                    <strong>규칙</strong>
 
                     <ul>
 
                     <ul>
                         <li>인명과 지명의 차이를 구분할 수 있나요?</li>
+
                         <li><strong>형식:</strong> <code class="code-inline">txt_</code> + 5자리 숫자</li>
                        <li>마커 표기법([P], [L])을 이해했나요?</li>
+
                         <li><strong>시작:</strong> 10001부터 시작</li>
                         <li>Excel에 text_tagged 열을 추가했나요?</li>
+
                         <li><strong>연속성:</strong> 중간에 번호를 건너뛰지 않음</li>
                         <li>샘플 10개 문단을 태깅해보았나요?</li>
+
                         <li><strong>고유성:</strong> 전체 데이터베이스에서 중복되면 안 됨!</li>
                         <li>팀원들과 태깅 기준을 통일했나요?</li>
 
                        <li>VSCode를 설치하고 XML Tools 확장을 설치했나요?</li>
 
 
                     </ul>
 
                     </ul>
 
                 </div>
 
                 </div>
            </section>
 
  
            <!-- 데이터 구조 -->
+
                <div class="warning-box">
            <section id="structure">
+
                    <strong>⚠️ 흔한 실수</strong>
                <h2>📊 우리 팀 데이터 구조 이해하기</h2>
+
                    <div class="comparison">
 
+
                        <div class="comparison-item before">
                <p>우리가 사용하는 구글 시트는 <strong>18개의 필드()</strong>로 구성되어 있어요. 각 필드가 왜 필요한지 함께 살펴볼까요?</p>
+
                            <strong>❌ 잘못된 예시</strong>
 
+
                            <ul>
                <div class="tip-box">
+
                                <li>txt_1 (자릿수 부족)</li>
                    <strong>💡 작업 단계별 사용 필드</strong>
+
                                <li>txt_100001 (자릿수 초과)</li>
                    <ul>
+
                                <li>txt_10001을 두 번 사용 (중복)</li>
                        <li><strong>1단계 (기본 입력):</strong> id, book_title, person_id, text_original, text_type</li>
+
                            </ul>
                        <li><strong>2단계 (XML 태깅):</strong> text_tagged (새로 추가!)</li>
+
                        </div>
                        <li><strong>3단계 (자동화):</strong> 이공계 학생이 text_tagged → XML 변환</li>
+
                        <div class="comparison-item after">
                     </ul>
+
                            <strong>✅ 올바른 예시</strong>
 +
                            <ul>
 +
                                <li>txt_10001</li>
 +
                                <li>txt_10002</li>
 +
                                <li>txt_10003</li>
 +
                            </ul>
 +
                        </div>
 +
                     </div>
 
                 </div>
 
                 </div>
  
                 <h3>🔑 핵심 필드 설명</h3>
+
                 <h3>2. 인물 ID (person_id) 규칙</h3>
 +
               
 +
                <div class="code-block">
 +
per_101_001, per_101_002, per_102_001...
 +
                </div>
  
 +
                <div class="info-box">
 +
                    <strong>규칙</strong>
 +
                    <ul>
 +
                        <li><strong>형식:</strong> <code class="code-inline">per_</code> + 책번호(3자리) + <code class="code-inline">_</code> + 인물번호(3자리)</li>
 +
                        <li><strong>책번호:</strong>
 +
                            <ul>
 +
                                <li>101 = 『부산을 빛낸 인물』 권1</li>
 +
                                <li>102 = 『부산을 빛낸 인물』 권2</li>
 +
                                <li>201 = 『부산의 자연마을』 권1</li>
 +
                            </ul>
 +
                        </li>
 +
                        <li><strong>인물번호:</strong> 책 내에서 등장 순서대로 001부터 부여</li>
 +
                    </ul>
 +
                </div>
 +
 +
                <h4>실전 예시</h4>
 
                 <div class="table-wrapper">
 
                 <div class="table-wrapper">
 
                     <table>
 
                     <table>
 
                         <thead>
 
                         <thead>
 
                             <tr>
 
                             <tr>
                                 <th>필드명</th>
+
                                 <th>상황</th>
                                 <th>예시</th>
+
                                 <th>person_id</th>
 
                                 <th>설명</th>
 
                                 <th>설명</th>
                                <th>작업자가 할 일</th>
 
 
                             </tr>
 
                             </tr>
 
                         </thead>
 
                         </thead>
 
                         <tbody>
 
                         <tbody>
 
                             <tr>
 
                             <tr>
                                 <td><code class="code-inline">id</code></td>
+
                                <td>최치원이 5페이지에서 처음 등장</td>
                                 <td>txt_10001</td>
+
                                 <td><code class="code-inline">per_101_001</code></td>
                                <td>텍스트 고유 번호</td>
+
                                 <td>첫 번째 인물</td>
                                <td><span class="badge badge-danger">필수</span> 반드시 부여 (중복 금지!)</td>
 
 
                             </tr>
 
                             </tr>
 
                             <tr>
 
                             <tr>
                                 <td><code class="code-inline">book_id</code></td>
+
                                <td>정서가 11페이지에서 처음 등장</td>
                                 <td>lightuppeople01</td>
+
                                 <td><code class="code-inline">per_101_002</code></td>
                                <td>책 식별자</td>
+
                                 <td>두 번째 인물</td>
                                <td>책마다 고정값 사용</td>
 
 
                             </tr>
 
                             </tr>
 
                             <tr>
 
                             <tr>
                                 <td><code class="code-inline">book_title</code></td>
+
                                <td>최치원이 다시 15페이지에 등장</td>
                                 <td>부산을_빛낸_인물</td>
+
                                 <td><code class="code-inline">per_101_001</code></td>
                                <td>책 제목</td>
+
                                 <td>동일 ID 재사용!</td>
                                <td>언더바(_)로 연결</td>
 
 
                             </tr>
 
                             </tr>
                            <tr>
+
                        </tbody>
                                <td><code class="code-inline">sub_title</code></td>
+
                    </table>
                                <td>20세기_이전_인물편</td>
+
                </div>
                                <td>부제목</td>
+
 
                                <td>있는 경우만 입력</td>
+
                <div class="tip-box">
                            </tr>
+
                    <strong>💡 팁</strong>
                            <tr>
+
                    <ul>
                                <td><code class="code-inline">publisher</code></td>
+
                        <li>📌 <strong>인물 등장 순서대로 번호 부여</strong>: 페이지 순서가 아니라 등장 순서</li>
                                <td>부산광역시_문화유산과_시사편찬실</td>
+
                        <li>📌 <strong>같은 인물은 같은 ID</strong>: 여러 페이지에 등장해도 ID는 하나</li>
                                <td>발행처</td>
+
                        <li>📌 <strong>엑셀 필터 활용</strong>: 이미 부여된 인물 ID 확인하기</li>
                                <td>책 정보 그대로</td>
+
                    </ul>
                            </tr>
+
                </div>
                            <tr>
+
            </section>
                                <td><code class="code-inline">pub_date</code></td>
+
 
                                <td>2004.06</td>
+
            <!-- 작업 프로세스 -->
                                <td>출판일</td>
+
            <section id="process">
                                <td>YYYY.MM 형식</td>
+
                <h2>🛠️ 단계별 작업 프로세스</h2>
                            </tr>
+
 
                            <tr>
+
                <h3>STEP 1: PDF에서 텍스트 추출</h3>
                                <td><code class="code-inline">chapter</code></td>
+
               
                                <td>001</td>
+
                <h4>방법 1: Adobe Acrobat (추천)</h4>
                                <td>장 번호</td>
+
                <ol>
                                <td>3자리 숫자 (001, 002...)</td>
+
                    <li>PDF 파일 열기</li>
                            </tr>
+
                    <li>편집 → 복사할 텍스트 선택</li>
                            <tr>
+
                    <li>마우스 드래그로 문단 선택</li>
                                <td><code class="code-inline">page</code></td>
+
                    <li>Ctrl+C (복사)</li>
                                <td>005</td>
+
                    <li>메모장/VS Code에 붙여넣기</li>
                                <td>페이지</td>
+
                </ol>
                                <td>3자리 숫자 (005, 006...)</td>
+
 
                            </tr>
+
                <h4>방법 2: 온라인 도구</h4>
                            <tr>
+
                <ul>
                                <td><code class="code-inline">person_id</code></td>
+
                    <li><strong>Smallpdf:</strong> <a href="https://smallpdf.com/kr/pdf-to-text" target="_blank">https://smallpdf.com/kr/pdf-to-text</a></li>
                                <td>per_101_001</td>
+
                    <li><strong>iLovePDF:</strong> <a href="https://www.ilovepdf.com/ko/pdf_to_text" target="_blank">https://www.ilovepdf.com/ko/pdf_to_text</a></li>
                                <td>인물 고유 번호</td>
+
                </ul>
                                <td><span class="badge badge-danger">필수</span> 새 인물마다 부여</td>
+
 
                            </tr>
+
                <div class="warning-box">
                            <tr>
+
                    <strong>⚠️ 추출 전 체크리스트:</strong>
                                <td><code class="code-inline">name_ko</code></td>
+
                    <div class="checklist">
                                <td>최치원</td>
+
                        <ul>
                                <td>인물 한글 이름</td>
+
                            <li>한자가 깨지지 않았나요?</li>
                                <td>정확하게 입력</td>
+
                            <li>줄바꿈이 이상하지 않나요?</li>
                             </tr>
+
                             <li>특수문자(◦, ●, ※)가 제대로 나왔나요?</li>
                            <tr>
+
                        </ul>
                                <td><code class="code-inline">name_ch</code></td>
+
                    </div>
                                <td>崔致遠</td>
+
                </div>
                                <td>인물 한자 이름</td>
+
 
                                <td>있는 경우만 입력</td>
+
                <h3>STEP 2: 텍스트 전처리</h3>
                            </tr>
+
               
                            <tr>
+
                <h4>해야 할 일</h4>
                                <td><code class="code-inline">topic</code></td>
+
                <ol>
                                <td>해운대의_유래</td>
+
                    <li><strong>문단 나누기:</strong> Enter로 문단 구분</li>
                                <td>소주제</td>
+
                    <li><strong>공백 정리:</strong> 불필요한 띄어쓰기 제거</li>
                                <td>섹션 제목 그대로</td>
+
                    <li><strong>페이지 번호 제거:</strong> -5-, [5] 같은 표시 삭제</li>
                            </tr>
+
                    <li><strong>각주 처리:</strong> 1), 2) 같은 각주 번호 처리</li>
                            <tr>
+
                </ol>
                                <td><code class="code-inline">author</code></td>
+
 
                                <td>정경주_경성대교수</td>
+
                <h4>예시: 전처리 전후</h4>
                                <td>글쓴이</td>
+
                <div class="comparison">
                                <td>이름_소속 형식</td>
+
                    <div class="comparison-item before">
                            </tr>
+
                        <strong>Before (원본)</strong>
                            <tr>
+
                        <div class="code-block">
                                <td><code class="code-inline">text_original</code></td>
+
사람은 땅의 정기를 받아      태어나고, 땅은  사람으로
                                <td>(본문 내용)</td>
+
-5-
                                <td>원문 텍스트</td>
+
인하여 이름을 얻게 된다.
                                <td><span class="badge badge-danger">필수</span> 가장 중요!</td>
+
                        </div>
                            </tr>
+
                    </div>
                            <tr>
+
                    <div class="comparison-item after">
                                <td><code class="code-inline">text_type</code></td>
+
                        <strong>After (전처리 완료)</strong>
                                <td>normal / citation / poem</td>
+
                        <div class="code-block">
                                <td>텍스트 유형</td>
+
사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 인하여 이름을 얻게 된다.
                                <td><span class="badge badge-danger">필수</span> 반드시 구분</td>
+
                        </div>
                            </tr>
+
                    </div>
                            <tr>
+
                </div>
                                <td><code class="code-inline">relation_note</code></td>
+
 
                                <td>txt_10008</td>
+
                <h3>STEP 3: 스프레드시트 입력</h3>
                                <td>관련 텍스트 ID</td>
+
               
                                <td>연결된 경우만</td>
+
                <h4>입력 순서</h4>
                            </tr>
+
                <ol>
                            <tr>
+
                    <li><strong>메타데이터 먼저:</strong> book_title, publisher, pub_date, chapter</li>
                                <td><code class="code-inline">img_caption</code></td>
+
                    <li><strong>페이지 확인:</strong> page 필드에 정확한 페이지 입력</li>
                                <td>최치원_영정</td>
+
                    <li><strong>인물 정보:</strong> person_id, name_ko, name_ch 확인</li>
                                <td>이미지 설명</td>
+
                    <li><strong>본문 입력:</strong> text_original에 텍스트 붙여넣기</li>
                                <td>이미지 있을 때만</td>
+
                    <li><strong>유형 지정:</strong> text_type 선택 (normal/citation/poem)</li>
                            </tr>
+
                </ol>
                            <tr>
+
 
                                <td><code class="code-inline">remark</code></td>
+
                <div class="tip-box">
                                <td>번역문 / 원문</td>
+
                    <strong>💡 빠른 입력 팁</strong>
                                <td>비고</td>
+
                    <ul>
                                <td>필요시 메모</td>
+
                        <li><strong>Ctrl+D:</strong> 위 셀 내용 복사 (같은 값 반복 입력시 유용)</li>
                            </tr>
+
                        <li><strong>Ctrl+Enter:</strong> 셀 내 줄바꿈</li>
                        </tbody>
+
                        <li><strong>F2:</strong> 셀 편집 모드</li>
                     </table>
+
                     </ul>
 
                 </div>
 
                 </div>
            </section>
 
  
            <!-- 실전 예시 -->
+
                 <h3>📝 text_type 판단 가이드</h3>
            <section id="examples">
 
                 <h2>📖 실전 예시로 배우기</h2>
 
  
                 <div class="example">
+
                 <div class="table-wrapper">
                     <h3>사례 1: 일반 텍스트 처리하기</h3>
+
                     <table>
                   
+
                        <thead>
                    <h4>PDF 원문 (5페이지)</h4>
+
                            <tr>
                    <div class="code-block">
+
                                <th>text_type</th>
해운대의 유래
+
                                <th>사용 시점</th>
 +
                                <th>예시 키워드</th>
 +
                            </tr>
 +
                        </thead>
 +
                        <tbody>
 +
                            <tr>
 +
                                <td><span class="badge badge-primary">normal</span></td>
 +
                                <td>일반 서술 텍스트</td>
 +
                                <td>"~이다", "~되었다", "~라고 한다"</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><span class="badge badge-warning">citation</span></td>
 +
                                <td>직접 인용문</td>
 +
                                <td>"~하셨습니다", 따옴표(' " ") 있음</td>
 +
                            </tr>
 +
                            <tr>
 +
                                <td><span class="badge badge-success">poem</span></td>
 +
                                <td>시, 가사, 한시</td>
 +
                                <td>4행시, 율문, 운문</td>
 +
                            </tr>
 +
                        </tbody>
 +
                    </table>
 +
                </div>
 +
            </section>
  
사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 인하여 이름을 얻게 된다.  
+
            <!-- 실습 스프레드시트 -->
한반도 동남쪽 끝 바닷가의 한 모퉁이에 있는 해운대는 천년 전 신라의 학사
+
            <section id="spreadsheet">
최치원이 머물며 자취를 남긴 곳이다.
+
                <h2>💻 실습 스프레드시트</h2>
 +
 
 +
                <p>아래는 우리 팀이 실제로 작업하는 구글 시트입니다. 실시간으로 데이터를 확인하고 입력할 수 있어요.</p>
 +
 
 +
                <div class="spreadsheet-container">
 +
                    <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>
 
                     </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>
  
                    <h4>스프레드시트 입력 결과</h4>
+
                <div class="info-box">
                    <div class="table-wrapper">
+
                    <strong>💡 스프레드시트 사용 팁</strong>
                        <table>
+
                    <ul>
                            <thead>
+
                        <li>위 임베드 창에서 바로 데이터를 확인할 수 있어요</li>
                                <tr>
+
                        <li>실제 입력은 "새 탭에서 열기" 버튼을 클릭해서 진행하세요</li>
                                    <th>id</th>
+
                        <li>여러 사람이 동시에 작업할 수 있어요 (실시간 공동 편집)</li>
                                    <th>book_title</th>
+
                        <li>변경 이력은 자동으로 저장됩니다</li>
                                    <th>chapter</th>
+
                    </ul>
                                    <th>page</th>
+
                </div>
                                    <th>person_id</th>
+
 
                                    <th>name_ko</th>
+
                <h3>✅ 최종 체크리스트</h3>
                                    <th>topic</th>
+
               
                                    <th>text_type</th>
+
                <p>작업 완료 전에 꼭 확인하세요!</p>
                                </tr>
+
 
                            </thead>
+
                <div class="checklist">
                            <tbody>
+
                    <ul>
                                <tr>
+
                        <li>id가 연속되어 있나요? (txt_10001 → txt_10002 → txt_10003)</li>
                                    <td>txt_10001</td>
+
                        <li>person_id가 올바르게 부여되었나요?</li>
                                    <td>부산을_빛낸_인물</td>
+
                        <li>같은 인물이 여러 곳에 나오면 같은 person_id를 사용했나요?</li>
                                    <td>001</td>
+
                        <li>text_type이 정확한가요? (normal/citation/poem)</li>
                                    <td>005</td>
+
                        <li>시의 원문과 번역문을 분리했나요?</li>
                                    <td>per_101_001</td>
+
                        <li>relation_note로 관련 텍스트를 연결했나요?</li>
                                    <td>최치원</td>
+
                        <li>한자 이름이 있는 경우 name_ch에 입력했나요?</li>
                                    <td>해운대의_유래</td>
+
                        <li>띄어쓰기와 문장부호가 원문과 일치하나요?</li>
                                    <td>normal</td>
+
                    </ul>
                                </tr>
+
                </div>
                            </tbody>
+
            </section>
                        </table>
 
                    </div>
 
  
                    <div class="tip-box">
+
            <!-- 자주 발생하는 오류 -->
                        <strong>💡 체크포인트</strong>
+
            <section id="errors">
                        <ul>
+
                <h2>🔧 자주 발생하는 오류와 해결법</h2>
                            <li>✅ <strong>id는 연속된 번호</strong>: txt_10001, txt_10002, txt_10003...</li>
+
 
                            <li><strong>person_id는 새 인물 등장시에만 변경</strong></li>
+
                <div class="example">
                            <li><strong>한 문단 = 한 행</strong>: 문단 단위로 나누어 입력</li>
+
                    <h4>오류 1: ID 중복</h4>
                            <li>✅ <strong>text_type은 'normal'</strong>: 일반 서술 텍스트</li>
+
                    <p><strong>❌ 문제:</strong> txt_10005가 두 개 있어요!</p>
                        </ul>
+
                    <p><strong>✅ 해결:</strong> 전체 열을 선택 → 데이터 → 중복 항목 삭제</p>
                    </div>
 
 
                 </div>
 
                 </div>
  
 
                 <div class="example">
 
                 <div class="example">
                     <h3>사례 2: 인용문(citation) 처리하기</h3>
+
                     <h4>오류 2: person_id 혼동</h4>
                      
+
                     <p><strong>❌ 문제:</strong> 최치원이 등장할 때마다 새 ID를 부여했어요</p>
                    <h4>PDF 원문 (6페이지)</h4>
+
                     <p><strong>✅ 해결:</strong> 같은 인물은 첫 등장시의 ID를 계속 사용 (per_101_001)</p>
                     <div class="code-block">
+
                </div>
제 나이 열 두살 때 집을 떠나 서쪽으로 갔습니다. 배를 탈 적에 돌아가신
 
아버지께서 타이르시기를, '십 년 안에 진사(進士)에 급제하지 못하면 내 아들이라
 
하지 말라. 나도 아들을 두었다 아니하리라. 가라! 부지런히 하여 네 힘을
 
게을리 말라'고 하셨습니다.
 
                    </div>
 
  
                    <h4>스프레드시트 입력 결과</h4>
+
                <div class="example">
                    <div class="table-wrapper">
+
                    <h4>오류 3: 시 처리 실수</h4>
                        <table>
+
                    <p><strong>❌ 문제:</strong> 원문과 번역을 한 행에 넣었어요</p>
                            <thead>
+
                    <p><strong>✅ 해결:</strong> 두 개 행으로 분리하고 relation_note로 연결</p>
                                <tr>
+
                </div>
                                    <th>id</th>
+
 
                                    <th>text_original</th>
+
                <div class="example">
                                    <th>text_type</th>
+
                    <h4>오류 4: text_type 오입력</h4>
                                    <th>relation_note</th>
+
                    <p><strong>❌ 문제:</strong> citation을 citaion으로 오타</p>
                                </tr>
+
                    <p><strong>✅ 해결:</strong> 드롭다운 메뉴 만들기</p>
                            </thead>
+
                    <ol>
                            <tbody>
+
                        <li>열 선택 → 데이터 → 데이터 확인</li>
                                <tr>
+
                        <li>조건: 목록(항목) → normal, citation, poem</li>
                                    <td>txt_10006</td>
+
                    </ol>
                                    <td>(최치원이 쓴 글 중에서)</td>
+
                </div>
                                    <td>normal</td>
+
            </section>
                                    <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>
 
  
                    <div class="tip-box">
+
            <!-- Q&A -->
                        <strong>💡 체크포인트</strong>
+
            <section id="qa">
                        <ul>
+
                <h2>💬 자주 묻는 질문 (Q&A)</h2>
                            <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">
+
                 <div class="info-box">
                     <h3>사례 3: 시(poem) 처리하기 - 가장 까다로운 부분!</h3>
+
                     <h4>Q1. 인물이 명확하지 않은 경우는?</h4>
                      
+
                     <p><strong>A.</strong> person_id를 비워두고, remark에 "인물 미상" 표시</p>
                    <h4>PDF 원문 (11페이지) - 정서의 시</h4>
+
                </div>
                    <div class="code-block">
 
狂奔疊石吼重巒
 
人語難分咫尺間
 
常恐是非聲到耳
 
故敎流水盡籠山
 
  
(번역)
+
                <div class="info-box">
미친 물 바위 치며 겹겹 산을 뒤흔드니
+
                    <h4>Q2. 여러 인물이 한 문단에 나오면?</h4>
지척 사이에도 사람 소리 모르겠네.
+
                    <p><strong>A.</strong> 주요 인물의 person_id를 사용하고, remark에 "김철수, 이영희 등장" 메모</p>
                    </div>
+
                </div>
  
                    <h4>스프레드시트 입력 결과 - 원문과 번역문을 <strong>분리</strong>!</h4>
+
                <div class="info-box">
                    <div class="table-wrapper">
+
                    <h4>Q3. 페이지 번호가 불분명하면?</h4>
                        <table>
+
                    <p><strong>A.</strong> 앞뒤 맥락으로 유추하고, remark에 "페이지 추정" 표시</p>
                            <thead>
+
                </div>
                                <tr>
+
 
                                    <th>id</th>
+
                <div class="info-box">
                                    <th>person_id</th>
+
                    <h4>Q4. 작업 중 막힐 때는?</h4>
                                    <th>name_ko</th>
+
                    <p><strong>A.</strong></p>
                                    <th>text_original</th>
+
                    <ol>
                                    <th>text_type</th>
+
                        <li>팀 슬랙 채널에 질문</li>
                                    <th>relation_note</th>
+
                        <li>매주 화요일 오후 2시 정기 모임</li>
                                    <th>remark</th>
+
                        <li>작업 메뉴얼 재확인</li>
                                </tr>
+
                    </ol>
                            </thead>
+
                </div>
                            <tbody>
+
            </section>
                                <tr style="background-color: #fff5f5;">
+
 
                                    <td>txt_10013</td>
+
            <!-- XML 태깅 가이드 -->
                                    <td>per_101_002</td>
+
            <section id="xml-tagging">
                                    <td>정서</td>
+
                <h2>🏷️ XML 태깅: 데이터에 의미 부여하기</h2>
                                    <td>狂奔疊石吼重巒 / 人語難分咫尺間 / 常恐是非聲到耳 / 故敎流水盡籠山</td>
+
                <p>CSV로 정리한 텍스트에 <strong>의미론적 태그(Semantic Tags)</strong>를 붙여서 컴퓨터가 "누가", "어디서", "언제" 같은 정보를 이해할 수 있게 만드는 작업입니다.</p>
                                    <td><strong>poem</strong></td>
+
 
                                    <td>txt_10014</td>
+
                <h3>🎯 왜 XML 태깅이 필요한가요?</h3>
                                    <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>
 
  
                     <div class="tip-box">
+
                <div class="comparison">
                         <strong>💡 체크포인트</strong>
+
                     <div class="comparison-item before">
                         <ul>
+
                         <strong>태깅 전 (일반 텍스트)</strong>
                            <li><strong>한문 원문과 번역문 = 2개 행</strong>: 별도로 입력!</li>
+
                         <p style="margin-top: 10px;">최치원은 857년에 경주에서 태어났다.</p>
                            <li><strong>연(구절) 구분은 슬래시(/)</strong>: 狂奔疊石吼重巒 / 人語難分咫尺間</li>
+
                        <p style="margin-top: 10px; font-size: 0.9em; color: #666;">→ 컴퓨터는 그냥 글자로만 인식</p>
                             <li>✅ <strong>relation_note로 연결</strong>: 원문과 번역이 서로를 가리킴</li>
+
                    </div>
                             <li>✅ <strong>remark에 명시</strong>: '원문' 또는 '번역문'</li>
+
                    <div class="comparison-item after">
                         </ul>
+
                        <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>
 
                 </div>
 
                 </div>
  
                 <div class="example">
+
                <h3>📚 온톨로지 설계 참고: 광주인문도시 사례</h3>
                     <h3>사례 4: 가사(歌辭) 처리하기</h3>
+
 
                      
+
                 <div class="info-box">
                     <h4>PDF 원문 (19페이지) - &lt;삼진작 三眞勺&gt;</h4>
+
                     <p><strong>우리 프로젝트는 광주인문도시스토리플랫폼의 온톨로지 설계를 참고합니다:</strong></p>
                     <div class="code-block">
+
                     <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>
  
(번역)
+
                <h3>🎯 단계별 태깅 전략 (난이도별 접근)</h3>
내 임을 그리워하여 울고 있더니
 
두견새와 나와는 비슷합니다 그려
 
                    </div>
 
  
                     <div class="tip-box">
+
                <div class="roadmap">
                         <strong>💡 체크포인트</strong>
+
                     <div class="roadmap-step" style="background-color: #e8f5e9;">
                         <ul>
+
                         <div class="roadmap-number" style="background-color: #4caf50;">1</div>
                             <li><strong>고어도 poem으로 처리</strong>: 가사는 시(poem)로 분류</li>
+
                         <div class="roadmap-content">
                            <li><strong>remark에 작품명</strong>: 가사 제목 명시</li>
+
                            <h3 style="margin-top: 0; color: #4caf50;">1차 작업 (필수) - 가장 명확한 요소</h3>
                             <li><strong>특수문자 처리</strong>: 깨진 부분은 !! 나 -- 로 표시</li>
+
                            <p><span class="badge badge-success">현재 작업 단계</span></p>
                         </ul>
+
                             <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>
 
                     </div>
                </div>
 
            </section>
 
  
            <!-- ID 규칙 -->
+
                    <div class="roadmap-step" style="background-color: #fff8e6;">
            <section id="id-rules">
+
                        <div class="roadmap-number" style="background-color: #ff9f43;">2</div>
                <h2>🔢 ID 부여 규칙 마스터하기</h2>
+
                        <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>
  
                <h3>1. 텍스트 ID (id) 규칙</h3>
+
                    <div class="roadmap-step" style="background-color: #f3e5f5;">
               
+
                        <div class="roadmap-number" style="background-color: #9c27b0;">3</div>
                <div class="code-block">
+
                        <div class="roadmap-content">
txt_10001, txt_10002, txt_10003...
+
                            <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>
 
                 </div>
  
                 <div class="info-box">
+
                 <div class="success-box">
                     <strong>규칙</strong>
+
                     <strong>🎯 우리 팀 결정사항</strong>
                     <ul>
+
                     <p><strong>1차 작업 범위:</strong> 인명(persName) + 지명(placeName) <strong>2가지만</strong> 태깅</p>
                        <li><strong>형식:</strong> <code class="code-inline">txt_</code> + 5자리 숫자</li>
+
                    <p style="margin-top: 5px; font-size: 0.95em;">→ 빠르고 정확한 작업으로 핵심 온톨로지 구축 우선!</p>
                        <li><strong>시작:</strong> 10001부터 시작</li>
 
                        <li><strong>연속성:</strong> 중간에 번호를 건너뛰지 않음</li>
 
                        <li><strong>고유성:</strong> 전체 데이터베이스에서 중복되면 안 됨!</li>
 
                    </ul>
 
 
                 </div>
 
                 </div>
  
                 <div class="warning-box">
+
                 <h3>🔍 1차 작업: 인명 + 지명 태깅 실전</h3>
                    <strong>⚠️ 흔한 실수</strong>
+
 
                    <div class="comparison">
+
                <div class="example">
                        <div class="comparison-item before">
+
                    <h4>예시 1: 『부산을 빛낸 인물』</h4>
                            <strong>❌ 잘못된 예시</strong>
+
                   
                            <ul>
+
                    <strong>원문:</strong>
                                <li>txt_1 (자릿수 부족)</li>
+
                    <div class="code-block">
                                <li>txt_100001 (자릿수 초과)</li>
+
최치원은 857년(헌안왕 원년)에 신라의 서울 경주에서 태어났다.
                                <li>txt_10001을 두 번 사용 (중복)</li>
+
868년(경문왕 8)에 12세의 나이로 당나라에 들어갔다.
                            </ul>
 
                        </div>
 
                        <div class="comparison-item after">
 
                            <strong>✅ 올바른 예시</strong>
 
                            <ul>
 
                                <li>txt_10001</li>
 
                                <li>txt_10002</li>
 
                                <li>txt_10003</li>
 
                            </ul>
 
                        </div>
 
 
                     </div>
 
                     </div>
                </div>
 
  
                <h3>2. 인물 ID (person_id) 규칙</h3>
+
                    <strong>1차 태깅 (인명 + 지명만):</strong>
               
+
                    <div class="code-block">
                <div class="code-block">
+
[P]최치원[/P]은 857년([P]헌안왕[/P] 원년)에 [L]신라[/L]의 서울 [L]경주[/L]에서 태어났다.
per_101_001, per_101_002, per_102_001...
+
868년([P]경문왕[/P] 8)에 12세의 나이로 [L]당나라[/L]에 들어갔다.
                </div>
+
                    </div>
  
                <div class="info-box">
+
                    <div class="tip-box" style="margin-top: 15px;">
                    <strong>규칙</strong>
+
                        <strong>💡 판단 기준</strong>
                    <ul>
+
                        <ul>
                        <li><strong>형식:</strong> <code class="code-inline">per_</code> + 책번호(3자리) + <code class="code-inline">_</code> + 인물번호(3자리)</li>
+
                            <li><strong>인명:</strong> 사람 이름 (최치원, 헌안왕, 경문왕)</li>
                        <li><strong>책번호:</strong>
+
                            <li><strong>지명:</strong> 장소/지역 (신라, 경주, 당나라)</li>
                            <ul>
+
                            <li><strong>제외:</strong> 857년, 868년 같은 시간 표현 (2차 작업에서!)</li>
                                <li>101 = 『부산을 빛낸 인물』 권1</li>
+
                         </ul>
                                <li>102 = 『부산을 빛낸 인물』 권2</li>
+
                     </div>
                                <li>201 = 『부산의 자연마을』 권1</li>
 
                            </ul>
 
                        </li>
 
                         <li><strong>인물번호:</strong> 책 내에서 등장 순서대로 001부터 부여</li>
 
                     </ul>
 
 
                 </div>
 
                 </div>
  
                <h4>실전 예시</h4>
+
                 <div class="example">
                 <div class="table-wrapper">
+
                     <h4>예시 2: 『부산의 자연마을』</h4>
                     <table>
+
                   
                        <thead>
+
                    <strong>원문:</strong>
                            <tr>
+
                    <div class="code-block">
                                <th>상황</th>
+
영도구 동삼동은 조선시대에는 절영도의 일부였다.
                                <th>person_id</th>
+
1876년 개항 이후 일본인들이 거주하기 시작했으며,
                                <th>설명</th>
+
1942년 부산부에 편입되었다.
                            </tr>
+
                     </div>
                        </thead>
 
                        <tbody>
 
                            <tr>
 
                                <td>최치원이 5페이지에서 처음 등장</td>
 
                                <td><code class="code-inline">per_101_001</code></td>
 
                                <td>첫 번째 인물</td>
 
                            </tr>
 
                            <tr>
 
                                <td>정서가 11페이지에서 처음 등장</td>
 
                                <td><code class="code-inline">per_101_002</code></td>
 
                                <td>두 번째 인물</td>
 
                            </tr>
 
                            <tr>
 
                                <td>최치원이 다시 15페이지에 등장</td>
 
                                <td><code class="code-inline">per_101_001</code></td>
 
                                <td>동일 ID 재사용!</td>
 
                            </tr>
 
                        </tbody>
 
                     </table>
 
                </div>
 
  
                <div class="tip-box">
+
                    <strong>1차 태깅 (인명 + 지명만):</strong>
                    <strong>💡 </strong>
+
                    <div class="code-block">
                    <ul>
+
[L]영도구[/L] [L]동삼동[/L]은 조선시대에는 [L]절영도[/L]의 일부였다.
                        <li>📌 <strong>인물 등장 순서대로 번호 부여</strong>: 페이지 순서가 아니라 등장 순서</li>
+
1876년 개항 이후 일본인들이 거주하기 시작했으며,
                        <li>📌 <strong>같은 인물은 같은 ID</strong>: 여러 페이지에 등장해도 ID는 하나</li>
+
1942년 [L]부산부[/L]에 편입되었다.
                        <li>📌 <strong>엑셀 필터 활용</strong>: 이미 부여된 인물 ID 확인하기</li>
+
                    </div>
                     </ul>
+
 
 +
                    <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>
 
                 </div>
            </section>
 
  
            <!-- 작업 프로세스 -->
+
                 <h3>👥 역할 분담: 3단계 워크플로우</h3>
            <section id="process">
 
                 <h2>🛠️ 단계별 작업 프로세스</h2>
 
  
                 <h3>STEP 1: PDF에서 텍스트 추출</h3>
+
                 <div class="roadmap">
               
+
                    <div class="roadmap-step">
                <h4>방법 1: Adobe Acrobat (추천)</h4>
+
                        <div class="roadmap-number">1</div>
                <ol>
+
                        <div class="roadmap-content">
                    <li>PDF 파일 열기</li>
+
                            <h3 style="margin-top: 0;">인문계 학생 - Excel/구글 시트에서 태깅</h3>
                    <li>편집 → 복사할 텍스트 선택</li>
+
                            <p><strong>도구:</strong> Excel 또는 Google Sheets</p>
                    <li>마우스 드래그로 문단 선택</li>
+
                            <p><strong>방법:</strong></p>
                    <li>Ctrl+C (복사)</li>
+
                            <ol>
                    <li>메모장/VS Code에 붙여넣기</li>
+
                                <li><code class="code-inline">text_original</code> 열의 텍스트 읽기</li>
                </ol>
+
                                <li>새 열 <code class="code-inline">text_tagged</code> 추가</li>
 
+
                                <li>인명과 지명에 마커 표시:
                <h4>방법 2: 온라인 도구</h4>
+
                                    <ul>
                <ul>
+
                                        <li>인명: [P]최치원[/P]</li>
                    <li><strong>Smallpdf:</strong> <a href="https://smallpdf.com/kr/pdf-to-text" target="_blank">https://smallpdf.com/kr/pdf-to-text</a></li>
+
                                        <li>지명: [L]경주[/L]</li>
                    <li><strong>iLovePDF:</strong> <a href="https://www.ilovepdf.com/ko/pdf_to_text" target="_blank">https://www.ilovepdf.com/ko/pdf_to_text</a></li>
+
                                    </ul>
                </ul>
+
                                </li>
 
+
                            </ol>
                <div class="warning-box">
+
                            <p><strong>예시:</strong></p>
                    <strong>⚠️ 추출 전 체크리스트:</strong>
+
                            <div class="code-block" style="font-size: 0.85em;">
                    <div class="checklist">
+
[P]최치원[/P]은 857년에 [L]경주[/L]에서 태어났다.
                        <ul>
+
                             </div>
                             <li>한자가 깨지지 않았나요?</li>
+
                             <p style="margin-top: 10px;"><strong>⏱️ 예상 소요 시간:</strong> 문단당 2~3분</p>
                             <li>줄바꿈이 이상하지 않나요?</li>
+
                         </div>
                            <li>특수문자(◦, ●, ※)가 제대로 나왔나요?</li>
 
                         </ul>
 
 
                     </div>
 
                     </div>
                </div>
 
  
                <h3>STEP 2: 텍스트 전처리</h3>
+
                    <div class="roadmap-step">
               
+
                        <div class="roadmap-number">2</div>
                <h4>해야 할 일</h4>
+
                        <div class="roadmap-content">
                <ol>
+
                            <h3 style="margin-top: 0;">이공계 학생 - 파이썬으로 XML 자동 변환</h3>
                    <li><strong>문단 나누기:</strong> Enter로 문단 구분</li>
+
                            <p><strong>도구:</strong> Python + pandas + re (정규식)</p>
                    <li><strong>공백 정리:</strong> 불필요한 띄어쓰기 제거</li>
+
                            <p><strong>방법:</strong></p>
                    <li><strong>페이지 번호 제거:</strong> -5-, [5] 같은 표시 삭제</li>
+
                            <ol>
                    <li><strong>각주 처리:</strong> 1), 2) 같은 각주 번호 처리</li>
+
                                <li>CSV 파일의 <code class="code-inline">text_tagged</code> 열 읽기</li>
                </ol>
+
                                <li>정규식으로 마커 → XML 태그 변환</li>
 +
                                <li>XML 파일로 출력</li>
 +
                            </ol>
 +
                            <p><strong>파이썬 스크립트 예시:</strong></p>
 +
                            <div class="code-block" style="font-size: 0.8em;">
 +
import re
 +
import pandas as pd
  
                <h4>예시: 전처리 전후</h4>
+
def convert_to_xml(tagged_text):
                <div class="comparison">
+
    # [P]...[/P] → &lt;persName&gt;...&lt;/persName&gt;
                    <div class="comparison-item before">
+
    text = re.sub(r'\[P\](.*?)\[/P\]', r'&lt;persName&gt;\1&lt;/persName&gt;', tagged_text)
                        <strong>Before (원본)</strong>
+
    # [L]...[/L] → &lt;placeName&gt;...&lt;/placeName&gt;
                        <div class="code-block">
+
    text = re.sub(r'\[L\](.*?)\[/L\]', r'&lt;placeName&gt;\1&lt;/placeName&gt;', text)
사람은 땅의 정기를 받아      태어나고, 땅은  사람으로
+
    return text
-5-
+
 
인하여 이름을 얻게 된다.
+
# CSV 읽기
 +
df = pd.read_csv('busan_data.csv')
 +
df['text_xml'] = df['text_tagged'].apply(convert_to_xml)
 +
 
 +
# XML 파일 저장
 +
with open('busan_output.xml', 'w', encoding='utf-8') as f:
 +
    f.write('&lt;?xml version="1.0" encoding="UTF-8"?&gt;\n&lt;teiCorpus&gt;\n')
 +
    for _, row in df.iterrows():
 +
        f.write(f'  &lt;p id="{row["id"]}"&gt;{row["text_xml"]}&lt;/p&gt;\n')
 +
    f.write('&lt;/teiCorpus&gt;')
 +
                            </div>
 +
                            <p style="margin-top: 10px;"><strong>⏱️ 예상 소요 시간:</strong> 전체 데이터 1~2일</p>
 
                         </div>
 
                         </div>
 
                     </div>
 
                     </div>
                    <div class="comparison-item after">
 
                        <strong>After (전처리 완료)</strong>
 
                        <div class="code-block">
 
사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 인하여 이름을 얻게 된다.
 
                        </div>
 
                    </div>
 
                </div>
 
  
                <h3>STEP 3: 스프레드시트 입력</h3>
+
                    <div class="roadmap-step">
               
+
                        <div class="roadmap-number">3</div>
                <h4>입력 순서</h4>
+
                        <div class="roadmap-content">
                <ol>
+
                            <h3 style="margin-top: 0;">전체 팀 - VSCode로 XML 검수 및 수정</h3>
                    <li><strong>메타데이터 먼저:</strong> book_title, publisher, pub_date, chapter</li>
+
                            <p><strong>도구:</strong> Visual Studio Code (VSCode)</p>
                    <li><strong>페이지 확인:</strong> page 필드에 정확한 페이지 입력</li>
+
                            <p><strong>왜 VSCode인가?</strong></p>
                    <li><strong>인물 정보:</strong> person_id, name_ko, name_ch 확인</li>
+
                            <ul>
                    <li><strong>본문 입력:</strong> text_original에 텍스트 붙여넣기</li>
+
                                <li>✅ XML 구문 하이라이팅 (오류를 쉽게 발견)</li>
                    <li><strong>유형 지정:</strong> text_type 선택 (normal/citation/poem)</li>
+
                                <li>✅ 태그 자동 완성</li>
                </ol>
+
                                <li>✅ 검색 & 일괄 치환 기능</li>
 
+
                                <li>✅ 확장 프로그램으로 XML 검증 가능</li>
                <div class="tip-box">
+
                            </ul>
                    <strong>💡 빠른 입력 팁</strong>
+
                            <p><strong>VSCode 설치 및 설정:</strong></p>
                    <ul>
+
                            <ol>
                        <li><strong>Ctrl+D:</strong> 위 셀 내용 복사 (같은 값 반복 입력시 유용)</li>
+
                                <li><a href="https://code.visualstudio.com/" target="_blank">VSCode 다운로드</a> 및 설치</li>
                        <li><strong>Ctrl+Enter:</strong> 셀 내 줄바꿈</li>
+
                                <li>확장 프로그램 설치: "XML Tools" 검색 후 설치</li>
                        <li><strong>F2:</strong> 셀 편집 모드</li>
+
                                <li>생성된 XML 파일 열기</li>
                     </ul>
+
                                <li>Ctrl+Shift+P → "Format Document" 실행 (자동 정렬)</li>
 +
                            </ol>
 +
                            <p><strong>검수 체크리스트:</strong></p>
 +
                            <div class="checklist">
 +
                                <ul>
 +
                                    <li>태그가 올바르게 닫혔는가? (&lt;persName&gt;...&lt;/persName&gt;)</li>
 +
                                    <li>잘못된 마커가 남아있지 않은가? ([P] → &lt;persName&gt;)</li>
 +
                                    <li>중첩된 태그가 있는가? (수정 필요)</li>
 +
                                    <li>인명/지명 구분이 올바른가?</li>
 +
                                </ul>
 +
                            </div>
 +
                        </div>
 +
                     </div>
 
                 </div>
 
                 </div>
  
                 <h3>📝 text_type 판단 가이드</h3>
+
                 <h3>🔄 작업 도구별 역할 정리</h3>
  
 
                 <div class="table-wrapper">
 
                 <div class="table-wrapper">
1,481번째 줄: 1,554번째 줄:
 
                         <thead>
 
                         <thead>
 
                             <tr>
 
                             <tr>
                                 <th>text_type</th>
+
                                 <th>단계</th>
                                 <th>사용 시점</th>
+
                                 <th>도구</th>
                                 <th>예시 키워드</th>
+
                                 <th>작업 내용</th>
 +
                                <th>담당</th>
 
                             </tr>
 
                             </tr>
 
                         </thead>
 
                         </thead>
 
                         <tbody>
 
                         <tbody>
 
                             <tr>
 
                             <tr>
                                 <td><span class="badge badge-primary">normal</span></td>
+
                                 <td><strong>1단계</strong></td>
                                 <td>일반 서술 텍스트</td>
+
                                 <td>Excel / Google Sheets</td>
                                 <td>"~이다", "~되었다", "~라고 한다"</td>
+
                                <td>CSV 데이터 입력 (text_original)</td>
 +
                                 <td>전체 팀원</td>
 
                             </tr>
 
                             </tr>
 
                             <tr>
 
                             <tr>
                                 <td><span class="badge badge-warning">citation</span></td>
+
                                 <td><strong>2단계</strong></td>
                                 <td>직접 인용문</td>
+
                                 <td>Excel / Google Sheets</td>
                                 <td>"~하셨습니다", 따옴표(' " ") 있음</td>
+
                                 <td>태깅 마커 표시 (text_tagged)</td>
 +
                                <td>인문계 학생</td>
 
                             </tr>
 
                             </tr>
 
                             <tr>
 
                             <tr>
                                 <td><span class="badge badge-success">poem</span></td>
+
                                 <td><strong>3단계</strong></td>
                                 <td>시, 가사, 한시</td>
+
                                 <td>Python</td>
                                 <td>4행시, 율문, 운문</td>
+
                                 <td>마커 → XML 자동 변환</td>
 +
                                <td>이공계 학생</td>
 
                             </tr>
 
                             </tr>
                         </tbody>
+
                            <tr>
                     </table>
+
                                <td><strong>4단계</strong></td>
 +
                                <td>VSCode</td>
 +
                                <td>XML 파일 검수 및 수정</td>
 +
                                <td>팀 총괄 + 전체</td>
 +
                            </tr>
 +
                         </tbody>
 +
                     </table>
 
                 </div>
 
                 </div>
            </section>
 
  
            <!-- 실습 스프레드시트 -->
+
                <div class="warning-box">
            <section id="spreadsheet">
+
                    <strong>⚠️ 태깅 시 주의사항</strong>
                <h2>💻 실습 스프레드시트</h2>
+
                    <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>
  
                 <p>아래는 우리 팀이 실제로 작업하는 구글 시트입니다. 실시간으로 데이터를 확인하고 입력할 수 있어요.</p>
+
                 <h3>📊 태깅 진도 체크리스트</h3>
  
                 <div class="spreadsheet-container">
+
                 <div class="checklist">
                     <div class="spreadsheet-header">
+
                     <ul>
                         <span>📊 PNU_DHC 플랫폼 데이터 작업 시트</span>
+
                         <li>인명과 지명의 차이를 구분할 수 있나요?</li>
                         <a href="https://docs.google.com/spreadsheets/d/1beVxX1Q-xRAyHOxjk-u3YLYszGZjftkONu_EtR0n9yM/edit?gid=0#gid=0"
+
                         <li>마커 표기법([P], [L])을 이해했나요?</li>
                          target="_blank"
+
                         <li>Excel에 text_tagged 열을 추가했나요?</li>
                          class="spreadsheet-link">
+
                         <li>샘플 10개 문단을 태깅해보았나요?</li>
                          새 탭에서 열기 →
+
                         <li>팀원들과 태깅 기준을 통일했나요?</li>
                        </a>
+
                         <li>VSCode를 설치하고 XML Tools 확장을 설치했나요?</li>
                    </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>
 
 
 
                <div class="info-box">
 
                    <strong>💡 스프레드시트 사용 팁</strong>
 
                    <ul>
 
                         <li>위 임베드 창에서 바로 데이터를 확인할 수 있어요</li>
 
                         <li>실제 입력은 "새 탭에서 열기" 버튼을 클릭해서 진행하세요</li>
 
                         <li>여러 사람이 동시에 작업할 수 있어요 (실시간 공동 편집)</li>
 
                         <li>변경 이력은 자동으로 저장됩니다</li>
 
 
                     </ul>
 
                     </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/poem)</li>
 
                        <li>시의 원문과 번역문을 분리했나요?</li>
 
                        <li>relation_note로 관련 텍스트를 연결했나요?</li>
 
                        <li>한자 이름이 있는 경우 name_ch에 입력했나요?</li>
 
                        <li>띄어쓰기와 문장부호가 원문과 일치하나요?</li>
 
                    </ul>
 
                </div>
 
            </section>
 
 
            <!-- 자주 발생하는 오류 -->
 
            <section id="errors">
 
                <h2>🔧 자주 발생하는 오류와 해결법</h2>
 
 
                <div class="example">
 
                    <h4>오류 1: ID 중복</h4>
 
                    <p><strong>❌ 문제:</strong> txt_10005가 두 개 있어요!</p>
 
                    <p><strong>✅ 해결:</strong> 전체 열을 선택 → 데이터 → 중복 항목 삭제</p>
 
                </div>
 
 
                <div class="example">
 
                    <h4>오류 2: person_id 혼동</h4>
 
                    <p><strong>❌ 문제:</strong> 최치원이 등장할 때마다 새 ID를 부여했어요</p>
 
                    <p><strong>✅ 해결:</strong> 같은 인물은 첫 등장시의 ID를 계속 사용 (per_101_001)</p>
 
                </div>
 
 
                <div class="example">
 
                    <h4>오류 3: 시 처리 실수</h4>
 
                    <p><strong>❌ 문제:</strong> 원문과 번역을 한 행에 넣었어요</p>
 
                    <p><strong>✅ 해결:</strong> 두 개 행으로 분리하고 relation_note로 연결</p>
 
                </div>
 
 
                <div class="example">
 
                    <h4>오류 4: text_type 오입력</h4>
 
                    <p><strong>❌ 문제:</strong> citation을 citaion으로 오타</p>
 
                    <p><strong>✅ 해결:</strong> 드롭다운 메뉴 만들기</p>
 
                    <ol>
 
                        <li>열 선택 → 데이터 → 데이터 확인</li>
 
                        <li>조건: 목록(항목) → normal, citation, poem</li>
 
                    </ol>
 
                </div>
 
            </section>
 
 
            <!-- Q&A -->
 
            <section id="qa">
 
                <h2>💬 자주 묻는 질문 (Q&A)</h2>
 
 
                <div class="info-box">
 
                    <h4>Q1. 인물이 명확하지 않은 경우는?</h4>
 
                    <p><strong>A.</strong> person_id를 비워두고, remark에 "인물 미상" 표시</p>
 
                </div>
 
 
                <div class="info-box">
 
                    <h4>Q2. 여러 인물이 한 문단에 나오면?</h4>
 
                    <p><strong>A.</strong> 주요 인물의 person_id를 사용하고, remark에 "김철수, 이영희 등장" 메모</p>
 
                </div>
 
 
                <div class="info-box">
 
                    <h4>Q3. 페이지 번호가 불분명하면?</h4>
 
                    <p><strong>A.</strong> 앞뒤 맥락으로 유추하고, remark에 "페이지 추정" 표시</p>
 
                </div>
 
 
                <div class="info-box">
 
                    <h4>Q4. 작업 중 막힐 때는?</h4>
 
                    <p><strong>A.</strong></p>
 
                    <ol>
 
                        <li>팀 슬랙 채널에 질문</li>
 
                        <li>매주 화요일 오후 2시 정기 모임</li>
 
                        <li>작업 메뉴얼 재확인</li>
 
                    </ol>
 
 
                 </div>
 
                 </div>
 
             </section>
 
             </section>

2025년 12월 19일 (금) 19:40 판

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

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

『부산을 빛낸 인물』·『부산의 자연마을』 디지털화

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

본 프로젝트는『부산을 빛낸 인물』과 『부산의 자연마을』이라는 소중한 부산의 인문자료를 디지털인문학센터에서 구축하는 플랫폼에서 활용하고자, 디지털 데이터로 변환하는 기초 작업을 진행합니다.

📚 프로젝트 규모 및 팀 구성

작업 대상 자료
  • 『부산의 자연마을』: 총 2,400페이지 (1,200페이지 × 2권)
  • 『부산을 빛낸 인물』: 총 800페이지

👥 팀 구성 (총 24명: 인문계 18명 + 이공계 6명)

역할: 인문계-데이터 편찬 및 태깅 / 이공계-기술 지원 및 자동화

A

부산의 자연마을 1

  • 인원: 9명 (인문계 7명 + 이공계 2명)
  • 담당: 『부산의 자연마을』 1,200페이지
  • 총괄: 디지털인문학센터 교육지원부장
B

부산의 자연마을 2

  • 인원: 9명 (인문계 7명 + 이공계 2명)
  • 담당: 『부산의 자연마을』 1,200페이지
  • 총괄: 디지털인문학센터 계약교수
C

부산을 빛낸 인물

  • 인원: 6명 (인문계 4명 + 이공계 2명)
  • 담당: 『부산을 빛낸 인물』 800페이지
  • 총괄: 디지털인문학센터 연구전략부장
💻 이공계 학생 (각 팀 2명씩, 총 6명) 주요 역할
  • 파이썬 스크립트 개발 (태깅 마커 → XML 자동 변환)
  • 데이터 검증 및 오류 체크 자동화
  • 팀 내 기술적 문제 실시간 지원
  • VSCode, Git 등 도구 활용 교육

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

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

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

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

1

데이터 편찬

현재 단계

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

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

2

데이터 분석

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

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

3

데이터 설계

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

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

⚠️ 작업 순서 확인!

이 섹션은 "📊 우리 팀 데이터 구조 이해하기" 섹션을 먼저 완료한 후에 진행합니다.

1단계: Excel에서 CSV 데이터 입력 완료 → 2단계: Excel에서 XML 태깅 마커 표시 → 3단계: VSCode에서 XML 검수

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

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

💡 작업 단계별 사용 필드
  • 1단계 (기본 입력): id, book_title, person_id, text_original, text_type
  • 2단계 (XML 태깅): text_tagged (새로 추가!)
  • 3단계 (자동화): 이공계 학생이 text_tagged → XML 변환

🔑 핵심 필드 설명

필드명 예시 설명 작업자가 할 일
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 번역문 / 원문 비고 필요시 메모

📖 실전 예시로 배우기

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

PDF 원문 (5페이지)

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

스프레드시트 입력 결과

id book_title chapter page person_id name_ko topic text_type
txt_10001 부산을_빛낸_인물 001 005 per_101_001 최치원 해운대의_유래 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 (최치원이 쓴 글 중에서) 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부터 시작
  • 연속성: 중간에 번호를 건너뛰지 않음
  • 고유성: 전체 데이터베이스에서 중복되면 안 됨!
⚠️ 흔한 실수
❌ 잘못된 예시
  • txt_1 (자릿수 부족)
  • txt_100001 (자릿수 초과)
  • txt_10001을 두 번 사용 (중복)
✅ 올바른 예시
  • txt_10001
  • txt_10002
  • txt_10003

2. 인물 ID (person_id) 규칙

per_101_001, per_101_002, per_102_001...
규칙
  • 형식: per_ + 책번호(3자리) + _ + 인물번호(3자리)
  • 책번호:
    • 101 = 『부산을 빛낸 인물』 권1
    • 102 = 『부산을 빛낸 인물』 권2
    • 201 = 『부산의 자연마을』 권1
  • 인물번호: 책 내에서 등장 순서대로 001부터 부여

실전 예시

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

🛠️ 단계별 작업 프로세스

STEP 1: PDF에서 텍스트 추출

방법 1: Adobe Acrobat (추천)

  1. PDF 파일 열기
  2. 편집 → 복사할 텍스트 선택
  3. 마우스 드래그로 문단 선택
  4. Ctrl+C (복사)
  5. 메모장/VS Code에 붙여넣기

방법 2: 온라인 도구

⚠️ 추출 전 체크리스트:
  • 한자가 깨지지 않았나요?
  • 줄바꿈이 이상하지 않나요?
  • 특수문자(◦, ●, ※)가 제대로 나왔나요?

STEP 2: 텍스트 전처리

해야 할 일

  1. 문단 나누기: Enter로 문단 구분
  2. 공백 정리: 불필요한 띄어쓰기 제거
  3. 페이지 번호 제거: -5-, [5] 같은 표시 삭제
  4. 각주 처리: 1), 2) 같은 각주 번호 처리

예시: 전처리 전후

Before (원본)
사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 -5- 인하여 이름을 얻게 된다.
After (전처리 완료)
사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 인하여 이름을 얻게 된다.

STEP 3: 스프레드시트 입력

입력 순서

  1. 메타데이터 먼저: book_title, publisher, pub_date, chapter
  2. 페이지 확인: page 필드에 정확한 페이지 입력
  3. 인물 정보: person_id, name_ko, name_ch 확인
  4. 본문 입력: text_original에 텍스트 붙여넣기
  5. 유형 지정: text_type 선택 (normal/citation/poem)
💡 빠른 입력 팁
  • Ctrl+D: 위 셀 내용 복사 (같은 값 반복 입력시 유용)
  • Ctrl+Enter: 셀 내 줄바꿈
  • F2: 셀 편집 모드

📝 text_type 판단 가이드

text_type 사용 시점 예시 키워드
normal 일반 서술 텍스트 "~이다", "~되었다", "~라고 한다"
citation 직접 인용문 "~하셨습니다", 따옴표(' " ") 있음
poem 시, 가사, 한시 4행시, 율문, 운문

💻 실습 스프레드시트

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

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

✅ 최종 체크리스트

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

  • id가 연속되어 있나요? (txt_10001 → txt_10002 → txt_10003)
  • person_id가 올바르게 부여되었나요?
  • 같은 인물이 여러 곳에 나오면 같은 person_id를 사용했나요?
  • text_type이 정확한가요? (normal/citation/poem)
  • 시의 원문과 번역문을 분리했나요?
  • relation_note로 관련 텍스트를 연결했나요?
  • 한자 이름이 있는 경우 name_ch에 입력했나요?
  • 띄어쓰기와 문장부호가 원문과 일치하나요?

🔧 자주 발생하는 오류와 해결법

오류 1: ID 중복

❌ 문제: txt_10005가 두 개 있어요!

✅ 해결: 전체 열을 선택 → 데이터 → 중복 항목 삭제

오류 2: person_id 혼동

❌ 문제: 최치원이 등장할 때마다 새 ID를 부여했어요

✅ 해결: 같은 인물은 첫 등장시의 ID를 계속 사용 (per_101_001)

오류 3: 시 처리 실수

❌ 문제: 원문과 번역을 한 행에 넣었어요

✅ 해결: 두 개 행으로 분리하고 relation_note로 연결

오류 4: text_type 오입력

❌ 문제: citation을 citaion으로 오타

✅ 해결: 드롭다운 메뉴 만들기

  1. 열 선택 → 데이터 → 데이터 확인
  2. 조건: 목록(항목) → normal, citation, poem

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

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

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

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

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

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

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

Q4. 작업 중 막힐 때는?

A.

  1. 팀 슬랙 채널에 질문
  2. 매주 화요일 오후 2시 정기 모임
  3. 작업 메뉴얼 재확인

🏷️ 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차 작업 범위: 인명(persName) + 지명(placeName) 2가지만 태깅

→ 빠르고 정확한 작업으로 핵심 온톨로지 구축 우선!

🔍 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차 작업에서!)

👥 역할 분담: 3단계 워크플로우

1

인문계 학생 - Excel/구글 시트에서 태깅

도구: Excel 또는 Google Sheets

방법:

  1. text_original 열의 텍스트 읽기
  2. 새 열 text_tagged 추가
  3. 인명과 지명에 마커 표시:
    • 인명: [P]최치원[/P]
    • 지명: [L]경주[/L]

예시:

[P]최치원[/P]은 857년에 [L]경주[/L]에서 태어났다.

⏱️ 예상 소요 시간: 문단당 2~3분

2

이공계 학생 - 파이썬으로 XML 자동 변환

도구: Python + pandas + re (정규식)

방법:

  1. CSV 파일의 text_tagged 열 읽기
  2. 정규식으로 마커 → XML 태그 변환
  3. XML 파일로 출력

파이썬 스크립트 예시:

import re import pandas as pd def convert_to_xml(tagged_text): # [P]...[/P] → <persName>...</persName> text = re.sub(r'\[P\](.*?)\[/P\]', r'<persName>\1</persName>', tagged_text) # [L]...[/L] → <placeName>...</placeName> text = re.sub(r'\[L\](.*?)\[/L\]', r'<placeName>\1</placeName>', text) return text # CSV 읽기 df = pd.read_csv('busan_data.csv') df['text_xml'] = df['text_tagged'].apply(convert_to_xml) # XML 파일 저장 with open('busan_output.xml', 'w', encoding='utf-8') as f: f.write('<?xml version="1.0" encoding="UTF-8"?>\n<teiCorpus>\n') for _, row in df.iterrows(): f.write(f' <p id="{row["id"]}">{row["text_xml"]}</p>\n') f.write('</teiCorpus>')

⏱️ 예상 소요 시간: 전체 데이터 1~2일

3

전체 팀 - VSCode로 XML 검수 및 수정

도구: Visual Studio Code (VSCode)

왜 VSCode인가?

  • ✅ XML 구문 하이라이팅 (오류를 쉽게 발견)
  • ✅ 태그 자동 완성
  • ✅ 검색 & 일괄 치환 기능
  • ✅ 확장 프로그램으로 XML 검증 가능

VSCode 설치 및 설정:

  1. VSCode 다운로드 및 설치
  2. 확장 프로그램 설치: "XML Tools" 검색 후 설치
  3. 생성된 XML 파일 열기
  4. Ctrl+Shift+P → "Format Document" 실행 (자동 정렬)

검수 체크리스트:

  • 태그가 올바르게 닫혔는가? (<persName>...</persName>)
  • 잘못된 마커가 남아있지 않은가? ([P] → <persName>)
  • 중첩된 태그가 있는가? (수정 필요)
  • 인명/지명 구분이 올바른가?

🔄 작업 도구별 역할 정리

단계 도구 작업 내용 담당
1단계 Excel / Google Sheets CSV 데이터 입력 (text_original) 전체 팀원
2단계 Excel / Google Sheets 태깅 마커 표시 (text_tagged) 인문계 학생
3단계 Python 마커 → XML 자동 변환 이공계 학생
4단계 VSCode XML 파일 검수 및 수정 팀 총괄 + 전체
⚠️ 태깅 시 주의사항
  • 일관성 유지: 같은 대상은 항상 같은 방식으로 태깅
  • 중첩 금지: [P][L]김해[/L][/P] (X) → 하나만 선택
  • 불확실하면 표시 안 함: 확실한 것만 태깅
  • Excel에서 작업: 익숙한 도구로 빠르게 진행
  • VSCode는 검수용: XML 변환 후 최종 확인에만 사용

📊 태깅 진도 체크리스트

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

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

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

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

기간 목표 세부 과제
1월 1~2주
(1/1~1/14)
작업 준비 및 기초 입력
  • 담당 자료 선정 (권/장 배정)
  • PDF 텍스트 추출 연습
  • 일반 텍스트(normal) 20~30개 행 입력
  • 스프레드시트 구조 숙지
1월 3~4주
(1/15~1/31)
본격 데이터 입력 + XML 태깅 시작
  • 담당 분량의 30% 완료 목표
  • 인용문(citation) 처리 숙달
  • person_id 규칙 완전 이해
  • XML 태깅 교육 및 연습
  • 샘플 10~20개 문단 태깅 ([P], [L], [D] 표시)
  • 1차 중간 점검 및 피드백
2월 1~2주
(2/1~2/14)
복잡한 텍스트 처리 + 본격 XML 태깅
  • 담당 분량의 70% 완료 목표
  • 시(poem) 원문-번역 분리 작업
  • relation_note 활용 능숙화
  • 인문계: text_tagged 열 작업 진행
  • 이공계: 파이썬 스크립트 개발 시작
  • 2차 중간 점검 및 오류 수정
2월 3~4주
(2/15~2/28)
완료 및 품질 검수 + XML 변환
  • 담당 분량 100% 완료
  • 인문계: 전체 text_tagged 완성
  • 이공계: XML 자동 변환 실행
  • 전체 데이터 통합
  • 팀원 간 교차 검토
  • 최종 오류 검사 및 제출
💡 작업 진도 관리 팁
  • 일일 목표: 하루 10~15개 문단 입력 (약 1시간)
  • 주간 목표: 주 5일 기준 50~75개 문단
  • 정기 모임: 매주 화요일 오후 2시 진도 점검 및 질의응답
  • 비상 연락: 팀 슬랙 채널 실시간 지원

🎯 마무리

기억해야 할 핵심 3가지

  1. 일관성이 생명: 같은 항목은 항상 같은 방식으로
  2. ID는 신중하게: 한번 부여한 ID는 계속 사용
  3. 협업이 중요: 막힐 때는 팀원에게 물어보기

다음 교육 예고

  • 2주차: XML 태깅과 TEI 표준
  • 3주차: Neo4j 그래프 데이터베이스 입문
  • 4주차: 데이터 시각화 실습

📎 참고 자료

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

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

문의: sy527991@pusan.ac.kr | 최종 업데이트: 2025년 12월