What is js-levenshtein?
The js-levenshtein npm package is used to calculate the Levenshtein distance between two strings. The Levenshtein distance is a measure of the difference between two sequences, which is the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one word into the other.
What are js-levenshtein's main functionalities?
Calculate Levenshtein distance
This feature allows you to calculate the Levenshtein distance between two strings. In the code sample, the distance between 'kitten' and 'sitting' is calculated, which is 3.
const levenshtein = require('js-levenshtein');
let distance = levenshtein('kitten', 'sitting');
console.log(distance); // Output: 3
Other packages similar to js-levenshtein
fast-levenshtein
This package provides a fast implementation of the Levenshtein algorithm. It is optimized for speed and is often faster than js-levenshtein, especially for longer strings.
levenshtein-edit-distance
This is another package that calculates the Levenshtein distance. It has a simple API and is also quite performant, but it may not be as optimized for speed as fast-levenshtein.
natural
Natural is a general natural language facility for Node.js. It includes a Levenshtein distance function as part of its broader set of language processing tools, which makes it more versatile than js-levenshtein if you need additional natural language processing features.
js-levenshtein
The most efficient JS implementation calculating the Levenshtein distance, i.e. the difference between two strings.
Based on Wagner-Fischer dynamic programming algorithm, optimized for speed and memory
- use a single distance vector instead of a matrix
- loop unrolling on the outer loop
- remove common prefixes/postfixes from the calculation
- minimize the number of comparisons
Install
$ npm install --save js-levenshtein
Usage
const levenshtein = require('js-levenshtein');
levenshtein('kitten', 'sitting');
Benchmark
$ npm run bench
50 paragraphs, length max=500 min=240 avr=372.5
126 op/s » js-levenshtein
88 op/s » talisman
80 op/s » leven
74 op/s » levenshtein-edit-distance
59 op/s » fast-levenshtein
27 op/s » levenshtein-component
13 op/s » levdist
11 op/s » ld
8 op/s » natural
8 op/s » levenshtein
100 sentences, length max=170 min=6 avr=57.5
2,520 op/s » js-levenshtein
1,804 op/s » talisman
1,498 op/s » leven
1,543 op/s » levenshtein-edit-distance
1,209 op/s » fast-levenshtein
539 op/s » levenshtein-component
249 op/s » levdist
244 op/s » ld
146 op/s » natural
144 op/s » levenshtein
2000 words, length max=20 min=3 avr=9.5
2,906 op/s » js-levenshtein
2,314 op/s » talisman
1,938 op/s » leven
2,026 op/s » levenshtein-edit-distance
1,937 op/s » fast-levenshtein
851 op/s » levenshtein-component
415 op/s » levdist
433 op/s » ld
207 op/s » natural
207 op/s » levenshtein
This implementation is 43, 39 and 25 percent faster respectively than the runner up talisman
Benchmarks was performed with node v8.1.2 on a MacBook pro 15", 2.9 GHz Intel Core i7
License
MIT © Gustaf Andersson