Здесь на работе нам часто нужно найти строку из списка строк, которая наиболее близка к некоторой другой входной строке. В настоящее время мы используем алгоритм Needleman-Wunsch. Алгоритм часто возвращает много ложных срабатываний (если мы устанавливаем минимальный балл слишком низко), иногда он не находит совпадения, когда он должен (когда минимальный балл слишком высок) и, в большинстве случаев, нам нужно проверить результаты вручную. Мы думали, что мы должны попробовать другие альтернативы.
Есть ли у вас опыт работы с алгоритмами? Вы знаете, как алгоритмы сравниваются друг с другом?
Я бы очень признателен за некоторые советы.
PS: Мы кодируем на С#, но вам это не должно волновать - я спрашиваю об алгоритмах вообще.
О, извините, я забыл упомянуть об этом.
Нет, мы не используем его для сопоставления повторяющихся данных. У нас есть список строк, которые мы ищем - мы называем его поисковым списком. И тогда нам нужно обрабатывать тексты из разных источников (например, RSS-каналы, веб-сайты, форумы и т.д.) - мы извлекаем части этих текстов (для этого существуют целые правила, но это неуместно), и нам нужно сопоставить те против списка поиска. Если строка соответствует одной из строк в списке поиска - нам нужно сделать некоторую дальнейшую обработку вещи (что также не имеет значения).
Мы не можем выполнить нормальное сравнение, потому что строки, извлеченные из внешних источников, в большинстве случаев, включают некоторые дополнительные слова и т.д.
В любом случае, это не для повторного обнаружения.