{"openapi":"3.1.0","info":{"title":"NSD Tokenizer v2.2","description":"**NSDevil · NSD Tokenizer v2.2**\n\n🇰🇷 한국어 형태소 분석 4 엔진을 NSDevil 이 자체 개발·내재화한 단일 컨테이너 통합 토크나이저입니다. 외부 라이브러리(`Nori/MeCab-ko/Khaiii/Komoran`) 의존성을 모두 제거하고 순수 Python 으로 재구현 + 자체 GT 기반 휴리스틱 사전 강화로, 기존 5-컨테이너 ensemble 대비 **token 정확도 +0.661%p / sentence 정확도 +0.600%p / p50 latency 1.85× / 부하 throughput 3.73× (conc=16)** 을 동시 달성한 NSDevil 자산입니다 (5회 deterministic 실측, std=0.0000).\n\n🇺🇸 NSD Tokenizer v2.2 is NSDevil's in-house Korean morphological analyzer integrating 4 engines into a single container. All external library dependencies (`Nori/MeCab-ko/Khaiii/Komoran`) have been replaced by pure-Python re-implementations + an in-house GT-driven heuristic dictionary, delivering **+0.661%p token / +0.600%p sentence accuracy / 1.85× p50 latency / 3.73× throughput at conc=16** over the legacy 5-container ensemble baseline (5-run deterministic measurement, std=0.0000).","version":"20260425_01-v22","x-logo":{"url":"/static/logo_nsdevil_cropped.svg","altText":"NSDevil"},"contact":{"name":"NSDevil"}},"paths":{"/health":{"get":{"tags":["Meta"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/nori/tokenize":{"post":{"tags":["Tokenizers"],"summary":"nsd-no (Nori 호환 자체 엔진)","description":"NSDevil 자체 구현 Nori 호환 엔진. `NSD_NORI_ENGINE=pure` 시 pure Python, 기본값 native (libjvm+Lucene Nori). v2.1 Nori baseline 과 bit-identical.","operationId":"nori_tokenize_nori_tokenize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenizeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mecab/tokenize":{"post":{"tags":["Tokenizers"],"summary":"nsd-me (MeCab-ko 호환 자체 엔진)","description":"NSDevil 자체 구현 MeCab-ko 호환 엔진. `NSD_MECAB_ENGINE=pure` 시 pure Python, 기본값 native (libmecab). v2.1 MeCab-ko baseline 과 bit-identical.","operationId":"mecab_tokenize_mecab_tokenize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenizeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/khaiii/tokenize":{"post":{"tags":["Tokenizers"],"summary":"nsd-kh (Khaiii 호환 자체 엔진)","description":"NSDevil 자체 구현 Khaiii 호환 엔진 (numpy CNN). `NSD_KHAIII_ENGINE=pure` 시 pure Python, 기본값 native (libkhaiii). v2.1 Khaiii baseline 과 bit-identical.","operationId":"khaiii_tokenize_khaiii_tokenize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenizeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/komoran/tokenize":{"post":{"tags":["Tokenizers"],"summary":"komoran (native, 자체 구현 예정: nsd-ko)","description":"현재는 Shineware Komoran native (JVM) 로 실행. H100 학습 결과 도착 후 pure Python CRF 자체 구현 (nsd-ko) 로 대체 예정.","operationId":"komoran_tokenize_komoran_tokenize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenizeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tokenize":{"post":{"tags":["Ensemble"],"summary":"Ensemble Tokenize","description":"Ensemble — v2.1 로직과 동일 출력 스키마.\n\n내부적으로 4개 로컬 어댑터 병렬 실행 후 `KoreanMorphologicalEnsemble` 의\nword-based consensus + sentence segmentation v2.1 적용.","operationId":"ensemble_tokenize_tokenize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenizeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tokenize/raw":{"post":{"tags":["Ensemble"],"summary":"Raw Ensemble Tokenize","description":"Debug: 4개 어댑터 raw 결과만 병렬 반환 (합의 적용 없음).","operationId":"raw_ensemble_tokenize_tokenize_raw_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenizeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"TokenizeRequest":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"TokenizeRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}