|
|
| (같은 사용자의 중간 판 하나는 보이지 않습니다) |
| 467번째 줄: |
467번째 줄: |
| | <li><a href="#intro">들어가며</a></li> | | <li><a href="#intro">들어가며</a></li> |
| | <li><a href="#roadmap">전체 로드맵</a></li> | | <li><a href="#roadmap">전체 로드맵</a></li> |
| − | <li><a href="#schedule">작업일정</a></li> | + | <li><a href="#schedule">작업일정 계획</a></li> |
| − | <li><a href="#structure">데이터 구조화</a></li>
| |
| − | <li><a href="#examples">실전 예시</a></li>
| |
| − | <li><a href="#id-rules">ID 규칙</a></li>
| |
| | <li><a href="#spreadsheet">작업 스프레드시트</a></li> | | <li><a href="#spreadsheet">작업 스프레드시트</a></li> |
| | <li><a href="#xml-tagging">XML 태깅</a></li> | | <li><a href="#xml-tagging">XML 태깅</a></li> |
| − | <li><a href="#qa">Q&A</a></li>
| |
| | </ul> | | </ul> |
| | </nav> | | </nav> |
| − |
| |
| − | <div style="text-align: center; margin: 40px 0;">
| |
| − | <div style="display: inline-block; border-radius: 8px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); overflow: hidden; border: 1px solid #eee;">
| |
| − | <img src="https://dh.aks.ac.kr/~kimseoyun/wiki/index.php/Special:Filepath/QRcode.png"
| |
| − | alt="부산 인문자료의 디지털화 교육자료"
| |
| − | style="width: 300px; max-width: 100%; height: auto; display: block;">
| |
| − | </div>
| |
| − | <h2> 부산 인문자료의 디지털화 교육자료(https://url.kr/c528ot) <h2>
| |
| − | </div>
| |
| | | | |
| | <main> | | <main> |
| 644번째 줄: |
631번째 줄: |
| | <!-- 주차별 작업 계획 --> | | <!-- 주차별 작업 계획 --> |
| | <section id="schedule"> | | <section id="schedule"> |
| − | <h2>📊 작업 일정 계획 (2026년 1월~2월)</h2> | + | <h2>📊 작업일정 계획 (2026년 1월~2월)</h2> |
| | | | |
| | <div style="text-align: center; margin: 40px 0;"> | | <div style="text-align: center; margin: 40px 0;"> |
| 654번째 줄: |
641번째 줄: |
| | <p style="margin-top: 10px; color: #666; font-size: 0.9em;">부산 인문자료 디지털화 온보딩 타임라인</p> | | <p style="margin-top: 10px; color: #666; font-size: 0.9em;">부산 인문자료 디지털화 온보딩 타임라인</p> |
| | </div> | | </div> |
| − |
| |
| − |
| |
| − | <div class="info-box">
| |
| − | <strong>📚 전체 분량</strong>
| |
| − | <ul>
| |
| − | <li><strong>『부산을 빛낸 인물』</strong>: 총 783페이지(A팀) </li>
| |
| − | <li><strong>『부산의 자연마을』</strong>: 총 2,272페이지 </li>
| |
| − | <ul>
| |
| − | <li>B팀: 1,141페이지</li>
| |
| − | <li>C팀: 1,131페이지</li>
| |
| − | </ul>
| |
| − | </li>
| |
| − | </ul>
| |
| − | <p style="margin-top: 10px;">※ 각 팀은 작업량을 할당하여 2개월간 데이터 정리 작업을 진행하고 기록합니다.</p>
| |
| − | </div>
| |
| − |
| |
| − | <div class="table-wrapper">
| |
| − | <table>
| |
| − | <thead>
| |
| − | <tr>
| |
| − | <th> 기간 </th>
| |
| − | <th>목표</th>
| |
| − | <th>세부 과제</th>
| |
| − | </tr>
| |
| − | </thead>
| |
| − | <tbody>
| |
| − | <tr>
| |
| − | <td><strong> 1월 23일 </strong> </td>
| |
| − | <td>
| |
| − | csv 작업 파일 및 txt 원본 제출
| |
| − | </td>
| |
| − | <td>
| |
| − | <div class="checklist">
| |
| − | <ul>
| |
| − | <li>킥오프: 팀장 선정 및 역할 분담 </li>
| |
| − | <li>PDF 추출 후 CSV 작업 연습</li>
| |
| − | <li>연습 작업물 검토 후 팀별 스프레드시트 작업 시작</li>
| |
| − | <li>검수자는 매주 일정 분량씩 받아서 검수 작업(작업 일지 작성), 첫 주에 XML 샘플 작업</li>
| |
| − | <li>이공계 학생은 XML 샘플 작업 받아서 파이썬 스크립트 작업 돌입</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><strong> 1월 30일 </strong> </td>
| |
| − | <td>txt 전처리 파일 및 기본 구조화 작업 파일 제출</td>
| |
| − | <td>
| |
| − | <div class="checklist">
| |
| − | <ul>
| |
| − | <li>원본에서 병기된 한자 및 부호 제거 </li>
| |
| − | <li>간단한 분석 테스트(형태소분석 등) 통해 불용어(stop word) 제거</li>
| |
| − | <li>기본 구조(book, chapter, topic, paragraph)만 <leve1>, <leve2>...으로 남기기</li>
| |
| − | <li>1차 중간 점검 및 피드백</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><strong> 2월 20일 </strong></td>
| |
| − | <td>XML 마커 샘플 작업파일 제출</td>
| |
| − | <td>
| |
| − | <div class="checklist">
| |
| − | <ul>
| |
| − | <li>각자 담당 분량의 10%를 연습 작업물로 제출</li>
| |
| − | <li><strong>인문계: id와 text_origianal 열을 다른 시트에 옮겨서 text_tagged 작업 진행</strong></li>
| |
| − | <li><strong>이공계: 파이썬 XML 자동변환 스크립트 테스트</strong></li>
| |
| − | <li>2차 중간 점검 및 오류 수정</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><strong> 2월 27일 </strong></td>
| |
| − | <td>완료 및 품질 검수 + XML 변환</td>
| |
| − | <td>
| |
| − | <div class="checklist">
| |
| − | <ul>
| |
| − | <li>담당 분량 100% 완료 작업물 제출</li>
| |
| − | <li><strong>인문계: 전체 text_tagged 완성</strong></li>
| |
| − | <li><strong>이공계: XML 자동 변환 실행</strong></li>
| |
| − | <li>전체 데이터 통합</li>
| |
| − | <li>팀원 간 교차 최종 오류 검토</li>
| |
| − | <li>최종 결과물 및 결과보고서 제출</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </td>
| |
| − | </tr>
| |
| − | </tbody>
| |
| − | </table>
| |
| − | </div>
| |
| − | </section>
| |
| − |
| |
| − |
| |
| − | <div class="tip-box">
| |
| − | <strong>💡 작업 결과물 제출</strong>
| |
| − |
| |
| − | <li><strong>중간 산출물</strong>: 총괄 교수님께 팀별로 경과 보고 </li>
| |
| − | <li><strong>최종 산출물</strong>: 권별.csv, 권별.txt, 권별.xml + 팀별 결과보고서(팀장을 정해서 한 명이 9개 파일 수합 후 이메일로 제출)</li>
| |
| − | <li><strong>권별 파일명</strong>(부산지역사도서관 PDF파일명을 따름): lightuppeople01(original).txt ... , B_jayeonmaeul01(clean).txt ... </li>
| |
| − | </div>
| |
| − |
| |
| − |
| |
| − | <!-- 데이터 구조 -->
| |
| − | <section id="structure">
| |
| − | <h2>📊 우리 팀 데이터 구조 이해하기</h2>
| |
| − |
| |
| − | <p>우리가 사용하는 구글 시트는 <strong>18개의 필드(열)</strong>로 구성되어 있어요. 각 필드가 왜 필요한지 함께 살펴볼까요?</p>
| |
| − |
| |
| − | <h3>🔑 핵심 필드 설명</h3>
| |
| − |
| |
| − | <div class="table-wrapper">
| |
| − | <table>
| |
| − | <thead>
| |
| − | <tr>
| |
| − | <th>필드명</th>
| |
| − | <th>예시</th>
| |
| − | <th>설명</th>
| |
| − | <th>작업자가 할 일</th>
| |
| − | </tr>
| |
| − | </thead>
| |
| − | <tbody>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">id</code></td>
| |
| − | <td>txt_10001</td>
| |
| − | <td>단락별 정보를 하나로 묶는 고유 번호</td>
| |
| − | <td><span class="badge badge-danger">필수</span> 반드시 부여 (중복 금지!)</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">book_id</code></td>
| |
| − | <td>lightuppeople01</td>
| |
| − | <td>책 식별자(부산지역사도서관 PDF 파일명을 따름)</td>
| |
| − | <td>책마다 고정값 사용</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">book_title</code></td>
| |
| − | <td>부산을_빛낸_인물</td>
| |
| − | <td>책 제목</td>
| |
| − | <td>언더바(_)로 연결</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">sub_title</code></td>
| |
| − | <td>20세기_이전_인물편</td>
| |
| − | <td>부제목</td>
| |
| − | <td>있는 경우만 입력</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">publisher</code></td>
| |
| − | <td>부산광역시_문화유산과_시사편찬실</td>
| |
| − | <td>발행처</td>
| |
| − | <td>책 정보 그대로</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">pub_date</code></td>
| |
| − | <td>2004.06</td>
| |
| − | <td>출판일</td>
| |
| − | <td>YYYY.MM 형식</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">chapter</code></td>
| |
| − | <td>001</td>
| |
| − | <td>장 번호</td>
| |
| − | <td>3자리 숫자 (001, 002...)</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">page</code></td>
| |
| − | <td>005</td>
| |
| − | <td>페이지</td>
| |
| − | <td>3자리 숫자 (005, 006...)</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">person_id</code></td>
| |
| − | <td>per_10001</td>
| |
| − | <td>인물 고유 번호</td>
| |
| − | <td><span class="badge badge-danger">필수</span> 새 인물마다 부여</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">name_ko</code></td>
| |
| − | <td>최치원</td>
| |
| − | <td>인물 한글 이름</td>
| |
| − | <td>정확하게 입력</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">name_ch</code></td>
| |
| − | <td>崔致遠</td>
| |
| − | <td>인물 한자 이름</td>
| |
| − | <td>있는 경우만 입력</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">topic</code></td>
| |
| − | <td>해운대의_유래</td>
| |
| − | <td>소주제</td>
| |
| − | <td>섹션 제목 그대로</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">author</code></td>
| |
| − | <td>정경주_경성대교수</td>
| |
| − | <td>글쓴이</td>
| |
| − | <td>이름_소속 형식</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">text_original</code></td>
| |
| − | <td>(본문 내용)</td>
| |
| − | <td>원문 텍스트</td>
| |
| − | <td><span class="badge badge-danger">필수</span> 가장 중요!</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">text_type</code></td>
| |
| − | <td>normal/citation</td>
| |
| − | <td>텍스트 유형 구분 </td>
| |
| − | <td>추후 인용문만 별도로 추출 가능</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">relation_note</code></td>
| |
| − | <td>txt_10008</td>
| |
| − | <td>관련 텍스트 ID</td>
| |
| − | <td>단락이 연결되는 경우에만 기입</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">img_caption</code></td>
| |
| − | <td>최치원_영정</td>
| |
| − | <td>이미지 설명</td>
| |
| − | <td>이미지 있을 때만</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><code class="code-inline">remark</code></td>
| |
| − | <td>번역문 / 원문</td>
| |
| − | <td>자유롭게 여러 가지 정보를 기술, 언더바 불필요</td>
| |
| − | <td><span class="badge badge-danger">필수</span> 2월말에 결과보고서로 제출</td>
| |
| − | </tr>
| |
| − | </tbody>
| |
| − | </table>
| |
| − | </div>
| |
| − | </section>
| |
| − |
| |
| − | <!-- 실전 예시 -->
| |
| − | <section id="examples">
| |
| − | <h2>📖 실전 예시로 배우기</h2>
| |
| − |
| |
| − | <div class="example">
| |
| − | <h3>사례 1: 일반 텍스트 처리하기</h3>
| |
| − |
| |
| − | <h4>PDF 원문 (5페이지)</h4>
| |
| − | <div class="code-block">
| |
| − | 해운대의 유래
| |
| − |
| |
| − | 사람은 땅의 정기를 받아 태어나고, 땅은 사람으로 인하여 이름을 얻게 된다.
| |
| − | 한반도 동남쪽 끝 바닷가의 한 모퉁이에 있는 해운대는 천년 전 신라의 학사
| |
| − | 최치원이 머물며 자취를 남긴 곳이다.
| |
| − | </div>
| |
| − |
| |
| − | <h4>스프레드시트 입력 결과</h4>
| |
| − | <div class="table-wrapper">
| |
| − | <table>
| |
| − | <thead>
| |
| − | <tr>
| |
| − | <th>id</th>
| |
| − | <th>book_title</th>
| |
| − | <th>chapter</th>
| |
| − | <th>page</th>
| |
| − | <th>person_id</th>
| |
| − | <th>name_ko</th>
| |
| − | <th>topic</th>
| |
| − | <th>text_type</th>
| |
| − | </tr>
| |
| − | </thead>
| |
| − | <tbody>
| |
| − | <tr>
| |
| − | <td>txt_10001</td>
| |
| − | <td>부산을_빛낸_인물</td>
| |
| − | <td>001</td>
| |
| − | <td>005</td>
| |
| − | <td>per_10001</td>
| |
| − | <td>최치원</td>
| |
| − | <td>해운대의_유래</td>
| |
| − | <td>normal</td>
| |
| − | </tr>
| |
| − | </tbody>
| |
| − | </table>
| |
| − | </div>
| |
| − |
| |
| − | <div class="tip-box">
| |
| − | <strong>💡 체크포인트</strong>
| |
| − | <ul>
| |
| − | <li>✅ <strong>id는 연속된 번호</strong>: txt_10001, txt_10002, txt_10003...</li>
| |
| − | <li>✅ <strong>person_id는 새 인물 등장시에만 변경</strong></li>
| |
| − | <li>✅ <strong>한 문단 = 한 행</strong>: 문단 단위로 나누어 입력</li>
| |
| − | <li>✅ <strong>text_type은 'normal'</strong>: 일반 서술 텍스트</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </div>
| |
| − |
| |
| − | <div class="example">
| |
| − | <h3>사례 2: 인용문(citation) 처리하기</h3>
| |
| − |
| |
| − | <h4>PDF 원문 (6페이지)</h4>
| |
| − | <div class="code-block">
| |
| − | 제 나이 열 두살 때 집을 떠나 서쪽으로 갔습니다. 배를 탈 적에 돌아가신
| |
| − | 아버지께서 타이르시기를, '십 년 안에 진사(進士)에 급제하지 못하면 내 아들이라
| |
| − | 하지 말라. 나도 아들을 두었다 아니하리라. 가라! 부지런히 하여 네 힘을
| |
| − | 게을리 말라'고 하셨습니다.
| |
| − | </div>
| |
| − |
| |
| − | <h4>스프레드시트 입력 결과</h4>
| |
| − | <div class="table-wrapper">
| |
| − | <table>
| |
| − | <thead>
| |
| − | <tr>
| |
| − | <th>id</th>
| |
| − | <th>text_original</th>
| |
| − | <th>text_type</th>
| |
| − | <th>relation_note</th>
| |
| − | </tr>
| |
| − | </thead>
| |
| − | <tbody>
| |
| − | <tr>
| |
| − | <td>txt_10006</td>
| |
| − | <td>최치원은 857년(헌안왕 원년)에 신라의 서울 경주에서 태어났다</td>
| |
| − | <td>normal</td>
| |
| − | <td></td>
| |
| − | </tr>
| |
| − | <tr style="background-color: #fff8e6;">
| |
| − | <td>txt_10007</td>
| |
| − | <td>제 나이 열 두살 때 집을 떠나 서쪽으로 갔습니다.(도서 원본에서는 볼드체로 표시) </td>
| |
| − | <td><strong>citation</strong></td>
| |
| − | <td>txt_10006</td>
| |
| − | </tr>
| |
| − | </tbody>
| |
| − | </table>
| |
| − | </div>
| |
| − |
| |
| − | <div class="tip-box">
| |
| − | <strong>💡 체크포인트</strong>
| |
| − | <ul>
| |
| − | <li>✅ <strong>text_type을 'citation'으로</strong>: 직접 인용문임을 표시</li>
| |
| − | <li>✅ <strong>relation_note 활용</strong>: 앞 문장(txt_10006)과 연결됨을 표시</li>
| |
| − | <li>✅ <strong>따옴표 포함</strong>: 원문의 인용 부호 그대로 유지</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </div>
| |
| − |
| |
| − | <div class="example">
| |
| − | <h3>사례 3: 운문(verse) 처리하기 - 가장 까다로운 부분!</h3>
| |
| − |
| |
| − | <h4>PDF 원문 (11페이지) - 정서의 시</h4>
| |
| − | <div class="code-block">
| |
| − | 狂奔疊石吼重巒
| |
| − | 人語難分咫尺間
| |
| − | 常恐是非聲到耳
| |
| − | 故敎流水盡籠山
| |
| − |
| |
| − | (번역)
| |
| − | 미친 물 바위 치며 겹겹 산을 뒤흔드니
| |
| − | 지척 사이에도 사람 소리 모르겠네.
| |
| − | </div>
| |
| − |
| |
| − | <h4>스프레드시트 입력 결과 - 원문과 번역문을 <strong>분리</strong>!</h4>
| |
| − | <div class="table-wrapper">
| |
| − | <table>
| |
| − | <thead>
| |
| − | <tr>
| |
| − | <th>id</th>
| |
| − | <th>person_id</th>
| |
| − | <th>name_ko</th>
| |
| − | <th>text_original</th>
| |
| − | <th>text_type</th>
| |
| − | <th>relation_note</th>
| |
| − | <th>remark</th>
| |
| − | </tr>
| |
| − | </thead>
| |
| − | <tbody>
| |
| − | <tr style="background-color: #fff5f5;">
| |
| − | <td>txt_10013</td>
| |
| − | <td>per_101_002</td>
| |
| − | <td>정서</td>
| |
| − | <td>狂奔疊石吼重巒 / 人語難分咫尺間 / 常恐是非聲到耳 / 故敎流水盡籠山</td>
| |
| − | <td><strong>poem</strong></td>
| |
| − | <td>txt_10014</td>
| |
| − | <td>원문</td>
| |
| − | </tr>
| |
| − | <tr style="background-color: #f0f9f4;">
| |
| − | <td>txt_10014</td>
| |
| − | <td>per_101_002</td>
| |
| − | <td>정서</td>
| |
| − | <td>미친 물 바위 치며 겹겹 산을 뒤흔드니 / 지척 사이에도 사람 소리 모르겠네. / 세상의 시비 소리 들릴까 두려워서 / 짐짓 흐르는 물로 산을 온통 가두었네.</td>
| |
| − | <td><strong>poem</strong></td>
| |
| − | <td>txt_10013</td>
| |
| − | <td>번역문</td>
| |
| − | </tr>
| |
| − | </tbody>
| |
| − | </table>
| |
| − | </div>
| |
| − |
| |
| − | <div class="tip-box">
| |
| − | <strong>💡 체크포인트</strong>
| |
| − | <ul>
| |
| − | <li>✅ <strong>한문 원문과 번역문 = 2개 열</strong>: 별도로 입력 후 relation_note로 연결! </li>
| |
| − | <li>✅ <strong>remark에 명시</strong>: '원문' 또는 '번역문'</li>
| |
| − | <li>✅ <strong>relation_note로 연결</strong>: XML에서 [corresp id="txt_10013"]으로 대응시킴으로써 특정 원문에 대한 번역문임을 명시</li>
| |
| − | <li>✅ <strong>연(구절) 구분은 슬래시(/)</strong>: 狂奔疊石吼重巒 / 人語難分咫尺間 --> XML에서 [lg] [l]狂奔疊石吼重巒[/l] [/lg](ling group) 으로 변환</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </div>
| |
| − |
| |
| − | <div class="example">
| |
| − | <h3>사례 4: 가사(歌辭) 처리하기</h3>
| |
| − |
| |
| − | <h4>PDF 원문 (19페이지) - <삼진작 三眞勺></h4>
| |
| − | <div class="code-block">
| |
| − | 내 님믈 그리와 우니다니 / 山졉동새 난 이슷요이다 / 아니시며 거츠르신 아으 / 잔월효성(殘月曉星)이 아시리이다 /
| |
| − | </div>
| |
| − |
| |
| − | <div class="tip-box">
| |
| − | <strong>💡 체크포인트</strong>
| |
| − | <ul>
| |
| − | <li>✅ <strong>운문으로 처리</strong>: 현대시, 한시, 가사 모두 운문(verse)으로 분류</li>
| |
| − | <li>✅ <strong>remark에 작품명</strong>: 인용문의 출처나 제목을 알 수 있다면 remark에 기입</li>
| |
| − | <li>✅ <strong>특수문자 처리</strong>: 처럼 깨진 부분은 원문 그대로 표시</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </div>
| |
| − | </section>
| |
| − |
| |
| − | <!-- ID 규칙 -->
| |
| − | <section id="id-rules">
| |
| − | <h2>🔢 ID 부여 규칙 마스터하기</h2>
| |
| − |
| |
| − | <h3>1. 텍스트 ID (id) 규칙</h3>
| |
| − |
| |
| − | <div class="code-block">
| |
| − | txt_10001, txt_10002, txt_10003...
| |
| − | </div>
| |
| − |
| |
| − | <div class="info-box">
| |
| − | <strong>규칙</strong>
| |
| − | <ul>
| |
| − | <li><strong>형식:</strong> <code class="code-inline">txt_</code> + 5자리 숫자</li>
| |
| − | <li><strong>시작:</strong> 10001부터 시작</li>
| |
| − | <li><strong>연속성:</strong> 중간에 번호를 건너뛰지 않음</li>
| |
| − | <li><strong>고유성:</strong> 전체 데이터베이스에서 중복되면 안 됨!</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − |
| |
| − |
| |
| − | <h3>2. 인물 ID (person_id) 규칙</h3>
| |
| − |
| |
| − | <div class="code-block">
| |
| − | per_10001, per_10002, per_20001...
| |
| − | </div>
| |
| − |
| |
| − | <div class="info-box">
| |
| − | <strong>규칙</strong>
| |
| − | <ul>
| |
| − | <li><strong>형식:</strong> <code class="code-inline">per_</code> + 5자리 숫자</li>
| |
| − | <li><strong>책번호:</strong>
| |
| − | <ul>
| |
| − | <li>10001 = 『부산을 빛낸 인물』 권1</li>
| |
| − | <li>20001 = 『부산을 빛낸 인물』 권2</li>
| |
| − | <li>40001 = 『부산의 자연마을』 권1</li>
| |
| − | </ul>
| |
| − | </li>
| |
| − | <li><strong>인물번호:</strong> 첫자리수는 권마다 달라지며 등장 순서대로 부여</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − |
| |
| − | <h4>실전 예시</h4>
| |
| − | <div class="table-wrapper">
| |
| − | <table>
| |
| − | <thead>
| |
| − | <tr>
| |
| − | <th>상황</th>
| |
| − | <th>person_id</th>
| |
| − | <th>설명</th>
| |
| − | </tr>
| |
| − | </thead>
| |
| − | <tbody>
| |
| − | <tr>
| |
| − | <td>최치원이 5페이지에서 처음 등장</td>
| |
| − | <td><code class="code-inline">per_10001</code></td>
| |
| − | <td>첫 번째 인물</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td>정서가 11페이지에서 처음 등장</td>
| |
| − | <td><code class="code-inline">per_10002</code></td>
| |
| − | <td>두 번째 인물</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td>최치원이 다시 15페이지에 등장</td>
| |
| − | <td><code class="code-inline">per_10001</code></td>
| |
| − | <td>동일 ID 재사용!</td>
| |
| − | </tr>
| |
| − | </tbody>
| |
| − | </table>
| |
| − | </div>
| |
| − |
| |
| − | <div class="tip-box">
| |
| − | <strong>💡 팁</strong>
| |
| − | <ul>
| |
| − | <li><strong>인물 등장 순서대로 번호 부여</strong>: 페이지 순서가 아니라 등장 순서</li>
| |
| − | <li><strong>같은 인물은 같은 ID</strong>: 다른 책에 등장해도 같은 인물이라면 ID는 하나</li>
| |
| − | <li><strong>엑셀 필터 활용</strong>: 이미 부여된 인물 ID 확인하기</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </section>
| |
| | | | |
| | | | |
| 1,188번째 줄: |
672번째 줄: |
| | </ul> | | </ul> |
| | </div> | | </div> |
| | + | |
| | | | |
| − | <h3>✅ 최종 체크리스트</h3>
| + | |
| − |
| |
| − | <p>작업 완료 전에 꼭 확인하세요!</p>
| |
| − | | |
| − | <div class="checklist">
| |
| − | <ul>
| |
| − | <li>id가 연속되어 있나요? (txt_10001 → txt_10002 → txt_10003)</li>
| |
| − | <li>person_id가 올바르게 부여되었나요?</li>
| |
| − | <li>같은 인물이 여러 곳에 나오면 같은 person_id를 사용했나요?</li>
| |
| − | <li>text_type이 정확한가요? (normal/citation)</li>
| |
| − | <li>시의 원문과 번역문을 분리했나요?</li>
| |
| − | <li>relation_note로 관련 텍스트를 연결했나요?</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </section>
| |
| − | | |
| − | | |
| − | | |
| − | <!-- txt 전처리 가이드 -->
| |
| − | <section id="xml-tagging">
| |
| − | <h2>🏷️ TXT 전처리: 원본 텍스트를 분석이 가능한 텍스트로 정제하기</h2>
| |
| − | <p>CSV로 정리한 텍스트 중에서 불필요한 중복언어나 기호들을 제고하는 일입니다. 텍스트의 기본 구조를 유지하되, 페이지나 이미지 같은 부가적인 정보는 제거하고 이 정보를 그대로 불러올 수 있는 txt_id와 text_original 컬럼으로만 구성합니다.</p>
| |
| − | | |
| − | <h3>🎯 왜 txt_id가 필요한가요?</h3>
| |
| − | | |
| − | <div class="comparison">
| |
| − | <div class="comparison-item before">
| |
| − | <strong>페이지나 챕터, 한자로 병기한 정보등을 모두 포함하는 경우</strong>
| |
| − | <p style="margin-top: 10px; font-family: monospace; font-size: 0.9em;">
| |
| − | 제1장 개관<br>
| |
| − | 1. 부산의 자연마을<br>
| |
| − | 1) 현대 도시에서의 자연마을<br>
| |
| − | 부근에 있는 영가대(永嘉臺, 현재 범일동 성남초등학교 옆 철로변 일대) 아래의 선창에서는 일본으로 가는 사절의 배가 출항하였다.
| |
| − | </p>
| |
| − | <p style="margin-top: 10px; font-size: 0.9em; color: #666;">→ 분석을 돌렸을 때 불필요한 정보들이 포함되어 정확한 의미를 찾아내기 어려움</p>
| |
| − | </div>
| |
| − | <div class="comparison-item after">
| |
| − | <strong>txt_id가 있을 경우</strong>
| |
| − | <p style="margin-top: 10px;">나중에 조각조각으로 텍스트가 쪼개져도 각 단락은 출처 정보를 갖고 있어야 함</p>
| |
| − | <p style="margin-top: 10px; font-family: monospace; font-size: 0.9em;">
| |
| − | <p xml:id="txt_10001">부근에 있는 영가대 아래의 선창에서는 일본으로 가는 사절의 배가 출항하였다.</p>
| |
| − | </p>
| |
| − | <p style="margin-top: 10px; font-size: 0.9em; color: #666;">→ 나중에 XML 파일과 CSV 파일이 같은 폴더 안에 있으면 컴퓨터는 txt_id를 찾아서 참고할 수 있음</p>
| |
| − |
| |
| − | </div>
| |
| − | </div>
| |
| − | | |
| − | | |
| | | | |
| | <!-- XML 태깅 가이드 --> | | <!-- XML 태깅 가이드 --> |
| | <section id="xml-tagging"> | | <section id="xml-tagging"> |
| − | <h2>🏷️ XML 태깅: 데이터에 의미 부여하기</h2>
| + | |
| − | <p>CSV로 정리한 텍스트에 <strong>의미론적 태그(Semantic Tags)</strong>를 붙여서 컴퓨터가 "누가", "어디서", "언제" 같은 정보를 이해할 수 있게 만드는 작업입니다.</p>
| |
| | | | |
| − | <h3>🎯 왜 XML 태깅이 필요한가요?</h3> | + | <h2>🎯 단계별 XML 태깅 전략 (난이도별 접근)</h2> |
| − | | |
| − | <div class="comparison">
| |
| − | <div class="comparison-item before">
| |
| − | <strong>태깅 전 (일반 텍스트)</strong>
| |
| − | <p style="margin-top: 10px;">최치원은 857년에 경주에서 태어났다.</p>
| |
| − | <p style="margin-top: 10px; font-size: 0.9em; color: #666;">→ 컴퓨터는 그냥 글자로만 인식</p>
| |
| − | </div>
| |
| − | <div class="comparison-item after">
| |
| − | <strong>태깅 후 (XML)</strong>
| |
| − | <p style="margin-top: 10px; font-family: monospace; font-size: 0.9em;">
| |
| − | <Agent xml:id="per_10001">최치원</Agent>은<br>
| |
| − | <Date when="857">857년</Date>에<br>
| |
| − | <Place xml:id="pla_10001">경주</Place>에서 태어났다.
| |
| − | </p>
| |
| − | <p style="margin-top: 10px; font-size: 0.9em; color: #666;">→ 인물, 시간, 장소를 구분해서 인식!</p>
| |
| − | </div>
| |
| − | </div>
| |
| − | | |
| − | <h3>📚 온톨로지 설계 참고: 광주인문도시 사례</h3>
| |
| − | | |
| − | <div class="info-box">
| |
| − | <p><strong>우리 프로젝트는 광주인문도시스토리플랫폼의 온톨로지 설계를 참고합니다:</strong></p>
| |
| − | <p>🔗 <a href="https://dh.aks.ac.kr/~gwangju/wiki/index.php/Ontology:EKC_%EA%B4%91%EC%A3%BC:Class" target="_blank">
| |
| − | 광주 온톨로지 Class 설계 보기
| |
| − | </a></p>
| |
| − | <p style="margin-top: 10px; font-size: 0.95em;">광주 사례에서는 Actor --> Agent(인물), Event(사건), Place(장소), Architecture(건축물) 등의 클래스를 정의했습니다. 우리는 이를 선행모델로 참고해서 같은 방식으로 부산 데이터를 설계하고, 웹상에 개방하여(Open) 웹 표준(URI)을 통해 광주 데이터와 연결(Linked)할 것입니다. 만약 우리가 우리 마음대로 이름을 붙여서 데이터를 만들면, 광주 데이터와 부산 데이터는 서로 다른 언어를 쓰는 셈이라 섞일 수가 없습니다. 하지만 우리가 같은 규칙(Class)을 쓰면, 컴퓨터는 부산의 플랫폼에 업로드 될 '최치원'과 광주의 플랫폼에서 언급하는 '최치원'이 같은 '인물(Agent)'이라는 것을 이해하고 서로 연결할 수 있게 됩니다. 이렇게 누구나 쓸 수 있도록 공개된 데이터(Open Data)들이 서로 표준화된 방식으로 연결(Linked)되어, 마치 거미줄처럼 정보를 확장해 나가는 것을 <strong>'LOD(Linked Open Data)'</strong>라고 합니다. 우리는 부산의 데이터를 만들어 거대한 지식의 웹(Web)에 연결하는 작업을 하는 것입니다.<br/>
| |
| − | 앞으로 우리가 하게 될 XML 태깅은 컴퓨터에게 '이 단어는 그냥 글자가 아니라, 사람 이름이야'라고 알려주는 인식표를 달아주는 작업입니다. 우리가 <Agent>최치원</Agent>이라고 감싸주는 순간, 컴퓨터는 비로소 '아! 이건 그냥 글자가 아니라 행위자(Agent), 즉 사람 정보구나!'라고 인식하게 됩니다. 이 작업은 바로 DB에 적재되어 웹으로 서비스될 수 있고, 텍스트 분석을 거쳐 온톨로지 설계를 할 때 필요한 기반 데이터가 됩니다.
| |
| − | | |
| − | </p>
| |
| − | </div>
| |
| − | | |
| − | <h3>🎯 단계별 태깅 전략 (난이도별 접근)</h3>
| |
| | | | |
| | <div class="roadmap"> | | <div class="roadmap"> |
| 1,355번째 줄: |
760번째 줄: |
| | </div> | | </div> |
| | </div> | | </div> |
| | + | </section> |
| | | | |
| − |
| |
| − |
| |
| − | <h3>🔍 1차 작업: 인명 + 지명 태깅 실전</h3>
| |
| − |
| |
| − | <div class="example">
| |
| − | <h4>예시 1: 『부산을 빛낸 인물』</h4>
| |
| − |
| |
| − | <strong>원문:</strong>
| |
| − | <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 class="tip-box" style="margin-top: 15px;">
| |
| − | <strong>💡 판단 기준</strong>
| |
| − | <ul>
| |
| − | <li><strong>인명:</strong> 사람 이름 (최치원, 헌안왕, 경문왕)</li>
| |
| − | <li><strong>지명:</strong> 장소/지역 (신라, 경주, 당나라)</li>
| |
| − | <li><strong>제외:</strong> 857년, 868년 같은 시간 표현 (2차 작업에서!)</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </div>
| |
| | | | |
| − | <div class="example">
| + | |
| − | <h4>예시 2: 『부산의 자연마을』</h4>
| |
| − |
| |
| − | <strong>원문:</strong>
| |
| − | <div class="code-block">
| |
| − | 영도구 동삼동은 조선시대에는 절영도의 일부였다.
| |
| − | 1876년 개항 이후 일본인들이 거주하기 시작했으며,
| |
| − | 1942년 부산부에 편입되었다.
| |
| − | </div>
| |
| − | | |
| − | <strong>1차 태깅 (인명 + 지명만):</strong>
| |
| − | <div class="code-block">
| |
| − | [L]영도구[/L] [L]동삼동[/L]은 조선시대에는 [L]절영도[/L]의 일부였다.
| |
| − | 1876년 개항 이후 일본인들이 거주하기 시작했으며,
| |
| − | 1942년 [L]부산부[/L]에 편입되었다.
| |
| − | </div>
| |
| − | | |
| − | <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>
| |
| − | | |
| − | | |
| − | | |
| − | <h3>🔄 작업 도구별 역할 정리</h3>
| |
| − | | |
| − | <div class="table-wrapper">
| |
| − | <table>
| |
| − | <thead>
| |
| − | <tr>
| |
| − | <th>단계</th>
| |
| − | <th>도구</th>
| |
| − | <th>작업 내용</th>
| |
| − | <th>담당</th>
| |
| − | </tr>
| |
| − | </thead>
| |
| − | <tbody>
| |
| − | <tr>
| |
| − | <td><strong>1단계 csv</strong></td>
| |
| − | <td>Excel / Google Sheets</td>
| |
| − | <td>CSV 데이터 입력 (text_original)</td>
| |
| − | <td>전체 팀원</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><strong>2단계 txt</strong></td>
| |
| − | <td>Notepad++ / VSCode</td>
| |
| − | <td>태깅 마커 표시 (text_tagged)</td>
| |
| − | <td>인문계 학생</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><strong>3단계 xml</strong></td>
| |
| − | <td>Python</td>
| |
| − | <td>마커 → XML 자동 변환</td>
| |
| − | <td>이공계 학생</td>
| |
| − | </tr>
| |
| − | <tr>
| |
| − | <td><strong>4단계 valid check</strong></td>
| |
| − | <td>XML Validation 도구</td>
| |
| − | <td>XML 파일 검수 및 수정</td>
| |
| − | <td>팀 총괄 + 전체</td>
| |
| − | </tr>
| |
| − | </tbody>
| |
| − | </table>
| |
| − | </div>
| |
| − | | |
| − | <div class="warning-box">
| |
| − | <strong>⚠️ 태깅 시 주의사항</strong>
| |
| − | <ul>
| |
| − | <li><strong>일관성 유지:</strong> 같은 대상은 항상 같은 방식으로 태깅</li>
| |
| − | <li><strong>중첩 금지:</strong> [P][L]김해[/L][/P] (X) → 하나만 선택</li>
| |
| − | <li><strong>불확실하면 표시 안 함:</strong> 확실한 것만 태깅</li>
| |
| − | <li><strong>Excel에서 작업:</strong> 익숙한 도구로 빠르게 진행</li>
| |
| − | <li><strong>VSCode는 검수용:</strong> XML 변환 후 최종 확인에만 사용</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | | |
| − | <h3>📊 태깅 진도 체크리스트</h3>
| |
| − | | |
| − | <div class="checklist">
| |
| − | <ul>
| |
| − | <li>인명과 지명의 차이를 구분할 수 있나요?</li>
| |
| − | <li>마커 표기법([P], [L])을 이해했나요?</li>
| |
| − | <li>Excel에 text_tagged 열을 추가했나요?</li>
| |
| − | <li>샘플 10개 문단을 태깅해보았나요?</li>
| |
| − | <li>팀원들과 태깅 기준을 통일했나요?</li>
| |
| − | <li>VSCode를 설치하고 XML Tools 확장을 설치했나요?</li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </section>
| |
| − | | |
| − | | |
| − | <!-- 마무리 -->
| |
| − | <!-- 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>매주 팀별로 정기 모임(zoom)</li>
| |
| − | <li>작업 메뉴얼 재확인</li>
| |
| − | </ol>
| |
| − | </div>
| |
| − | </section>
| |
| − | | |
| − | <section id="conclusion">
| |
| − | <h2>🎯 마무리</h2>
| |
| − | | |
| − | <div class="success-box">
| |
| − | <h3>기억해야 할 핵심 3가지</h3>
| |
| − | <ol>
| |
| − | <li><strong>일관성이 생명:</strong> 같은 항목은 항상 같은 방식으로</li>
| |
| − | <li><strong>ID는 신중하게:</strong> 한번 부여한 ID는 앞으로도 계속 사용될 예정</li>
| |
| − | <li><strong>협업이 중요:</strong> 막힐 때는 팀원들과 의논하기(논의가 필요하다 생각한 부분을 결과보고서에 기입!!)</li>
| |
| − | </ol>
| |
| − | </div>
| |
| − | | |
| − |
| |
| − | | |
| − | <div class="info-box">
| |
| − | <h3>📎 참고 자료</h3>
| |
| − | <ul>
| |
| − | <li><strong>작업 스프레드시트:</strong> <a href="https://docs.google.com/spreadsheets/d/1beVxX1Q-xRAyHOxjk-u3YLYszGZjftkONu_EtR0n9yM/edit?gid=0#gid=0" target="_blank">구글 시트 바로가기</a></li>
| |
| − | <li><strong>XML 가이드:</strong> <a href="http://wikidocs.net/234314">XML 설계 입문</a></li>
| |
| − | <li><strong>광주인문도시스토리플랫폼:</strong> <a href="https://dh.aks.ac.kr/~gwangju/wiki/index.php/Ontology:EKC_광주:Class" target="_blank">사례 참고</a></li>
| |
| − | </ul>
| |
| − | </div>
| |
| − | </section>
| |
| | </main> | | </main> |
| | | | |