Node.js ML that learns one sample at a time
A JavaScript framework for multi-label classification and online learning, pitched at chatbot builders who need to retrain without redeploying.

What it does
Limdu wraps a grab-bag of classifiers—Winnow, Bayesian, Perceptron, SVM, Decision Tree, NeuralNetwork—into a single Node.js API. You can train in batch or feed it one sample at a time via trainOnline, then ask for an “explanation” of why it guessed what it guessed. It also handles multi-label output (zero, one, or many tags per input) and bundles basic feature extractors like n-grams and normalizers.
The interesting bit
The “online learning” angle is the real pitch. Most JS ML libraries assume you batch-train offline; Limdu lets a running chatbot correct itself in real time. The explanation feature is a nice touch for debugging intent classifiers, though the README warns the output format is unstable and “for presentation purposes only.”
Key highlights
- Multi-label classification via
BinaryRelevance, plus HOMER, Passive-Aggressive, and other less-common algorithms EnhancedClassifiercomposes feature extractors, normalizers, and lookup tables into a pipeline- Built-in n-gram and letter-gram extractors; normalizers are chainable arrays
- Feature lookup table bridges string features to integer indices for SVM compatibility
- Explanations available for some classifiers (Bayesian gives probabilities, Winnow gives weighted feature relevance)
Caveats
- Explicitly “alpha” state; README admits some parts are “missing or not tested”
- “Not all features work for all classifiers”—the test folder is the ground truth, not the docs
- Still targets Node.js 0.12+ in its docs, which may or may not reflect current maintenance
Verdict
Worth a look if you’re building a Node.js dialog system that needs incremental learning without pulling in Python. Skip it if you need battle-tested, well-documented primitives or modern Node/TypeScript ergonomics.