Как использовать kd-деревья для определения сходства строк? - PullRequest
6 голосов
/ 18 апреля 2011

Я пытаюсь использовать k-ближайших соседей для проблемы схожести строк, то есть, учитывая строку и базу знаний, я хочу вывести k строк, которые похожи на мою данную строку. Существуют ли какие-либо учебные пособия, которые объясняют, как использовать kd-деревья для эффективного поиска строк по k-ближайшему соседу? Длина строки не должна превышать 20 символов.

1 Ответ

7 голосов
/ 18 апреля 2011

Вероятно, одно из самых горячих сообщений в блоге, которые я прочитал год или около того назад: Levenstein Automata . Посмотрите на эту статью. Он предоставляет не только описание алгоритма, но и код для подражания. Технически, это не kd-дерево, но оно весьма связано с алгоритмами сопоставления строк и словарного исправления, с которыми можно столкнуться / использовать в реальном мире.

У него также есть еще одно сообщение в блоге о BK-деревьях , которые гораздо лучше справляются с нечетким соответствием строк и поисков строк, где есть неправильное написание. Вот еще один ресурс, содержащий исходный код для BK-дерева (в этом я не могу проверить точность или правильную реализацию.)

...