5

Estoy tratando de calcular las distancias de edición de una cadena contra una colección para encontrar la coincidencia más cercana. Mi problema actual es que la colección es muy grande (alrededor de 25000 elementos), así que tuve que reducir el conjunto a solo cadenas de longitudes similares, pero eso solo reduciría a unos pocos miles de cadenas y esto todavía es muy lento. ¿Existe una estructura de datos que permita una búsqueda rápida de cadenas similares o existe otra forma de abordar este problema?Compara rápidamente una cadena contra una colección en Java

+0

¿Cómo te va ahora? ¿Puedes mostrar un código? –

+3

Define "similar". –

+0

Me refiero a la comparación de palabras que son errores de ortografía comunes, tales como "exanple" y "example" o "strange" and "wierd". – Lezan

Respuesta

2

Si sus criterios para 'similar' definen un total de pedidos, usted debería poder definir un Comparador y usar un TreeSet para encontrar las coincidencias más cercanas (por ejemplo, usando los métodos de techo y piso).

6

Levenshtein Automata permite la selección rápida de un conjunto de palabras de un diccionario grande de modo que estén dentro de la distancia dada de Levenshtein de una palabra determinada.

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

Cuestiones relacionadas