Estoy tratando de utilizar k-vecinos más cercanos para el problema de similitud de cadena, es decir, dada una cadena y una base de conocimiento, quiero producir k cadenas que son similares a mi cadena dada. ¿Hay algún tutorial que explique cómo utilizar kd-trees para hacer de manera eficiente esta búsqueda de vecinos k-next para cadenas? La longitud de la cadena no excederá más de 20 caracteres.¿Cómo uso kd-trees para determinar la similitud de cadenas?
Respuesta
Probablemente una de las publicaciones de blog más candentes que había leído hace un año o más: Levenstein Automata. Eche un vistazo a ese artículo. Proporciona no solo una descripción del algoritmo sino también el código a seguir. Técnicamente, no es un árbol kd, pero está bastante relacionado con la coincidencia de cadenas y los algoritmos de corrección del diccionario que uno puede encontrar/usar en el mundo real.
También tiene otra publicación en el blog acerca de BK-trees que son mucho mejores en la coincidencia difusa para cadenas y búsquedas de cadenas donde hay errores ortográficos. Aquí hay otro recurso que contiene el código fuente de un BK-tree (este no puedo verificar la precisión o la implementación correcta).
+1 para transductores Levenshtein. –
El Levenshtein Automata es impresionante, sin embargo, habiéndolo implementado, solo puedo decir que la versión precalculada explota rápidamente (en términos de nodos) cuando la distancia crece. En la práctica, es muy rápido buscar en un Trie, pero el autómata comienza a ser realmente grande a una distancia de 4 en adelante. –
@Matthieu M. ¿qué recomendarías en su lugar? – wheaties
- 1. Similitud entre cadenas de líneas
- 2. ¿Cómo se mide la similitud entre cadenas?
- 3. agrupando cadenas por similitud
- 4. ¿Cómo usar SequenceMatcher para encontrar la similitud entre dos cadenas?
- 5. Algoritmos de similitud de cadenas?
- 6. Similitud de cadenas: ¿cómo funciona exactamente Bitap?
- 7. C# - Comparación de similitud de cadenas
- 8. Algoritmo para medir la similitud entre dos secuencias de cadenas
- 9. Algoritmo para comparar la similitud de ideas (como cadenas)
- 10. Rubí comparar dos cadenas porcentaje de similitud
- 11. Similitud de cadenas -> distancia de Levenshtein
- 12. Métricas de similitud de cadenas en Python
- 13. ¿Cómo puedo medir la similitud entre 2 cadenas?
- 14. cómo calcular la similitud entre dos cadenas en MySQL
- 15. ¿Cómo calcular la medida de similitud de distancia de dos cadenas dadas?
- 16. Similitud de cadenas en PHP: Función tipo levenshtein para cadenas largas
- 17. métodos para determinar la similitud acústica (pero no las huellas dactilares)
- 18. Cálculo de la similitud de dos listas
- 19. Comparar algoritmos de similitud
- 20. Comparación de polígonos para similitud
- 21. ¿Cómo uso Activator.CreateInstance con cadenas?
- 22. ¿Cómo calculo la similitud de dos enteros?
- 23. Python: la conversión de cadenas para su uso con ctypes.c_void_p()
- 24. Biblioteca de Java para comparar la similitud de la imagen
- 25. Formas de calcular la similitud
- 26. ¿Qué función de similitud de nltk.corpus.wordnet es Apropiada para encontrar la similitud de dos palabras?
- 27. Similitud hashing
- 28. ¿Cómo comparo frases de similitud?
- 29. Uso ineficiente de la concatenación de cadenas
- 30. Similitud de documento muy rápida
¿Cuál es su similitud entre 2 cadenas? [scipy.spatial.cKDtree] (http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.cKDTree.html) es rápido y sólido, válido para 20d, pero solo tiene métricas de Lp. – denis