Я нашел много ссылок о нечетком сопоставлении, сравнивая одну строку с другой и видя, какой из них получает наивысшую оценку сходства.
У меня есть одна очень длинная строка, которая является документом, и подстрока. Подстрока взята из исходного документа, но несколько раз конвертировалась, поэтому могли появиться странные артефакты, такие как пробел здесь, тире там. Подстрока будет соответствовать фрагменту текста в исходном документе на 99% или более. Я не сопоставляю, из какого документа эта строка, я пытаюсь найти индекс в документе, где начинается строка.
Если бы строка была идентичной, потому что не было введено никакой случайной ошибки, я бы использовал document.index(substring)
, однако это не удастся, если есть хотя бы одна разница символов.
Я думал, что разница будет учтена путем удаления всех символов, кроме az, как в строке, так и в подстроке, сравните и затем используйте индекс, сгенерированный мною при сжатии строки, для перевода индекса в сжатой строке в индекс в настоящий документ. Это хорошо работало, когда разница была в пробеле и пунктуации, но как только одна буква стала другой, она потерпела неудачу.
Обычно документ состоит из нескольких страниц до ста страниц, а подстрока - от нескольких предложений до нескольких страниц.