kfind 문서

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에서 같은 검색 계약 유지 형태소 분석기 자체의 최고 속도 경쟁

검색 모델

  1. Compile

    표제어, 품사, 경계 옵션을 유한한 표면형과 verifier로 만듭니다.

  2. Scan

    입력 전체를 형태 분석하지 않고 byte-oriented matcher로 후보를 찾습니다.

  3. 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을 불러오는 중…

atom 태그 예: n:사용자 v:검증하다

예시
0자
고급 smart 리소스 필요한 경우 R2에서 45.6 MiB를 받습니다.

결과

WASM engine을 준비하고 있습니다.

— ms

Matches & provenance

    Raw match JSON
    []
    smart 리소스 로딩

    기본 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 중심 자동화

    벤치마크

    품질, 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
    Agent와 User workflow의 품질, 처리량, 초기화, p95 latency와 RSS 비교
    Agent와 User workflow는 품사 입력과 품질 우선순위가 다릅니다.
    kfind Agent, User와 Kiwi, Lindera, MeCab-ko, KOMORAN의 품질 및 실행 비용 비교
    같은 1,000-case gold를 사용한 외부 backend 비교입니다. User workflow만 품사를 제거한 실제 persona 입력입니다.

    설치와 사용

    Homebrew

    brew install seokminhong/brew/kfind

    Rust

    use kfind::{CompileOptions, Engine};

    WebAssembly

    import { Kfind } from "kfind";