Sto cercando di utilizzare i vicini più vicini a k per il problema di similarità delle stringhe, ad esempio una stringa e una knowledge base, voglio produrre stringhe k che sono simili alla mia stringa data. Ci sono tutorial che spiegano come utilizzare kd-trees per eseguire in modo efficiente questa ricerca di stringhe vicine al vicino più vicino? La lunghezza della stringa non supererà più di 20 caratteri.Come utilizzare gli alberi kd per determinare la somiglianza della stringa?
risposta
Probabilmente uno dei post più interessanti del blog che avevo letto circa un anno fa: Levenstein Automata. Dai un'occhiata a quell'articolo. Fornisce non solo una descrizione dell'algoritmo ma anche un codice da seguire. Tecnicamente, non è un albero di kd ma è abbastanza correlato agli algoritmi di correzione delle stringhe e di dizionario che si potrebbero incontrare/utilizzare nel mondo reale.
Ha anche un altro post sul blog su BK-trees che sono molto meglio per la corrispondenza fuzzy per stringhe e lookup di stringhe dove ci sono i mispellings. Ecco un'altra risorsa contenente il codice sorgente per un BK-tree (questo non riesco a verificare l'accuratezza o l'implementazione corretta.)
+1 per trasduttori Levenshtein. –
l'automa di Levenshtein è impressionante, tuttavia, dopo averlo implementato, posso solo dire che la versione precalcolata esplode rapidamente (in termini di nodi) quando la distanza cresce. In pratica, è incredibilmente veloce per cercare in un Trie, ma l'automa inizia a diventare veramente grande per una distanza tra 4 e l'alto. –
@Matthieu M. cosa consiglieresti invece? – wheaties
- 1. per la somiglianza del testo
- 2. Perché gli alberi KD sono così dannatamente lenti per la ricerca del vicino più vicino nei set di punti?
- 3. Come funzionano gli alberi Suffix?
- 4. Come utilizzare SequenceMatcher per trovare la somiglianza tra due stringhe?
- 5. Come funziona la ricerca vicino più vicino al KD-tree?
- 6. Test comparativo "somiglianza" stringa C#
- 7. Come controllare la somiglianza di due alberi Xml (Tree Edit Distance in C#)
- 8. Come determinare la dimensione della stringa e comprimerla
- 9. Algoritmo Divide-And-Conquer per gli alberi
- 10. Algoritmo per confrontare la somiglianza delle idee (come stringhe)
- 11. Come trovare la sottostringa comune più lunga usando gli alberi?
- 12. determinare la lunghezza della stringa di testo DB2
- 13. Calcolo della somiglianza dei dati binari
- 14. Come calcolare gli aggregati per i sotto-alberi in Gremlin?
- 15. Gli alberi AVL sono malvagi?
- 16. determinare la frequenza di stringa utilizzando grep
- 17. somiglianza tra gli utenti basano sui voti
- 18. Metodi per la determinazione della somiglianza acustica (ma non per le impronte digitali)
- 19. Come utilizzare gli healthCheck della maratona?
- 20. Comprendere l'algoritmo di Ukkonen per gli alberi di suffisso
- 21. determinare la lunghezza di una stringa letterale
- 22. KD-Albero in GLSL
- 23. Lavorare con gli alberi di suffisso in python
- 24. Come utilizzare preg_match per verificare gli spazi?
- 25. Java. Confrontare la somiglianza della struttura delle pagine Web (dom).
- 26. Come utilizzare Hamcrest per ispezionare gli elementi della mappa
- 27. Misurazione della somiglianza semantica tra due frasi
- 28. Come utilizzare una funzione all'interno della stringa?
- 29. Come determinare quale CRC utilizzare?
- 30. Come posso misurare la somiglianza tra 2 stringhe?
Qual è il tuo parametro di somiglianza tra 2 stringhe? [scipy.spatial.cKDtree] (http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.cKDTree.html) è veloce e solido, buono per 20d, ma solo metriche Lp. – denis