Number 온톨로지 오염 수정 — 정확 한국어 수사 재작성
개요
실어휘코드북v2_한글.psv(Concepticon 4,164개념 + 한글글로스, en↔ko 번역 소스)의
Number 온톨로지 163행 중 97행이 형용사/음식/식물 등 엉뚱한 한글글로스로 오염돼 있었다
(Number오염스캔.psv가 사전 스캔). haiku가 제시한 후보 수사 표기 자체도 다수 오답
("FIVE HUNDRED→다섯백", "TWENTY ONE→이십하나" 등 순우리말/오기)이라 97건 전부
정확한 한자어 수사로 재작성 후 반영했다.
무엇을 했는지
- 오염 97건 전수 재작성: 100 이상 자릿수는 한자어(백/천/만/억/조), 1~99도
THREE→삼, FIVE→오, FIFTY SIX→오십육 등)에 맞춰
한자어 기수로 통일. 만/억/조 단위(TEN MILLION~TRILLION)는 한국어 4자리 분단
체계(만=10⁴·억=10⁸·조=10¹²)로 환산, 선두 "일"은 생략(일백→백, 일만→만
기존 코드북 관례와 일치).
- 보류 처리 0건 — 97건 전부 단순 자릿수 조합으로 확정 가능(복합/모호 케이스 없음).- 자체 교차검증(역산): Perl로 영문 수사→정수 파서(units/tens/scales)와
/private/tmp/.../scratchpad/roundtrip.pl
(임시 검증 스크립트, 일회성 데이터 검증용 — 재사용 도구화 대상 아님).
- 반영 전, Number오염스캔.psv의 행번호가 실제 실어휘코드북v2_한글.psv 라인번호와
1:1 대응하는지 사전 확인(concept·gloss 양쪽 필드 일치 검증, 97/97 일치 확인 —
실어휘코드북v2.psv엔 한글글로스 열이 없고 _한글.psv에만 8번째 열로 존재,
헤더 주석 "형식: 개념|A|P|O|S|의미장|온톨로지"는 7필드지만 실제 데이터는
글로스 포함 8필드).- 백업 후 코드북 반영: Perl로 8번째 필드(글로스)만 교체, 나머지 7필드·후행
/Users/ef/crowny-butler/libs/실어휘코드북v2_한글.psv.bak-Number수정-20260710003003
- 반영: 97건 (기대건수와 일치, perl 스크립트 내 assert로 가드)
- 비대상 라인 byte-identical 검증: 전체 4,169라인 중 정확히 97라인만 변경,
나머지 4,072라인은 원본과 완전 동일(Python 라인단위 diff로 확인).
- 필드수 불변 검증: 반영 후 전체 파일 awk -F'|' 'NF!=8' 이상행 0건.
- 보류 파일(Number보류.psv)은 생성하지 않음 — 보류 0건.- 왕복 스모크:
:9977 상주서버(crownycode-brain-server.sh)의
/translate?d=en2ko 3s 폴 mtime 감시가 재로드 확인.
- 단일 토큰 개념 3건(다단어 토큰화 한계 회피 — /translate는 공백 단위 단어별
매치라 "FIVE HUNDRED" 같은 다단어 개념은 "FIVE"+"HUNDRED" 각각 매치되어
"오 백"으로 분리 출력됨, 이는 도구의 기존 알려진 한계이지 이번 수정의 결함
아님):
- TRILLION → en2ko 조 (매핑1/1)
- HUNDRED → en2ko 백 (매핑1/1)
- THOUSAND → en2ko 천 (매핑1/1)
- TEN → en2ko 십 (매핑1/1)
- ko2en 역방향: 백→hundred, 십→ten 정상. 천→fabric으로 나온 것은
ko2en 다대일(318건 중복, 파일 내 첫 등재 행 우선) 기존 알려진 한계 — "천"이
"THOUSAND"보다 앞선 행에서 "옷감/직물" 의미로도 등재돼 있어 첫 매치가 우선된
것(동음이의 충돌, 이번 수정과 무관한 기존 코드북 구조 이슈).
- /Users/ef/.claude/scripts/브레인번역.한선 CLI 경로: `echo TRILLION | 브레인t1.sh
번역 en2ko - → 조` (매핑1/1) 정상 확인.검증 요약
| 항목 | 결과 |
|---|---|
| 역산 일치율 | 97/97 (100%) |
| 반영 건수 | 97건 |
| 보류 건수 | 0건 |
| 왕복(서버 :9977 /translate) | 정상(mtime 재로드 확인, 단일토큰 4건 전부 매핑1/1) |
| 왕복(브레인번역.한선 CLI) | 정상(TRILLION→조, 매핑1/1) |
| Number행 정상률(반영 전) | 66/163 (40.5%) |
| Number행 정상률(반영 후) | 163/163 (100%) |
| 비대상 라인 무결성 | 4,072/4,072 byte-identical |
원인 추정 (오염 패턴)
오염 97건은 전부 Concepticon 대량 정렬/자동 글로스 생성 파이프라인에서
엉뚱한 개념 슬롯의 한글 뜻풀이가 Number 온톨로지 슬롯에 잘못 정렬(offset
misalignment)되어 흘러든 것으로 추정된다. 근거:
- 오염된 글로스가 형용사/동사(참을성있다·성급하다 등)·음식/식물(바나나·망고·상추 등)
실어휘코드북v2.psv(글로스 없는 원본, 7필드) 자체는 Number 163행이 정상 나열돼
_한글.psv에 8번째 열로
"부착"된 한글글로스 생성 단계(일괄 배치 번역/주석 부착 스크립트)에서 발생한
정렬 오류로 국한된다.
- haiku 후보 수사 표기 오류("다섯백" 등)는 오염과 별개 문제로, 자동 숫자→한자어
관련 파일
/Users/ef/crowny-butler/libs/실어휘코드북v2_한글.psv— 반영 대상(수정됨)/Users/ef/crowny-butler/libs/실어휘코드북v2_한글.psv.bak-Number수정-20260710003003— 백업/Users/ef/crowny-butler/libs/Number오염스캔.psv— 입력 스캔 결과(원본, 미변경)/Users/ef/.claude/scripts/crownycode-brain-server.js—:9977상주서버(/translate라우트, mtime 3s 감시 재로드)/Users/ef/.claude/scripts/브레인번역.한선,/Users/ef/.claude/scripts/브레인t1.sh— CLI 번역 경로
잔여 이슈
- ko2en 다대일 동음이의 충돌(
천→fabric우선매치 등 318건)은 이번 작업 범위
/translate엔드포인트가 공백 토큰 단위 매치라 다단어 Number 개념
FIVE HUNDRED 등)은 자연스러운 단일 결과로 안 나오고 부분 매치 2건으로
분리 출력됨 — 데이터 자체는 정확하나 도구의 다단어 n-gram 매칭 미구현
한계(기존에 문서화된 이슈, 2026-07-06-브레인번역-코드북배선.md 참조).
실어휘코드북v2.psv(글로스 없는 원본)는 이번 수정 대상 아님(글로스 열 자체가