#4 (사용자 요청): spec §6.2 의 Option β (sub-token 추가 emit) 를 v0.21.x P9 follow-up 에서 v0.20.1 implementation 으로 promote. dogfood 의 ko-dic compound noun limitation (`대한민국`, `한국정부`, `주민등록번호` 등 단일 token 정책) 해소. Implementation (`crates/kebab-chunk/src/lib.rs::tokenize_korean_morphological`): - 신규 helper `is_hangul()` — 한글 음절 (U+AC00..D7A3) + 자모 (U+1100..11FF, U+3130..318F) 판정. - lindera output 의 각 morpheme 에 대해, 한글만 + 길이 ≥ 3 인 경우 sliding window 2-gram 추가 emit. `[한국정부, 한국, 국정, 정부]` 형태로 token list expand. - 영어 / 숫자 / 혼합 token 은 supplement X (false positive 회피). Tests (`crates/kebab-chunk/tests/tokenize_korean.rs`): - `tokenize_korean_morphological_emits_2gram_for_long_morpheme`: 5 probe fixture 중 supplement 발화 case 확인 (실측 `서울특별시` → `[서울, 특별시, 특별, 별시]`, `대한민국` → `[대한민국, 대한, 한민, 민국]`). - `tokenize_korean_morphological_no_2gram_for_english`: Rust optimization fixture 에서 영어 substring (`Rus`, `ust`, `imi`) emit 없음 보장. Dogfood evidence (`tasks/HOTFIXES.md` 2026-05-28 entry 보강): - '대한', '한민', '민국' query 모두 hit (대한민국 의 sliding window). - '특별', '주민', '등록' 같은 sub-token query hit. - 영어 'tokenizer' query 는 corpus 부재로 0 hit (supplement X). - Trade-off: DB size +20-30% (Korean-heavy), false positive 작은 risk. Spec: docs/superpowers/specs/2026-05-28-v0.20.x-korean-morphological-tokenizer-spec.md §6.2 (Option β promote) Plan: docs/superpowers/plans/2026-05-28-v0.20.x-korean-morphological-tokenizer-plan.md (post-implementation enhancement)
4.3 KiB
4.3 KiB