Именно так я и пытался реализовать, с помощью питоновского пакета fuzzywuzzy. Хорошо работает с отдельными словами, исправляет опечатки. А вот на уровне целой строки пока не получается, так как нужно избавляться от лишних слов, не знаю как это сделать автоматически. Например как здесь:
Словарь:
Ой Ой Ой Смотрите большая белка (рыжая)
Рыжая Лиса с белым хвостом
Данные:
Смотрите! Ой, Рыжая лиса
Должно быть:
Смотрите! Ой, Рыжая лиса -> Рыжая Лиса с белым хвостом
Но по кол-ву совпадающих слов алгоритм выдает белку.
C регуляркой выглядит суперкомпактно, только нужно [\w\s:] заменить на [^;] и [\w\s] заменить на [^;:]
И немного сбивает то, что символ : используется и как спецсимвол и означает сам себя. Если нужны будут другие разделители, типа 'name1= value1;', то можно ошибиться какие двоеточия оставить, а какие заменить.
Цвета это только для примера, чтобы был очевиден правильный порядок. В реальности у меня там некие строки.
RGB хотелось бы передавать как параметр, а не хардкодить
Списки я получаю функцией split из длинных строк с разделителями. Как мне получать кортежи?
Смотрите большая собака -> не найдено
непонятная лиса с непонятным хвостом -> Рыжая Лиса с белым хвостом