Uma função de similaridade de string simples e leve (~700 bytes minimizados) baseada na comparação do número de bigramas em comum entre quaisquer duas strings. Retorna uma pontuação entre 0 e 1 indicando a força da partida.
Baseado no coeficiente Sørensen-Dice, este algoritmo é mais eficaz na detecção de palavras reorganizadas ou erros ortográficos. Tende a ser menos eficaz com strings muito curtas, a menos que você passe a comparar caracteres individuais em comum em vez de bigramas.
Não faz distinção entre maiúsculas e minúsculas, a menos que você especifique o contrário. Não ignora pontuação ou espaços. Em alguns casos, remover a pontuação antecipadamente pode melhorar a precisão.
A versão 2.0 otimiza o algoritmo da complexidade de tempo O(n 2 ) para O(n) e muda do uso de uma matriz de bigramas para um Mapa, que foi considerado substancialmente mais rápido em testes de desempenho.
Esta biblioteca usa estrutura de dados de mapa integrada para desempenho ideal. Portanto, requer pelo menos IE11 ou polyfill para 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
Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE.md para obter detalhes