kfind 0.1.1
kfind
한국어 표제어와 활용형을 파일 및 메모리의 텍스트에서 찾는 query-directed matcher입니다. 쿼리를 유한한 검색 계획으로 한 번 컴파일하고, 입력 텍스트는 anchor scan과 후보 검증으로 처리합니다.
형태 지식은 쿼리 확장과 match 검증에 사용합니다. 검색 대상 전체를 형태소 분석하거나 문장의 의미를 판별하지 않습니다.
목적과 범위
kfind의 결과물은 후속 자동화나 사람이 바로 사용할 수 있는 match span과 생성 규칙입니다. 범용 한국어 분석 결과를 만드는 것은 목표가 아닙니다.
| Goal | Non-goal |
|---|---|
| 짧은 query를 bounded plan으로 컴파일 | 문장 전체의 형태소 분석과 tokenization |
| 대규모 text를 anchor 중심으로 scan | 문맥 의미 판별과 semantic search |
| match span, 품사, 생성 규칙 반환 | 임의 표면형의 완전한 역분석 |
| CLI, Rust, JavaScript에서 같은 검색 계약 유지 | 형태소 분석기 자체의 최고 속도 경쟁 |
검색 모델
-
Compile
표제어, 품사, 경계 옵션을 유한한 표면형과 verifier로 만듭니다.
-
Scan
입력 전체를 형태 분석하지 않고 byte-oriented matcher로 후보를 찾습니다.
-
Verify
boundary 정책과 형태 규칙으로 후보 span을 검증하고 provenance를 반환합니다.
사용 방식
같은 엔진에서 자동화는 recall을, 대화형 검색은 precision을 우선할 수 있습니다.
| 항목 | 자동화 | 대화형 검색 |
|---|---|---|
| 우선순위 | recall | precision |
| 품사 | 명시 | 자동 |
| Boundary | any |
smart |
| 출력 | JSON Lines와 provenance | 터미널 text |
kfind --embedded --boundary any --pos verb --json 걷다 src docs
kfind 걷다 src docs
WebAssembly playground
입력은 브라우저 안에서 처리하며 분석 API로 전송하지 않습니다.
결과
WASM engine을 준비하고 있습니다.
Matches & provenance
Raw match JSON
[]
기본 WASM에는 embedded lexicon만 포함합니다. component resource가 필요한 검색에서만 same-origin Pages Function이 R2 객체를 스트리밍하고, WASM engine이 검증 후 사용합니다.
Query 문법
공백은 atom을 나누고 따옴표는 하나의 literal atom을 만듭니다. 여러
atom은 같은 줄에서 순서대로 나타나야 하며
--max-gap으로 간격을 제한합니다.
n:권한 v:검증하다
"Hello, world!"
| 태그 | 품사 | 태그 | 품사 |
|---|---|---|---|
n: |
명사 | pro: |
대명사 |
num: |
수사 | v: |
동사 |
adj: |
형용사 | det: |
관형사 |
adv: |
부사 | j: |
조사 |
intj: |
감탄사 | lit: |
literal |
Boundary 정책
| 값 | 동작 | 주요 용도 |
|---|---|---|
smart |
품사와 완성 token span을 검증 | 대화형 검색 기본값 |
token |
모든 core와 token span 바깥에 엄격한 경계 요구 | 독립 token 일치 |
any |
좌우 경계를 요구하지 않음 | recall 중심 자동화 |
옵션, 출력 형식, 종료 코드 전체 목록은 한국어 README에서 확인할 수 있습니다.
벤치마크
품질, end-to-end CLI 처리량, 초기화, literal scan은 서로 다른 workload와 metric family로 측정합니다. 아래 수치는 동일 입력의 순수 tokenizer 속도 순위가 아닙니다.
| Workload | 대표 지표 | 처리량 |
|---|---|---|
| Agent · explicit POS | Recall 95.80% | 14,879.5 cases/s |
| User · untagged | Precision 100.00% | 7,197.3 cases/s |
| 1 GiB literal scan | Median 0.047 s | 21,787 MiB/s |
설치와 사용
Homebrew
brew install seokminhong/brew/kfind
Rust
use kfind::{CompileOptions, Engine};
WebAssembly
import { Kfind } from "kfind";