5

Sto cercando di calcolare le distanze di modifica di una stringa rispetto a una raccolta per trovare la corrispondenza più simile. Il mio problema attuale è che la collezione è molto grande (circa 25000 articoli), quindi ho dovuto restringere il set a stringhe di lunghezza simile ma che comunque lo restringerebbero solo a poche migliaia di stringhe e questo è ancora molto lento. Esiste una struttura dati che consente una rapida ricerca di stringhe simili o esiste un altro modo per risolvere questo problema?Confronto veloce di una stringa con una raccolta in Java

+0

Come stai andando adesso? Puoi mostrare un po 'di codice? –

+3

Definire "simile". –

+0

Con parole simili intendo paragonare parole che sono errori di ortografia comuni come "exanple" e "example" o "weird" e "wierd". – Lezan

risposta

2

Se i tuoi criteri per "simile" definiscono un ordinamento totale, dovresti essere in grado di definire un comparatore e utilizzare un set di alberi per trovare le corrispondenze più vicine (ad esempio utilizzando i metodi del soffitto e del pavimento).

6

Gli strumenti automatici di Levenshtein consentono di selezionare rapidamente un insieme di parole da un dizionario di grandi dimensioni in modo tale che si trovino all'interno della distanza Levenshtein specificata da una determinata parola.

Vedere: Schulz K, Mihov S. (2002) Fast String Correction with Levenshtein-Automata.

Problemi correlati