ts-spelling-corrector
v1.0.0
Published
A lightweight TypeScript spelling corrector inspired by Peter Norvig's algorithm. It allows correcting individual words or full sentences by training on a given corpus.
Readme
ts-spelling-corrector
A lightweight TypeScript spelling corrector inspired by Peter Norvig's algorithm. It allows correcting individual words or full sentences by training on a given corpus.
Features
- Corrects misspelled words using probabilistic matching
- Supports training from plain text or file-based corpora
- Token-preserving sentence correction
- Written in TypeScript and fully typed
- Simple API, zero dependencies
Installation
pnpm add ts-spelling-corrector
# or
npm install ts-spelling-corrector
# or
yarn add ts-spelling-correctorQuick Start
Basic Usage
import { SpellCorrector } from 'ts-spelling-corrector';
const corrector = new SpellCorrector();
// Add corpus from a string
corrector.addStringCorpus('the quick brown fox jumps over the lazy dog');
console.log(corrector.correctWord('quik'));
// => 'quick'
console.log(corrector.correctSentence('teh quik borwn fx.'));
// => 'the quick brown fox.'Load from File
await corrector.addFileCorpus('./path/to/corpus.txt');The corpus should be plain text. The frequency of each word is computed automatically.
API
addStringCorpus(text: string): void
Creates a corpus from a string of words. Words are tokenized and counted.
addFileCorpus(path: string): Promise<void>
Loads and parses a text file to build the corpus.
correctWord(word: string): string
Returns the most likely correction for a given word.
correctSentence(sentence: string): string
Corrects a sentence while preserving punctuation and spacing.
Development
Scripts
| Command | Description |
| --------------- | ------------------------------ |
| pnpm dev | Run in dev mode with tsx |
| pnpm build | Build both ESM and CJS outputs |
| pnpm test | Run unit tests with Vitest |
| pnpm coverage | Generate coverage report |
| pnpm lint | Lint the codebase with Biome |
Code is formatted and linted with Biome, and tested using Vitest.
License
MIT © Valère Pique
