garu-ko 0.9.5 → 0.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  - **1MB model** bundled in npm package (no CDN needed)
6
6
  - **337KB WASM** engine (155KB gzipped) -- runs in any modern browser
7
- - **F1 95.1%** on 9k human-verified gold testset (ep_norm), **F1 93.7%** on NIKL MP
7
+ - **F1 95.3%** on 9k human-verified gold testset (ep_norm), **F1 93.9%** on NIKL MP
8
8
  - **~1ms** inference per sentence
9
9
  - **Offline-ready** -- works without network
10
10
  - **[Live Demo](https://garu.zerry.co.kr)** -- try it in your browser
@@ -130,6 +130,29 @@ await insert(db, { title: '학교에서 점심을 먹었다' })
130
130
  await search(db, { term: '먹다' }) // ← matches
131
131
  ```
132
132
 
133
+ ## FAQ
134
+
135
+ **What is garu-ko?**
136
+ garu-ko (가루/Garu) is a browser-native Korean morphological analyzer. A 1MB model and a 337KB WASM engine run entirely in the browser, so it segments Korean text, tags parts of speech, extracts nouns, and tokenizes with no server and no network.
137
+
138
+ **Does it need a server or API?**
139
+ No. It runs 100% client-side via WebAssembly. After the initial load there is no backend call, so it works offline and inside browser extensions, service-worker PWAs, and intranet apps.
140
+
141
+ **How accurate is it?**
142
+ F1 95.3% on a 9,000-sentence human-verified gold testset (ep_norm), and F1 93.9% on the NIKL Modu morpheme-tagged corpus.
143
+
144
+ **Which POS tagset does it use?**
145
+ The Sejong tagset (42 tags) from the National Institute of Korean Language — NNG/NNP for nouns, VV/VA for verbs/adjectives, particles, endings, and symbols.
146
+
147
+ **Does it use a neural network?**
148
+ No. It combines a codebook, an eojeol cache, sentence-level N-best trigram Viterbi, and deterministic post-processing rules, so output is deterministic and reproducible.
149
+
150
+ **Where does it run besides the browser?**
151
+ The same `npm install garu-ko` works in browser ESM, Node.js 18+, Bun, and Deno with one API.
152
+
153
+ **Is it free for commercial use?**
154
+ Yes. garu-ko is open source under the MIT license with no usage fees.
155
+
133
156
  ## Acknowledgments
134
157
 
135
158
  The morphological analysis model is trained on the **NIKL Morpheme-Tagged Corpus (v1.1)** provided by the National Institute of Korean Language (국립국어원). The model contains only derived frequency statistics, not original text.
package/dist/core.js CHANGED
@@ -81,7 +81,7 @@ export class GaruBase {
81
81
  return {
82
82
  version: this._wasm.constructor.version(),
83
83
  size: this._modelSize,
84
- accuracy: 0.951,
84
+ accuracy: 0.953,
85
85
  };
86
86
  }
87
87
  /**
package/models/base.gmdl CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "garu-ko",
3
- "version": "0.9.5",
3
+ "version": "0.9.7",
4
4
  "description": "Ultra-lightweight Korean morphological analyzer for the web (1MB model, WASM, F1 93.7% NIKL MP)",
5
5
  "type": "module",
6
6
  "main": "dist/node.js",
@@ -41,6 +41,8 @@
41
41
  "korean-nlp",
42
42
  "pos-tagging",
43
43
  "tokenizer",
44
+ "korean-tokenizer",
45
+ "hangul",
44
46
  "nlp",
45
47
  "wasm",
46
48
  "webassembly",
package/pkg/garu_wasm.js CHANGED
@@ -119,7 +119,7 @@ export class GaruWasm {
119
119
  }
120
120
  }
121
121
  if (Symbol.dispose) GaruWasm.prototype[Symbol.dispose] = GaruWasm.prototype.free;
122
- import * as import1 from "./snippets/garu-core-d3e41d8c28e7b283/inline0.js"
122
+ import * as import1 from "./snippets/garu-core-b8fbec0bd661b5eb/inline0.js"
123
123
 
124
124
  function __wbg_get_imports() {
125
125
  const import0 = {
@@ -178,7 +178,7 @@ function __wbg_get_imports() {
178
178
  return {
179
179
  __proto__: null,
180
180
  "./garu_wasm_bg.js": import0,
181
- "./snippets/garu-core-d3e41d8c28e7b283/inline0.js": import1,
181
+ "./snippets/garu-core-b8fbec0bd661b5eb/inline0.js": import1,
182
182
  };
183
183
  }
184
184
 
Binary file
package/pkg/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "garu-wasm",
3
3
  "type": "module",
4
- "version": "0.9.5",
4
+ "version": "0.9.7",
5
5
  "files": [
6
6
  "garu_wasm_bg.wasm",
7
7
  "garu_wasm.js",
@@ -0,0 +1 @@
1
+ export function performance_now() { return performance.now(); }
@@ -0,0 +1 @@
1
+ export function performance_now() { return performance.now(); }