Я ищу способ вывода процента совпадения между двумя строками (например, именами), а также с учетом того, что они могут быть одинаковыми, но со словами в другом порядке.
Я пытался использовать SequenceMatcher (), но результаты только частично удовлетворяют:
a = "john doe"
b = "jon doe"
c = "doe john"
d = "jon d"
e = 'john do'
s = SequenceMatcher(None, a, b)
s.ratio()
0.9333333333333333
s = SequenceMatcher(None, a, c)
s.ratio()
0.5
s = SequenceMatcher(None, a, d)
s.ratio()
0.7692307692307693
s = SequenceMatcher(None, a, e)
s.ratio()
0.9333333333333333
Я в порядке со всеми, кроме второго результата. Я замечаю, что не принимается во внимание, что c содержит те же слова, что и в a другого порядка.
Есть ли другой способ сопоставления строк и получения более высокого процента совпадения в случае, который я упоминал выше. Следует также учитывать, что имена могут содержать более двух слов.
Спасибо!