Простая и легкая (минимум ~700 байт) функция сходства строк, основанная на сравнении количества общих биграмм между любыми двумя строками. Возвращает оценку от 0 до 1, указывающую силу совпадения.
Основанный на коэффициенте Соренсена-Дайса, этот алгоритм наиболее эффективен при обнаружении переставленных слов или орфографических ошибок. Обычно он менее эффективен с очень короткими строками, если только вы, возможно, не переключитесь на сравнение отдельных символов вместо биграмм.
Регистронезависим, если не указано иное. Не игнорирует знаки препинания и пробелы. В некоторых случаях предварительное удаление знаков препинания может повысить точность.
Версия 2.0 оптимизирует алгоритм с временной сложности O(n 2 ) до O(n) и переключается с использования массива для биграмм на Map, что в тестах производительности оказалось существенно быстрее.
Эта библиотека использует встроенную структуру данных карты для оптимальной производительности. Поэтому для Map требуется как минимум IE11 или полифилл.
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
Этот проект лицензируется по лицензии MIT — подробности см. в файле LICENSE.md.