근거 · 품질과 성능
벤치마크
형태 검색 품질과 실행 비용은 서로 다른 workload로 측정합니다. 모든 품질 비교에는 raw와 contract-adjusted 결과를 함께 표시합니다. 성능은 초기화·처리량·지연 시간·메모리를 별도 단위로 유지합니다.
이 평가는 고정된 입력과 설정에서의 근거입니다. Canonical의 높은 점수가 오타·띄어쓰기 오류나 새로운 저장소의 누락률까지 보장하지는 않습니다. 아래 Robust 결과에서 smart와 any의 precision·recall을 함께 비교하고, 자신의 문서에서 고정한 질의로 확인해야 합니다. 실제 기술 문서 평가의 표본 범위와 한계는 원본 보고서에서 확인할 수 있습니다.
평가 범위
Canonical은 사람이 표준 맞춤법을 확인한 500개 양성·500개 음성 사례입니다. 제품과 Kiwi, Lindera, MeCab-ko, KOMORAN은 같은 표제어·품사·문장 과제를 수행합니다.
Robust는 실제 오류 문장 250개 양성·250개 음성 사례입니다. 표준문 결과와 합산하지 않으며 robustness 설정, 오류 위치와 입력 분모를 별도로 기록합니다.
Query matrix는 같은 문장에 여러 양성·음성 질의를 적용해 부분 회수와 문장 안 오탐을 측정합니다. 제품 계약 검토 registry에서는 strict 말뭉치 gold와 다른 기대값을 선언할 수 있습니다.
Raw와 contract-adjusted 지표
Raw는 원본 말뭉치 gold를 그대로 사용합니다. TP, FP, TN, FN과 여기서 계산한 precision, recall, F1을 수정하지 않습니다.
Contract-adjusted는 제품 실행 전에 고정한 registry를 같은 예측에 적용합니다. 의미로 구분할 수 없는 동형이의, 원문에 정렬된 내부 성분과 gold span 오류를 재분류합니다. 제품 입력 계약에 속하지 않는 비표준 입력만 제외하며, 구현이 어렵거나 아직 지원하지 않는 문법은 제외하지 않습니다.
Contract-adjusted confusion matrix는 raw 약어 오른쪽 위에 c를 붙인 TPᶜ, FPᶜ, TNᶜ, FNᶜ로 표기합니다. Contract review가 없는 평가군은 raw 기대값을 그대로 사용하고 reviewed cases가 0이라는 사실도 결과에 포함합니다.
Canonical 품질·성능
Confusion matrix
| 프로필·제품 | Raw TP / TN / FP / FN | TPᶜ / TNᶜ / FPᶜ / FNᶜ |
|---|---|---|
| kfind embedded · any | 486 / 493 / 7 / 14 | 486 / 493 / 7 / 12 |
| kfind embedded · smart | 461 / 500 / 0 / 39 | 461 / 500 / 0 / 37 |
| kfind full POS · any | 497 / 493 / 7 / 3 | 497 / 493 / 7 / 1 |
| kfind full POS · smart | 498 / 500 / 0 / 2 | 498 / 500 / 0 / 0 |
| Kiwi | 418 / 500 / 0 / 82 | 418 / 500 / 0 / 80 |
| Lindera | 377 / 500 / 0 / 123 | 377 / 500 / 0 / 121 |
| MeCab-ko | 390 / 500 / 0 / 110 | 390 / 500 / 0 / 108 |
| KOMORAN | 393 / 500 / 0 / 107 | 393 / 500 / 0 / 105 |
동일 workload 성능
Fresh process에서 warm-up 1회 뒤 5회 측정합니다. 품질과 비용은 하나의 점수로 합치지 않습니다.
| 프로필·제품 | 초기화 | cases/s | p95 | peak RSS |
|---|---|---|---|---|
| kfind embedded · any | 0.0020 s | 52,504.5 | 0.0512 ms | 5.5 MiB |
| kfind embedded · smart | 0.0446 s | 37,824.3 | 0.0567 ms | 41.3 MiB |
| kfind full POS · any | 0.0356 s | 41,755.7 | 0.0731 ms | 21.0 MiB |
| kfind full POS · smart | 0.0773 s | 25,162.4 | 0.1105 ms | 56.6 MiB |
| Kiwi | 1.5310 s | 1,745.6 | 0.9617 ms | 528.5 MiB |
| Lindera | 0.0273 s | 24,199.6 | 0.0697 ms | 180.5 MiB |
| MeCab-ko | 0.0003 s | 10,946.6 | 0.1489 ms | 102.8 MiB |
| KOMORAN | 1.0870 s | 1,569.8 | 1.1011 ms | 756.1 MiB |
Query matrix 품질·성능
Query matrix는 한 원문 문장에서 최대 세 개의 “있어야 하는” 표제어·품사·span 질의를 고르고, 각 질의마다 같은 품사의 “없어야 하는” 질의를 짝지은 진단 fixture입니다. 아래 값은 개별 질의 단위로 집계하며 Canonical 회귀선과 합치거나 대체하지 않습니다.
Confusion matrix
| 프로필·제품 | Raw TP / TN / FP / FN | TPᶜ / TNᶜ / FPᶜ / FNᶜ |
|---|---|---|
| kfind embedded · any | 1268 / 1272 / 24 / 28 | 1270 / 1272 / 21 / 26 |
| kfind embedded · smart | 1197 / 1292 / 4 / 99 | 1201 / 1293 / 0 / 95 |
| kfind full POS · any | 1291 / 1272 / 24 / 5 | 1293 / 1272 / 21 / 3 |
| kfind full POS · smart | 1292 / 1292 / 4 / 4 | 1296 / 1293 / 0 / 0 |
| Kiwi | 1108 / 1296 / 0 / 188 | 1107 / 1293 / 0 / 189 |
| Lindera | 994 / 1296 / 0 / 302 | 993 / 1293 / 0 / 303 |
| MeCab-ko | 1036 / 1296 / 0 / 260 | 1035 / 1293 / 0 / 261 |
| KOMORAN | 1064 / 1296 / 0 / 232 | 1063 / 1293 / 0 / 233 |
동일 workload 성능
Fresh process에서 warm-up 1회 뒤 5회 측정합니다. 품질과 비용은 하나의 점수로 합치지 않습니다.
| 프로필·제품 | 초기화 | cases/s | p95 | peak RSS |
|---|---|---|---|---|
| kfind embedded · any | 0.0020 s | 52,001.7 | 0.0508 ms | 8.4 MiB |
| kfind embedded · smart | 0.0425 s | 39,565 | 0.0539 ms | 44.0 MiB |
| kfind full POS · any | 0.0348 s | 45,002.9 | 0.0595 ms | 21.7 MiB |
| kfind full POS · smart | 0.0775 s | 25,472.5 | 0.1007 ms | 57.4 MiB |
| Kiwi | 1.4731 s | 1,701.5 | 0.9763 ms | 532.8 MiB |
| Lindera | 0.0282 s | 23,457.6 | 0.0735 ms | 201.3 MiB |
| MeCab-ko | 0.0003 s | 11,348.2 | 0.1404 ms | 103.9 MiB |
| KOMORAN | 1.0911 s | 1,837.9 | 0.9018 ms | 868.7 MiB |
Robust 품질·성능
Confusion matrix
| 프로필·제품 | Raw TP / TN / FP / FN | TPᶜ / TNᶜ / FPᶜ / FNᶜ |
|---|---|---|
| kfind embedded · any | 230 / 244 / 6 / 20 | 230 / 244 / 6 / 20 |
| kfind embedded · smart | 182 / 249 / 1 / 68 | 182 / 249 / 1 / 68 |
| kfind full POS · any | 232 / 244 / 6 / 18 | 232 / 244 / 6 / 18 |
| kfind full POS · smart | 201 / 249 / 1 / 49 | 201 / 249 / 1 / 49 |
| Kiwi | 213 / 250 / 0 / 37 | 213 / 250 / 0 / 37 |
| Lindera | 208 / 250 / 0 / 42 | 208 / 250 / 0 / 42 |
| MeCab-ko | 206 / 250 / 0 / 44 | 206 / 250 / 0 / 44 |
| KOMORAN | 205 / 250 / 0 / 45 | 205 / 250 / 0 / 45 |
동일 workload 성능
Fresh process에서 warm-up 1회 뒤 5회 측정합니다. 품질과 비용은 하나의 점수로 합치지 않습니다.
| 프로필·제품 | 초기화 | cases/s | p95 | peak RSS |
|---|---|---|---|---|
| kfind embedded · any | 0.0020 s | 54,253 | 0.0486 ms | 4.7 MiB |
| kfind embedded · smart | 0.0438 s | 38,596 | 0.0545 ms | 40.4 MiB |
| kfind full POS · any | 0.0362 s | 43,249.8 | 0.0798 ms | 20.8 MiB |
| kfind full POS · smart | 0.0797 s | 23,698.2 | 0.1203 ms | 56.5 MiB |
| Kiwi | 1.8788 s | 1,713.4 | 1.3710 ms | 527.5 MiB |
| Lindera | 0.0293 s | 24,956.2 | 0.1007 ms | 165.4 MiB |
| MeCab-ko | 0.0003 s | 11,454.7 | 0.2169 ms | 95.4 MiB |
| KOMORAN | 1.1644 s | 1,329.2 | 1.8062 ms | 522.4 MiB |
형태 질의와 정규식 검색 기준선
명시적 품사를 붙인 full-POS 형태 질의 7개를 any와 smart로 각각 실행합니다. 사람이 활용형을 열거한 정규식, 짧은 어간만 열거한 정규식과 비교합니다. 각 질의는 positive 8개와 negative 8개로 구성되며 전체 112개 case입니다.
이 constructed fixture는 같은 질의에서 coverage와 경계 trade-off를 보여 주는 진단입니다. Held-out 품질 benchmark나 일반적인 한국어 검색 품질의 순위로 사용하지 않습니다.
Contract-adjusted는 각 방법의 같은 예측에 사전 고정한 contract expectation을 적용한 값입니다. Any와 smart의 오탐 차이는 그대로 유지하며 보정 결과만으로 raw 오류를 숨기지 않습니다.
Confusion matrix
| 검색 전략 | Raw TP / TN / FP / FN | TPᶜ / TNᶜ / FPᶜ / FNᶜ |
|---|---|---|
| kfind full POS · any | 56 / 47 / 9 / 0 | 62 / 47 / 3 / 0 |
| kfind full POS · smart | 56 / 50 / 6 / 0 | 62 / 50 / 0 / 0 |
| 활용형 열거 정규식 | 50 / 48 / 8 / 6 | 55 / 47 / 3 / 7 |
| 짧은 어간 정규식 | 46 / 22 / 34 / 10 | 52 / 22 / 28 / 10 |
7-query batch 시간
| 검색 전략 | 중앙값 | 최솟값 | 최댓값 | p95 | 유효 처리량 |
|---|---|---|---|---|---|
| kfind full POS · any | 491.54 ms | 488.00 ms | 507.89 ms | 507.89 ms | 192.8 MiB/s |
| kfind full POS · smart | 2311.31 ms | 2283.46 ms | 2421.43 ms | 2421.43 ms | 41 MiB/s |
| rg · 활용형 열거 | 64.94 ms | 63.03 ms | 73.39 ms | 73.39 ms | 1,458.9 MiB/s |
| grep · 활용형 열거 | 5266.18 ms | 5235.50 ms | 5341.44 ms | 5341.44 ms | 18 MiB/s |
| rg · 짧은 어간 | 67.63 ms | 63.23 ms | 73.38 ms | 73.38 ms | 1,400.9 MiB/s |
| grep · 짧은 어간 | 1786.89 ms | 1779.30 ms | 1989.68 ms | 1989.68 ms | 53 MiB/s |
d28fa2790b5592710291c5a90220698065ff8999 · 40e3c1fcfc7b803fe48121d8e73e7e7dde2a61de70f90213890e58b43bec5021
원본 자료
승인 snapshot에는 원본 보고서의 Git revision과 SHA-256을 보존합니다. 측정 환경, fixture checksum, 도구 버전과 개별 실패 사례도 원본 보고서에서 확인할 수 있습니다.
d28fa2790b5592710291c5a90220698065ff8999 · 3258d172ce7098f9434150fb24d9a59fbedc73ec4dd0b84b17ca24062a68af28