У меня есть большая городская база данных, составленная из множества разных источников. Я пытаюсь найти способ легко обнаруживать дубликаты по названию города. Наивным ответом было бы использование расстояния Левенштейна. Однако проблема с городами заключается в том, что они часто имеют префиксы и суффиксы, общие для страны, в которой они находятся.
Например:
Бульвиль против Бошервилля
Это почти наверняка разные города. Однако, поскольку они оба заканчиваются на «ville» (и оба начинаются на «Bo»), они имеют довольно небольшое расстояние Левенштейна.
*Я ищу алгоритм расстояния между строками, который учитывает положение символа, чтобы свести к минимуму влияние префиксов и суффиксов, взвешивая буквы в середине слова выше, чем буквы в конце слова. *
Я, наверное, мог бы написать что-нибудь сам, но мне было бы трудно поверить, что никто еще не опубликовал подходящий алгоритм.