Une fonction de similarité de chaîne simple et légère (~ 700 octets réduits) basée sur la comparaison du nombre de bigrammes en commun entre deux chaînes. Renvoie un score compris entre 0 et 1 indiquant la force de la correspondance.
Basé sur le coefficient de Sørensen-Dice, cet algorithme est le plus efficace pour détecter les mots réarrangés ou les fautes d'orthographe. Cela a tendance à être moins efficace avec des chaînes très courtes, à moins que vous ne passiez à la comparaison de caractères individuels en commun au lieu de bigrammes.
Il n'est pas sensible à la casse, sauf indication contraire de votre part. N'ignore pas la ponctuation ni les espaces. Dans certains cas, la suppression préalable de la ponctuation peut améliorer la précision.
La version 2.0 optimise l'algorithme de complexité temporelle O(n 2 ) à O(n) et passe de l'utilisation d'un tableau pour les bigrammes à une carte, qui s'est avérée nettement plus rapide lors des tests de performances.
Cette bibliothèque utilise la structure de données cartographique intégrée pour des performances optimales. Par conséquent, il nécessite au moins IE11 ou un polyfill pour Map.
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
Ce projet est sous licence MIT - voir le fichier LICENSE.md pour plus de détails