한국어 형태소 분석기 가루(Garu)란?
가루(Garu)는 브라우저에서 바로 실행되는 한국어 형태소 분석기입니다. 별도의 서버 없이 WebAssembly(WASM) 기반으로 클라이언트에서 직접 형태소 분석, 명사 추출, 토큰화를 수행합니다. 1.0MB의 경량 모델과 155KB(gzip) WASM 엔진만으로 NIKL MP 벤치마크 기준 F1 93.9%의 정확도를 달성합니다.
형태소 분석이란?
형태소 분석(morphological analysis)은 자연어 처리(NLP)의 기초 단계로, 문장을 의미를 가진 최소 단위인 형태소로 분리하고 각 형태소의 품사(POS)를 태깅하는 과정입니다. 예를 들어 “배가 아파서 약을 먹었다”를 분석하면 ‘배/NNG’, ‘가/JKS’, ‘아프/VA’, ‘어서/EC’, ‘약/NNG’, ‘을/JKO’, ‘먹/VV’, ‘었/EP’, ‘다/EF’로 분리됩니다.
한국어는 교착어로, 어근에 조사와 어미가 결합하여 단어를 이루기 때문에 한국어 형태소 분석은 영어와 달리 단순 공백 분리로는 불가능하며 전문적인 분석기가 필요합니다.
주요 기능
- 형태소 분석 (Morphological Analysis)
- 입력 텍스트를 형태소 단위로 분리하고 세종 품사 태그셋(42종)으로 품사를 태깅합니다.
- 명사 추출 (Noun Extraction)
- 텍스트에서 일반명사(NNG), 고유명사(NNP)를 추출합니다. 외국어(SL) 포함 옵션도 지원합니다.
- 토큰화 (Tokenization)
- 텍스트를 의미 있는 토큰 단위로 분리하여 후속 NLP 파이프라인에 활용할 수 있습니다.
왜 가루(Garu)인가?
- 서버 없이 브라우저에서 직접 실행
- WebAssembly 기반으로 100% 클라이언트에서 동작합니다. 별도의 분석 서버를 띄울 필요가 없고, 사용자 텍스트가 외부로 전송되지 않아 개인정보 보호에 강합니다.
- 초경량 1MB 모델 + 155KB 엔진
- brotli 압축된 1.0MB 코드북 모델과 155KB(gzip) WASM 엔진. 모바일 웹에서도 부담 없이 로드할 수 있는 한국어 NLP 자원입니다.
- npm 한 줄 설치, 0-config
npm install garu-ko한 줄이면 끝. 별도의 모델 다운로드, 네이티브 바인딩, Python 런타임이 필요 없습니다. Next.js / Vite / 순수 브라우저 어디서나 동작합니다.- NIKL MP F1 93.9% 정확도
- 국립국어원 NIKL Modu Corpus 형태분석 말뭉치 기준 F1 93.9%, 9,000문장 v15k 골드 테스트셋 기준 F1 95.4%. 코드북 + Trigram Viterbi + 어절 캐시 + 문맥 후처리 규칙 조합으로 경량 환경에서 높은 정확도를 유지합니다.
- 오프라인 동작
- 초기 로드 이후 네트워크 없이 동작합니다. 브라우저 확장, 오프라인 PWA, 임베디드 에디터 등 인터넷에 의존할 수 없는 환경에 적합합니다.
사용법
npm 패키지로 설치하여 프로젝트에서 바로 사용할 수 있습니다.
npm install garu-ko
import { Garu } from 'garu-ko';
const garu = await Garu.load();
const result = garu.analyze('한국어 형태소 분석기');
console.log(result.tokens);활용 분야
- 한국어 검색 엔진 — 형태소 기반 인덱싱으로 검색 품질 향상
- 텍스트 마이닝 — 뉴스, 리뷰, SNS 텍스트에서 키워드 추출
- 챗봇 및 대화 시스템 — 사용자 입력 전처리
- 감성 분석 — 형태소 단위 감정 분류
- 교육 도구 — 한국어 문법 학습 및 품사 분석 실습
- 브라우저 확장 프로그램 — 서버 없이 실시간 텍스트 분석
자주 묻는 질문 (FAQ)
- 한국어 형태소 분석기란 무엇인가요?
- 한국어 형태소 분석기는 문장을 의미를 가진 최소 단위인 형태소로 분리하고 각 형태소에 품사(POS) 태그를 부여하는 자연어 처리 도구입니다. 한국어는 교착어로 어근에 조사·어미가 결합하기 때문에 단순 공백 분리만으로는 토큰화할 수 없어, 검색·번역·텍스트 마이닝 등 모든 한국어 NLP 작업에 형태소 분석이 필수적으로 사용됩니다.
- 가루(Garu)는 어떻게 브라우저에서 직접 동작하나요?
- 가루는 Rust로 작성된 형태소 분석 엔진을 WebAssembly(WASM)로 컴파일해 브라우저에서 실행합니다. 1.0MB의 brotli 압축 코드북 모델과 155KB(gzip) WASM 엔진을 처음 로드한 뒤에는 모든 분석이 사용자 디바이스에서 일어나므로 별도의 서버 통신이나 백엔드 인프라가 필요 없습니다.
- 어떤 품사 태그 체계를 사용하나요?
- 국립국어원 세종 품사 태그셋(42종)을 그대로 사용합니다. 일반명사(NNG), 고유명사(NNP), 동사(VV), 형용사(VA), 조사(JKS/JKO/JKB 등), 어미(EP/EF/EC 등), 기호(SF/SP/SS 등)까지 한국어 형태소를 정밀하게 구분합니다.
- 오프라인 환경에서도 동작하나요?
- 네. 초기 로드 시에만 모델과 WASM 엔진을 받아오고, 그 이후로는 네트워크 없이 동작합니다. 서비스 워커와 함께 쓰면 완전 오프라인 PWA, 브라우저 확장 프로그램, 사내 인트라넷 환경에서도 한국어 형태소 분석을 그대로 활용할 수 있습니다.
- 정확도는 어느 정도인가요?
- 국립국어원 NIKL Modu Corpus 형태분석 말뭉치 기준 F1 93.9%, 9,000문장 v15k 골드 테스트셋 기준 F1 95.4%를 달성합니다. 코드북 + Trigram Viterbi + 어절 캐시 + 문맥 후처리 규칙을 조합해 1MB 크기 모델에서 데스크톱 분석기 수준에 근접한 정확도를 유지합니다.
- Node.js 서버나 다른 런타임에서도 사용할 수 있나요?
- npm install garu-ko 한 줄로 브라우저 ESM, Node.js, Bun, Deno 모두에서 동일한 API로 동작합니다. Next.js App Router의 클라이언트 컴포넌트, Vite/SvelteKit 프로젝트, Electron 앱, 서버사이드 형태소 분석까지 모두 같은 패키지를 씁니다.
- 상업적으로 사용해도 되나요?
- 네. 가루(garu-ko)는 오픈소스로 공개되어 있으며 GitHub 저장소의 LICENSE 파일에 따라 상업적 이용이 허용됩니다. 사용 시 별도의 라이선스 비용은 발생하지 않습니다.