말씀선집 GraphRAG 연구/문장 경계 보정 전략과 결과 문서 원본 보기
←
말씀선집 GraphRAG 연구/문장 경계 보정 전략과 결과
둘러보기로 이동
검색으로 이동
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
= 문장 경계 보정 전략과 결과 = 이 문서는 [[말씀선집 GraphRAG 연구]]의 PDF 추출·청크 생성 과정에서 발견된 문장 중간 시작 문제의 원인, 해결 전략, 보정 전후 테스트 결과를 논문 본문에 활용할 수 있도록 정리한다. == 1. 문제 정의 == 3권 샘플 청크 품질 테스트에서 <code>문장 중간 시작 의심 청크</code>가 205개로 확인되었다. 대표 사례는 다음과 같다. * <code>는 자녀들로...</code> * <code>과 하나님을 배경으로...</code> * <code>니다. 그러므로...</code> * <code>의 사실들을 느끼고...</code> 이 문제는 단일 원인이 아니라 세 가지 원인이 겹친 결과로 판단한다. {| class="wikitable" ! 원인 !! 설명 !! 예시 !! 영향 |- | 줄바꿈 기반 단어 분리 || PDF의 줄 끝과 다음 줄이 단어 내부에서 끊김 || <code>허락하 여</code>, <code>되 는</code>, <code>것입 니다</code> || 원문 검색은 되지만 독해 품질 저하 |- | 페이지/문단 경계 분리 || 한 문장이 페이지나 문단 블록 사이에서 끊김 || 이전 조각 <code>예수 그리스도와 성신</code> + 다음 조각 <code>과 하나님...</code> || 청크가 조사나 어미로 시작 |- | 청크 경계 분리 || 800-1,200자 제한을 맞추며 의미상 이어지는 조각을 다음 청크로 넘김 || 이전 청크 끝이 미종결 상태인데 다음 청크가 <code>니다.</code>로 시작 || RAG 답변 근거의 자연스러움 저하 |} 또한 기존 205개 수치는 매우 넓은 판정식으로 계산된 값이다. 이 판정식은 <code>이</code>, <code>고</code>, <code>요</code> 같은 첫 글자도 모두 의심으로 보았기 때문에 <code>이 싸움은</code>, <code>고통의 예수</code>, <code>요한계시록</code>처럼 정상적인 제목·문장 시작도 일부 포함한다. 따라서 논문에는 <b>기준선 판정</b>과 <b>정제 판정</b>을 구분해 기술하는 것이 적절하다. == 2. 해결 방향 == 문제를 한 번에 삭제하지 않고, 자동 보정과 경고 보존을 병행한다. # 원문 추출 후 바로 청크하지 않는다. # 페이지별 문단 조각을 먼저 정규화한다. # 이전 조각이 문장 종결 부호로 끝나지 않고 다음 조각이 조사·어미로 시작하면 같은 문장으로 연결한다. # <code>것입</code> + <code>니다</code>, <code>성신</code> + <code>과</code>처럼 단어 또는 구가 끊긴 경우 공백 없이 연결한다. # 청크 생성 시 다음 청크가 조사·어미로 시작할 가능성이 있으면 최대 1,600자까지 같은 청크 안에 유지한다. # 보정한 사실은 <code>extraction_warnings</code>에 남겨 추적 가능하게 한다. 이 방식은 원문을 임의로 많이 고치는 방식이 아니다. 기계적으로 명확한 경우만 자동 보정하고, 애매한 경우는 경고로 남긴다. == 3. 보정 알고리즘 == === 3.1 문단 경계 연결 === {| class="wikitable" ! 조건 !! 처리 |- | 이전 조각이 마침표, 물음표, 느낌표 등 문장 종결 부호로 끝나지 않음 || 다음 조각을 이어붙일 후보로 본다 |- | 다음 조각이 <code>는</code>, <code>은</code>, <code>을</code>, <code>를</code>, <code>의</code>, <code>에</code>, <code>로</code>, <code>와</code>, <code>과</code>, <code>도</code>, <code>만</code>, <code>며</code>, <code>고</code> 같은 조사로 시작 || 공백 없이 연결하거나 최소 공백으로 연결 |- | 다음 조각이 <code>니다</code>, <code>습니다</code>, <code>겁니다</code>, <code>것입니다</code>, <code>다면</code> 등 어미형으로 시작 || 공백 없이 연결 |- | 이전 조각이 <code>것입</code>, <code>됩니</code>, <code>합니</code>, <code>입니</code>, <code>허락하</code>, <code>되</code>처럼 미완성 형태로 끝남 || 공백 없이 연결 |} === 3.2 단어 내부 공백 보정 === {| class="wikitable" ! 보정 전 !! 보정 후 !! 비고 |- | <code>허락하 여</code> || <code>허락하여</code> || 자주 나타나는 줄바꿈 분리 |- | <code>되 는</code> || <code>되는</code> || 어간+어미 분리 |- | <code>하 나님</code> || <code>하나님</code> || 말씀선집에서 빈번한 고유 신앙어 |- | <code>것입 니다</code> || <code>것입니다</code>에 준해 연결 || 단어 내부 분리 |} 모든 한글 공백을 무조건 제거하지 않는다. 그렇게 하면 정상적인 한국어 띄어쓰기까지 훼손할 수 있기 때문이다. === 3.3 청크 경계 보정 === * 목표 크기: 800-1,200자 유지 * 허용 최대 크기: 1,600자 * 다음 조각이 조사·어미로 시작하거나 이전 조각이 문장 미종결이면, 1,600자 이내에서 같은 청크에 포함 * 1,600자를 넘는 경우에는 더 이상 강제로 합치지 않고 <code>starts_mid_sentence</code> 경고를 남김 1,800자 제한도 실험했지만, 긴 청크가 과도하게 늘어나 근거 범위가 흐려질 가능성이 커졌다. 따라서 1차 DB 투입 후보는 1,600자 제한 보정본으로 둔다. == 4. 보정 전후 비교 == {| class="wikitable sortable" ! 항목 !! 기준선 청크 !! 경계 보정 청크 !! 해석 |- | 대상 권수 || 001, 091, 154권 || 001, 091, 154권 || 동일 샘플 |- | 전체 청크 수 || 1,031개 || 949개 || 분리 조각이 합쳐져 청크 수 감소 |- | 평균 글자 수 || 1,043.1자 || 1,074.7자 || 목표 범위 유지 |- | 중앙값 || 1,065자 || 1,080자 || 분포 안정 |- | 최대 글자 수 || 1,470자 || 1,599자 || 1,600자 제한 준수 |- | 1,600자 초과 청크 || 0개 || 0개 || 과도한 장문 청크 없음 |- | 300자 미만 청크 || 0개 || 2개 || 일부 짧은 잔여 조각 존재 |- | 목차/점선 노이즈 || 0개 || 0개 || 노이즈 제거 유지 |- | 3쪽 초과 청크 || 0개 || 0개 || 출처 범위 안정 |- | 문장 중간 시작 의심, 기준선 판정 || 205개 || 88개 || 넓은 판정 기준으로도 57.1% 감소 |- | 문장 중간 시작 의심, 정제 판정 || 147개 || 7개 || 실제 위험군 기준 95.2% 감소 |- | 핵심 위험군 판정 || 126개 || 4개 || 조사·어미 시작 중심으로 96.8% 감소 |} == 5. 권별 보정 통계 == {| class="wikitable" ! 권수 !! 입력 문단 !! 보정 후 세그먼트 !! 연결 보정 !! 내부 공백 보정 후보 |- | 001권 || 783 || 714 || 69 || 508 |- | 091권 || 693 || 630 || 63 || 474 |- | 154권 || 647 || 602 || 45 || 463 |- | 합계 || 2,123 || 1,946 || 177 || 1,445 |} == 6. 검색 성능 유지 여부 == {| class="wikitable" ! 테스트 유형 !! 기준선 결과 !! 보정 후 결과 !! 해석 |- | 일반 개념/키워드 테스트 Top1 || 26/30 || 26/30 || 성능 유지 |- | 일반 개념/키워드 테스트 Top5 || 29/30 || 29/30 || 성능 유지 |- | 고유 문장형 테스트 Top1 || 30/30 || 30/30 || 성능 유지 |- | 고유 문장형 테스트 Top5 || 30/30 || 30/30 || 성능 유지 |} 보정 후에도 검색 성능은 떨어지지 않았다. 따라서 문장 경계 보정은 원문 독해 품질을 개선하면서 기존 검색 성능을 유지하는 방향으로 작동했다고 볼 수 있다. == 7. Top1 30/30 고유 문장형 테스트 질문 == 다음 30개 질문은 보정 후 청크 <code>20260702_191959_boundary_safe</code>를 대상으로 실행한 고유 문장형 검색 테스트에 사용되었다. 모든 질문에서 기대 권수가 1순위로 검색되었고, Top5에도 포함되었다. {| class="wikitable sortable" ! ID !! 유형 !! 질문 !! 기대 권수 !! 1순위 결과 |- | D001-01 || 제목형 || 승리하는 하나님의 정병 || 001권 || 001권 11-11쪽 <code>vol001-00005</code> |- | D001-02 || 고유문장형 || 사탄의 화살의 자국 || 001권 || 001권 9-10쪽 <code>vol001-00004</code> |- | D001-03 || 고유문장형 || 생명의 기름을 발라 || 001권 || 001권 9-10쪽 <code>vol001-00004</code> |- | D001-04 || 고유문장형 || 새로운 부활의 붕대 || 001권 || 001권 9-10쪽 <code>vol001-00004</code> |- | D001-05 || 고유문장형 || 사탄과 정면 충돌 || 001권 || 001권 11-11쪽 <code>vol001-00005</code> |- | D001-06 || 개념정의형 || 정병이라는 말은 본래부터 || 001권 || 001권 11-12쪽 <code>vol001-00006</code> |- | D001-07 || 개념관계형 || 싸움의 직접적인 책임 || 001권 || 001권 11-12쪽 <code>vol001-00006</code> |- | D001-08 || 고유문장형 || 섭리의 전체를 책임지고 || 001권 || 001권 12-13쪽 <code>vol001-00007</code> |- | D001-09 || 고유문장형 || 예수 그리스도가 왔다 가신 지 || 001권 || 001권 15-15쪽 <code>vol001-00009</code> |- | D001-10 || 개념관계형 || 6천년 섭리의 전체 || 001권 || 001권 11-12쪽 <code>vol001-00006</code> |- | D091-01 || 제목형 || 나는 누구에게 속해 있는가 || 091권 || 091권 7-7쪽 <code>vol091-00001</code> |- | D091-02 || 장소형 || 태리타운 땅 자체 || 091권 || 091권 7-7쪽 <code>vol091-00001</code> |- | D091-03 || 개념문장형 || 심정에 속하고 싶다고 || 091권 || 091권 8-9쪽 <code>vol091-00002</code> |- | D091-04 || 개념문장형 || 하나님의 심정은 영원합니다 || 091권 || 091권 8-9쪽 <code>vol091-00002</code> |- | D091-05 || 비교문장형 || 돈에 속하는 사람이 || 091권 || 091권 8-9쪽 <code>vol091-00003</code> |- | D091-06 || 고유문장형 || 공통적인 대답 || 091권 || 091권 8-9쪽 <code>vol091-00003</code> |- | D091-07 || 주제문장형 || 통일교회 자체를 두고 볼 때 || 091권 || 091권 8-9쪽 <code>vol091-00002</code> |- | D091-08 || 개념문장형 || 심정적인 주체 || 091권 || 091권 8-9쪽 <code>vol091-00003</code> |- | D091-09 || 고유문장형 || 여러분 자체를 중심삼고 많은 경계선 || 091권 || 091권 7-7쪽 <code>vol091-00001</code> |- | D091-10 || 장소형 || 벨베디아 수련소 || 091권 || 091권 289-289쪽 <code>vol091-00273</code> |- | D154-01 || 제목형 || 세계적인 승리자가 되자 || 154권 || 154권 9-10쪽 <code>vol154-00001</code> |- | D154-02 || 소제목형 || 큰 사명과 큰 책임 || 154권 || 154권 9-10쪽 <code>vol154-00001</code> |- | D154-03 || 고유문장형 || 민족을 지도할 수 있는 뜻 || 154권 || 154권 9-10쪽 <code>vol154-00001</code> |- | D154-04 || 고유문장형 || 죄악세계에서 개인을 구하고 || 154권 || 154권 9-10쪽 <code>vol154-00001</code> |- | D154-05 || 고유문장형 || 천주를 구한다는 엄청난 사명 || 154권 || 154권 9-10쪽 <code>vol154-00001</code> |- | D154-06 || 개념문장형 || 악한 세계, 악한 국가 || 154권 || 154권 10-12쪽 <code>vol154-00002</code> |- | D154-07 || 개념문장형 || 승리할 수 있는 기반 || 154권 || 154권 10-12쪽 <code>vol154-00002</code> |- | D154-08 || 개념문장형 || 하나님의 심정세계 || 154권 || 154권 10-12쪽 <code>vol154-00002</code> |- | D154-09 || 고유문장형 || 그간 비좁은 가운데서 긴 40일 || 154권 || 154권 9-10쪽 <code>vol154-00001</code> |- | D154-10 || 개념문장형 || 내적 결의 || 154권 || 154권 9-10쪽 <code>vol154-00001</code> |} 이 질문들은 단순한 일반 개념어가 아니라 권별 제목, 장소, 특징적 문장, 개념 관계 표현을 섞어 구성했다. 따라서 이 결과는 “문단 기반 청크가 원문 근거와 권·페이지 출처를 정확히 찾아낼 수 있는가”를 확인하는 평가로 해석한다. == 8. 추가 사례 질의: 예수님의 한을 풀어드리는 방법 == 현이 제시한 추가 질의 <code>예수님의 한을 풀어드리는 방법</code>은 특정 문장 하나를 찾는 고유 문장형 질의라기보다, 여러 근거 청크를 종합해야 하는 개념·목회 적용형 질의이다. 현재 3권 샘플 기준 검색 결과는 다음과 같다. {| class="wikitable sortable" ! 순위 !! 권/쪽 !! 청크 !! 핵심 내용 |- | 1 || 154권 344쪽 || <code>vol154-00319</code> || <code>하나님과 예수님의 한을 풀 수 있는 곳은 통일교회뿐</code>이라는 제목 아래, 타락 이후 종의 종 자리까지 찾아오신 하나님의 사정을 알아야 한다고 설명 |- | 2 || 154권 345-346쪽 || <code>vol154-00320</code> || 하나님의 한, 예수와 성신의 한, 선조들의 한을 풀기 위해 눈물과 회개와 책임이 필요하다고 설명 |- | 3 || 001권 311-312쪽 || <code>vol001-00279</code> || 하나님과 예수와 성신의 서러움을 풀어 드릴 책임이 오늘의 우리에게 있다고 설명 |- | 4 || 001권 312쪽 || <code>vol001-00280</code> || 예수의 마음, 예수의 서러움, 예수의 수고의 짐을 실체적으로 대신 맡아야 한다고 설명 |- | 5 || 001권 314-315쪽 || <code>vol001-00282</code> || 초림 예수의 서러움을 풀어 드릴 뿐 아니라 영광을 돌려드릴 책임이 성도에게 있다고 설명 |- | 6 || 001권 55-56쪽 || <code>vol001-00044</code> || 십자가의 원한을 오늘의 믿는 사람들이 해원해야 하며, 십자가를 넘어설 수 있는 기준을 세워야 한다고 설명 |- | 7 || 154권 275쪽 || <code>vol154-00251</code> || 예수의 한과 하나님의 복귀 천국의 한을 풀기 위해 참된 백성, 가정, 족속, 민족을 세워야 한다고 설명 |- | 8 || 154권 316쪽 || <code>vol154-00291</code> || 예수의 한을 풀어 주면 하나님의 한이 풀린다고 설명 |} 이 결과를 종합하면, 샘플 말씀선집 안에서 <code>예수님의 한을 풀어드리는 방법</code>은 다음 네 방향으로 정리된다. # 예수님의 십자가와 비통을 단순 교리로만 보지 않고, 하나님의 사정과 예수님의 서러움을 아는 것. # 예수의 마음, 서러움, 수고의 짐을 실체적으로 대신 맡는 것. # 십자가의 원한을 해원하고, 예수님께 영광을 돌려드릴 수 있는 삶의 기준을 세우는 것. # 개인 차원을 넘어 참된 백성, 가정, 족속, 민족을 세워 하나님의 복귀 천국의 한까지 풀어 드리는 것. 논문적으로 이 질의는 단일 Top1 정답보다 GraphRAG형 응답이 필요한 사례이다. 즉 <code>예수님의 한</code>이라는 개념은 <code>하나님의 한</code>, <code>십자가의 원한</code>, <code>성신의 한</code>, <code>복귀 천국</code>, <code>참된 백성/가정/민족</code>, <code>해원</code>과 연결되어야 한다. 따라서 이 질의는 향후 그래프 노드와 관계를 검증하는 테스트 질의로 사용할 수 있다. == 9. 남은 한계 == * <code>이</code>로 시작하는 표현은 조사일 수도 있고 정상적인 지시어일 수도 있다. * 설교체 문장은 문어체보다 종결 부호가 불규칙할 수 있다. * 모든 줄바꿈 공백을 제거하면 정상 띄어쓰기까지 훼손될 수 있다. * 제목, 날짜, 장소, 본문이 섞인 문제는 별도 메타데이터 분리 단계가 필요하다. {| class="wikitable" ! 처리 항목 !! 상태 |- | 명확한 단어/문장 분리 || 자동 보정 |- | 애매한 시작 위치 || <code>extraction_warnings</code>에 기록 |- | 제목/날짜/장소 혼입 || 다음 단계에서 메타데이터 분리 |- | 전체 615권 적용 || 3권 샘플 검증 후 확장 |} == 10. 논문 본문 삽입용 서술 == 본 연구는 PDF 기반 원문 추출 과정에서 발생하는 문장 경계 분리 문제를 별도의 품질 관리 항목으로 설정하였다. 초기 3권 샘플 청크에서는 기준선 판정 기준으로 205개의 문장 중간 시작 의심 청크가 발견되었다. 이 현상은 단순한 페이지 경계 문제만이 아니라, PDF 줄바꿈에 따른 단어 내부 공백, 페이지 및 문단 블록 사이의 문장 분리, 그리고 청크 길이 제한에 따른 경계 분리가 복합적으로 작용한 결과였다. 이에 본 연구는 원문 추출 후 바로 청크를 생성하지 않고, 문단 경계 보정 단계를 추가하였다. 이전 조각이 문장 종결 부호로 끝나지 않고 다음 조각이 조사 또는 어미로 시작하는 경우 두 조각을 하나의 문장 흐름으로 연결하였다. 또한 <code>것입</code>과 <code>니다</code>, <code>성신</code>과 <code>과</code>처럼 단어 또는 구가 분리된 사례는 공백 없이 연결하였다. 청크 생성 단계에서는 다음 청크가 조사나 어미로 시작할 가능성이 있을 경우 최대 1,600자까지 같은 청크에 포함하도록 하였다. 다만 모든 오류 가능성을 임의로 제거하지 않고, 보정 사실과 잔여 의심 사례는 <code>extraction_warnings</code> 필드에 기록하도록 설계하였다. 보정 결과 전체 청크 수는 1,031개에서 949개로 감소하였고, 평균 글자 수는 1,043.1자에서 1,074.7자로 소폭 증가하였다. 기준선 판정에 따른 문장 중간 시작 의심 청크는 205개에서 88개로 감소하였으며, 실제 조사·어미 시작을 중심으로 한 핵심 위험군은 126개에서 4개로 감소하였다. 이는 약 96.8%의 감소에 해당한다. 동시에 일반 개념/키워드 검색 테스트는 Top1 26/30, Top5 29/30으로 유지되었고, 고유 문장형 검색 테스트 역시 Top1 30/30, Top5 30/30을 유지하였다. 따라서 문장 경계 보정은 검색 성능을 저하시키지 않으면서 원문 청크의 독해 품질과 근거 제시 안정성을 개선한 것으로 볼 수 있다. == 11. 채택 판단 == 1차 DB 투입 후보는 <code>boundary_safe</code>, <code>hard_max_chars=1600</code> 보정본으로 한다. 채택 이유는 다음과 같다. * 실제 위험군이 126개에서 4개로 감소했다. * 검색 성능이 기준선과 동일하게 유지되었다. * 1,600자 초과 청크가 없어 근거 범위가 과도하게 넓어지지 않았다. * 보정 사실을 경고 필드로 남겨 추후 검토 가능하다. 다음 단계에서는 제목, 날짜, 장소, 소제목을 본문에서 분리해 메타데이터화한 뒤 같은 테스트를 다시 수행한다. [[분류:말씀선집 GraphRAG 연구]]
말씀선집 GraphRAG 연구/문장 경계 보정 전략과 결과
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
한국어
보기
읽기
원본 보기
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의 문서로
미디어위키 도움말
특수 문서 목록
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보