Próbuję obliczyć odległości edycyjne ciągu od kolekcji, aby znaleźć najbliższe dopasowanie. Mój obecny problem polega na tym, że kolekcja jest bardzo duża (około 25000 pozycji), więc musiałem zawęzić zestaw do samych łańcuchów o podobnej długości, ale to wciąż ograniczyłoby go do kilku tysięcy ciągów, a to wciąż jest bardzo powolne. Czy istnieje baza danych, która pozwala na szybkie wyszukiwanie podobnych ciągów lub czy istnieje inny sposób rozwiązania tego problemu?Szybkie porównywanie ciągu znaków z kolekcją w Javie
5
A
Odpowiedz
8
Brzmi jak BK-tree może być tym, co chcesz. Oto artykuł omawiający je: http://blog.notdot.net/2007/4/Damn-Cool-Algorithms-Part-1-BK-Trees. A quick Google daje pewne implementacje Java.
2
Jeśli kryteria "podobne" definiują całkowite uporządkowanie, powinieneś być w stanie zdefiniować komparator i użyć TreeSet, aby znaleźć najbliższe dopasowania (np. Używając metody sufitu i podłogi).
6
Levenshtein Automaty pozwalają na szybki wybór zestawu słów z dużego słownika, tak aby znajdowały się w podanej odległości Levenshtein od danego słowa.
Patrz: Schulz K, Mihov S. (2002) Fast String Correction with Levenshtein-Automata.
Powiązane problemy
- 1. Szybkie porównywanie ciągów z listą
- 2. Usuwanie stoperw z ciągu znaków w Javie
- 3. Porównywanie ciągu znaków z wieloma elementami w języku Python
- 4. Porównywanie HashMaps w Javie
- 5. Porównywanie ciągów znaków w EL
- 6. Usuwanie znaków z ciągu znaków
- 7. Znaleźć drugie wystąpienie podciągu w ciągu znaków w Javie
- 8. Regex, aby dopasować początek i koniec ciągu znaków w Javie
- 9. Jak przechowywać i sprawdzać synonim ciągu znaków w Javie
- 10. Porównywanie ciągów znaków w formacie "2.0.1", "2.0.09"
- 11. Porównywanie wprowadzanych przez użytkownika znaków w C
- 12. Przesyłanie znaków w Javie
- 13. Usuwanie znaków niealfanumerycznych z ciągu znaków
- 14. Usuwanie określonych znaków z ciągu znaków
- 15. Scala: Eleganckie przekształcenie ciągu znaków w boolean
- 16. Usuwanie wielu typów znaków z ciągu znaków
- 17. Usuwanie zduplikowanych znaków z ciągu znaków
- 18. Definiowanie stałego ciągu w Javie?
- 19. Usuwanie spacji z ciągu znaków
- 20. Zwracanie ciągu znaków z NSURLRequest
- 21. Parsować krotkę z ciągu znaków?
- 22. instanceof z kolekcją generyczną
- 23. Usuń HTML z ciągu znaków
- 24. Sprawdzanie znaków specjalnych w ciągu znaków
- 25. Jak wpisywać cudzysłowy w ciągu znaków Java?
- 26. Jak zapisać printStackTrace w ciągu znaków
- 27. Zamień wiele znaków w ciągu znaków (XSLT)
- 28. Tworzenie losowego ciągu znaków z A-Z i 0-9 w Javie
- 29. Zliczanie liczby znaków w ciągu znaków
- 30. datetime z ciągu w Pythonie, najlepiej zgadujący format ciągu znaków
Jak się masz teraz? Czy możesz pokazać kod? –
Zdefiniuj "podobny". –
W podobny sposób porównuję słowa, które są typowymi błędami w pisowni, takimi jak "exanple" i "example" lub "weird" i "wierd". – Lezan