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
5
A
Respuesta
8
suena como un BK-tree podría ser lo que quieres. Aquí hay un artículo sobre ellos: http://blog.notdot.net/2007/4/Damn-Cool-Algorithms-Part-1-BK-Trees. A quick Google produce algunas implementaciones de Java.
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
- 1. Uso CollectionAssert.Contains contra una colección
- 2. ¿Cómo comprobar una cadena contra nulo en Java?
- 3. java: devolver una colección
- 4. Java: ordenar una colección utilizando una CollatorKey
- 5. ¿Qué es una colección java?
- 6. Java - Hacer una colección de objetos amigable
- 7. Powershell coincide con una sola cadena contra varias expresiones regulares?
- 8. ¿Cómo recuperar una lista de directorios RÁPIDAMENTE en Java?
- 9. cómo detectar rápidamente si una cadena está comprimida zlib?
- 10. ¿Cómo parametrizar una cadena nula con DBNull.Value clara y rápidamente
- 11. ¿Cómo comparar BSTR contra una cadena en c/C++?
- 12. sincroniza lecturas a una colección java
- 13. la conversión de una colección de Java en una colección Scala
- 14. Cómo imprimir rápidamente una estructura de árbol en una cadena en Ocaml?
- 15. recinto de seguridad contra código malicioso en una aplicación Java
- 16. Ordenar una colección basada en otra colección
- 17. Compara dos variables primitivas largas en java
- 18. observador en una colección
- 19. AddRange en una colección
- 20. ¿Cómo tema rápidamente una vista?
- 21. Cómo verificar un X509Certificate2 contra una cadena X509Certificate2Collection
- 22. R grep: Empareje una cadena contra varios patrones
- 23. Cómo crear una colección paralela de Scala a partir de una colección de Java
- 24. Consulta eficiente de una cadena contra expresiones múltiples
- 25. C# Pasando una colección como una colección de interfaces
- 26. ¿Debo devolver una matriz o una colección de una función?
- 27. Plantilla de Django que compara la cadena
- 28. actuaciones Separar una cadena Java
- 29. Dividir una cadena Java con '.'
- 30. ¿Cómo se compara una biblioteca de cifrado?
¿Cómo te va ahora? ¿Puedes mostrar un código? –
Define "similar". –
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