Как я могу выполнить нечеткое сопоставление подстрок в Ruby?

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

У меня есть одна очень длинная строка, которая представляет собой документ и подстроку. Подстрока взята из исходного документа, но была преобразована несколько раз, поэтому могли появиться странные артефакты, такие как пробел здесь, тире там. Подстрока будет соответствовать части текста в исходном документе на 99% или более. Я не могу определить, из какого документа эта строка, я пытаюсь найти индекс в документе, где начинается строка.

Если строка была идентична, потому что не было внесено случайной ошибки, я бы использовал документ . index (substring) , однако это не удается, если существует хотя бы одно различие в символе.

Я думал, что разница будет объяснена удалением всех символов, кроме z, как в строке, так и в подстроке, сравнением, а затем использованием индекса, который я сгенерировал при сжатии строки, чтобы преобразовать индекс в сжатой строке в индекс в настоящий документ. Это хорошо сработало там, где разница заключалась в пробелах и пунктуации, но как только одна буква стала другой, это не удалось.

Документ обычно составляет от нескольких страниц до сотни страниц, а подстрока - от нескольких предложений до нескольких страниц.

11118420]

17
задан the Tin Man 6 January 2012 в 21:23
поделиться