Изменение расстояния Левенштейна для позиционного смещения

Я использую алгоритм расстояния Левенштейна, чтобы сравнить название компании, предоставленное в качестве пользовательского ввода, с базой данных известных названий компаний, чтобы найти наиболее близкое соответствие. Сам по себе алгоритм работает хорошо, но я хочу встроить смещение, чтобы расстояние редактирования считалось меньшим, если начальные части строк совпадают.

Например, если критерием поиска является «ABCD», тогда оба «ABCD Co.» и "XYX ABCD" иметь одинаковое расстояние редактирования. Однако я хочу добавить вес к тому факту, что начальные части первой строки соответствуют критериям поиска более близко, чем вторая строка.

Одним из способов сделать это может быть изменение затрат на вставку / удаление / замену, чтобы они были выше в начале строки и ниже к концу. У кого-нибудь есть пример успешной реализации этого? Является ли использование расстояния Левенштейна лучшим способом сделать то, чего я пытаюсь достичь? Точно ли мое предположение о подходе?

UPDATE: Для моих непосредственных целей я решил отказаться от вышеупомянутого и вместо этого использовать расстояние редактирования Jaro Winkler, которое, кажется, решает проблему. Однако я оставлю это открытым для дальнейших вкладов.

Ответы на вопрос(1)

Ваш ответ на вопрос