Estoy tratando de escribir un corrector ortográfico que debería funcionar con un diccionario bastante grande. Realmente quiero una manera eficiente de indexar los datos de mi diccionario para usarlos usando una distancia Damerau-Levenshtein para determinar qué palabras están más cerca de la palabra mal escrita.
Estoy buscando una estructura de datos que me ofrezca el mejor compromiso entre la complejidad del espacio y la complejidad del tiempo de ejecución.
Según lo que encontré en Internet, tengo algunas pistas sobre qué tipo de estructura de datos usar:
Trie
Este es mi primer pensamiento y parece bastante fácil de implementar y debería proporcionar una búsqueda / inserción rápida. La búsqueda aproximada usando Damerau-Levenshtein debería ser fácil de implementar aquí también. Pero no parece muy eficiente en términos de complejidad de espacio ya que lo más probable es que tenga muchos gastos generales con el almacenamiento de punteros.
Patricia Trie
Esto parece consumir menos espacio que un Trie normal ya que básicamente estás evitando el costo de almacenar los punteros, pero estoy un poco preocupado por la fragmentación de datos en el caso de diccionarios muy grandes como el que tengo.
Árbol de sufijo
No estoy seguro de esto, parece que algunas personas lo encuentran útil en la minería de texto, pero no estoy realmente seguro de lo que daría en términos de rendimiento para un corrector ortográfico.
Árbol de búsqueda ternario
Estos se ven bastante bien y en términos de complejidad deberían estar cerca (¿mejor?) De Patricia Tries, pero no estoy seguro con respecto a la fragmentación si sería mejor o peor que Patricia Tries.
Árbol de explosión
Esto parece un poco híbrido y no estoy seguro de qué ventaja tendría sobre Tries y similares, pero he leído varias veces que es muy eficiente para la minería de textos.
Me gustaría recibir algunos comentarios sobre qué estructura de datos sería mejor usar en este contexto y qué lo hace mejor que los otros. Si me faltan algunas estructuras de datos que serían aún más apropiadas para un corrector ortográfico, también estoy muy interesado.