Su problema es la coincidencia aproximada de cadenas: http://en.wikipedia.org/wiki/App…
Aquí hay un documento sobre lo que hicimos en Google para el problema de corregir la ortografía de las URL mal escritas http://portal.acm.org/citation.c…
Básicamente, creamos un trie de URL y ejecutamos una búsqueda A * en esta estructura donde el estado en la búsqueda era el prefijo en la cadena de consulta que ya coincidía y el nodo en el trie en el que estamos. Obtenemos cuán prometedor es un estado al hacer una combinación de cuán bueno es el subárbol (tiene buenas URL), la longitud de la cadena que queda para coincidir y la distancia de edición actual. Procesamos nodos en orden de prioridad.
- ¿Qué tan valioso sería ser ubicado para aprender la estructura de datos usando C?
- En Kaggle Competition, ¿qué algoritmo de aprendizaje por conjuntos prefiere? ¿Voto mayoritario, promedio ponderado o algunos algoritmos avanzados como el embolsado?
- ¿Cómo funciona el algoritmo AQ?
- Imprimí un libro electrónico con 600 páginas. El montón se cayó y ahora tengo que organizarlas en el orden de los números de página. ¿Cuál es la mejor manera de hacerlo?
- ¿Qué algoritmo en aprendizaje automático es el más adecuado para unir los datos entrantes nuevos con los datos existentes en la base de datos SQLite?
Puede hacer lo mismo, poner todos sus bigrams en un trie o usar un árbol de sufijos para todo el texto y luego ejecutar A * en él.
Hay otros enfoques, como indexar n-gramas (que en este caso son n subcadenas de letras de las palabras) o usar hashing sensible a la localidad (creo que eso es lo que Liron está tratando de explicar). Puede encontrar algunos documentos que analizan los enfoques para el problema en la parte inferior del artículo de wikipedia.