Sto cercando un algoritmo che richiede 2 stringhe e restituirà un "fattore di somiglianza".Trovare come due stringhe simili sono
Fondamentalmente, avrò un input che può essere scritto in modo errato, avere delle lettere trasposte, ecc. E devo trovare le corrispondenze più vicine in una lista di valori possibili che ho.
Questo non è per la ricerca in un database. Avrò un elenco in memoria di circa 500 stringhe a cui competere, tutte con meno di 30 caratteri, quindi può essere relativamente lento.
So che questo esiste, l'ho visto prima, ma non ricordo il suo nome.
Modifica: Grazie per aver segnalato Levenshtein e Hamming. Ora, quale devo implementare? Fondamentalmente misurano cose diverse, entrambe possono essere utilizzate per quello che voglio, ma non sono sicuro quale sia più appropriato.
Ho letto gli algoritmi, Hamming sembra ovviamente più veloce. Dal momento che nessuno dei due scoprirà due personaggi che vengono trasposti (cioè Jordan e Jodran), che ritengo sarà un errore comune, che sarà più preciso per quello che voglio? Qualcuno può dirmi qualcosa sui compromessi?
In realtà, sia Hamming e Levenshtein distanza rilevano trasposizioni, ogni assegnazione di un costo di 2 .Questo è uno dei pochi errori tipici che la distanza di Hamming * prenderà * sensibilmente - qualsiasi inserimento o cancellazione di un singolo personaggio ti darà immediatamente enormi punteggi di dissomiglianza. Usa Levenshtein. –