Eine einfache, leichte (~700 Byte minimierte) String-Ähnlichkeitsfunktion, die auf dem Vergleich der Anzahl gemeinsamer Bigramme zwischen zwei beliebigen Strings basiert. Gibt eine Punktzahl zwischen 0 und 1 zurück, die die Stärke der Übereinstimmung angibt.
Basierend auf dem Sørensen-Dice-Koeffizienten ist dieser Algorithmus am effektivsten bei der Erkennung neu angeordneter Wörter oder falscher Schreibweisen. Bei sehr kurzen Zeichenfolgen ist dies tendenziell weniger effektiv, es sei denn, Sie wechseln dazu, einzelne Zeichen gemeinsam zu vergleichen, anstatt Bigramme.
Sofern Sie nichts anderes angeben, wird die Groß-/Kleinschreibung nicht beachtet. Ignoriert weder Satzzeichen noch Leerzeichen. In manchen Fällen kann das vorherige Entfernen von Satzzeichen die Genauigkeit verbessern.
Version 2.0 optimiert den Algorithmus von der Zeitkomplexität O(n 2 ) auf O(n) und wechselt von der Verwendung eines Arrays für Bigramme zu einer Map, die sich in Leistungstests als wesentlich schneller erwiesen hat.
Diese Bibliothek verwendet eine integrierte Kartendatenstruktur für optimale Leistung. Daher ist mindestens IE11 oder ein Polyfill für Map erforderlich.
import { stringSimilarity } from "string-similarity-js" ;
// Rearranged words
stringSimilarity ( "Lorem ipsum" , "Ipsum lorem" )
// Returns a score of 0.9
// Typos
stringSimilarity ( "The quick brown fox jumps over the lazy dog" , "The quck brown fx jumps over the lazy dog" )
// 0.92
// Even more different
stringSimilarity ( "The quick brown fox jumps over the lazy dog" , "The quack brain fax jomps odor the lady frog" )
// 0.65
// Completely different strings
stringSimilarity ( "The quick brown fox jumps over the lazy dog" , "Lorem ipsum" )
// 0.07
// Tiny strings are less effective with default settings
stringSimilarity ( "DMV" , "DNV" )
// Returns 0, because technically there are no bigrams in common between the two
// Passing in a substring length of 1 may improve accuracy on tiny strings
stringSimilarity ( "DMV" , "DNV" , 1 )
// Returns 0.67, the percentage of letters in common between the two
Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der Datei LICENSE.md