← all repositories
erelsgl/limdu

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.

1.1k stars JavaScript ML Frameworks
limdu
Velocity · 7d
+0.2
★ / day
Trend
steady
star history

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
  • EnhancedClassifier composes 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.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.