@vlchnk/nlpkit.js
v0.1.3
Published
Small, dependency-free NLP building blocks for JavaScript and TypeScript
Maintainers
Readme
nlpkit.js
Dependency-free NLP building blocks for JavaScript and TypeScript. The first module is a variable-order n-gram model for next-word suggestions.
Install
npm install @vlchnk/nlpkit.jsTrain and predict
import { buildNgramModel, suggestNextWords } from "@vlchnk/nlpkit.js/ngram";
const model = buildNgramModel(
[
{ text: "Good morning! How can I help you?" },
{ text: "Good evening! How can I help you?", weight: 2 },
],
{ maxOrder: 4, topK: 10, minCount: 1 },
);
const result = suggestNextWords(model, "How can I he");
// result.candidates[0].w === "help"
// Replace text in [result.replaceStart, result.replaceEnd] with that word.Training and prediction use the same Unicode-aware normalization. Prediction tries the longest available context first and backs off to shorter contexts if necessary. It also filters candidates by the partial word immediately before the cursor.
buildNgramModel returns plain JSON-compatible entries, so a model can be saved
to a file, database, object storage, or Redis. chooseCandidates is provided for
the Redis MGET pattern used by the original implementation, and Redis key
helpers are exported separately without adding a Redis client dependency.
Model options
maxOrder— maximum number of preceding words, default4.topK— candidates retained per context, default10.minCount— minimum weighted occurrence count, default2.- A record's optional positive
weightmultiplies all counts from that text.
The model is intended as a small, explainable baseline for operator-assist
autocomplete. For large corpora, train offline and store each entry by its
context key rather than rebuilding the model for every request.
