Sto cercando di scrivere un correttore ortografico che dovrebbe funzionare con un dizionario abbastanza grande. Voglio davvero un modo efficiente per indicizzare i dati del mio dizionario da utilizzare usando una distanza Damerau-Levenshtein per determinare quali parole sono più vicine alla parola errata.
Sto cercando una struttura di dati che mi darebbe il miglior compromesso tra complessità dello spazio e complessità del runtime.
Sulla base di ciò che ho trovato su Internet, ho alcune indicazioni su quale tipo di struttura di dati utilizzare:
prova
Questo è il mio primo pensiero e sembra abbastanza facile da implementare e dovrebbe fornire una rapida ricerca / inserimento. Anche qui la ricerca approssimativa con Damerau-Levenshtein dovrebbe essere semplice da implementare. Ma non sembra molto efficiente in termini di complessità dello spazio poiché molto probabilmente hai un sacco di sovraccarico con la memorizzazione dei puntatori.
Patricia Trie
Questo sembra consumare meno spazio di un normale Trie poiché stai sostanzialmente evitando il costo di memorizzazione dei puntatori, ma sono un po 'preoccupato per la frammentazione dei dati in caso di dizionari molto grandi come quello che ho.
Suffix Tree
Non sono sicuro di questo, sembra che alcune persone lo trovino utile nel text mining, ma non sono davvero sicuro di cosa darebbe in termini di prestazioni per un correttore ortografico.
Albero di ricerca ternaria
Questi sembrano piuttosto belli e in termini di complessità dovrebbero essere vicini (meglio?) A Patricia Tries, ma non sono sicuro riguardo alla frammentazione se sarebbe meglio di peggio di Patricia Tries.
Albero di scoppio
Questo sembra un po 'ibrido e non sono sicuro di quale vantaggio avrebbe rispetto a Tries e simili, ma ho letto diverse volte che è molto efficiente per il text mining.
Vorrei ricevere un feedback su quale struttura di dati sarebbe meglio usare in questo contesto e cosa lo rende migliore degli altri. Se mi mancano alcune strutture di dati che sarebbero ancora più appropriate per un controllo ortografico, sono anche molto interessato.