Python | Метрики сходства строк

| | | | | | | | | | | | | |

Способ № 1: использование наивного подхода (sum() + zip() )
Мы можем выполнить эту конкретную задачу, используя наивный подход, используя функции sum и zip, мы можем сформулировать вспомогательную функцию, которая вычисляет сходство обеих строк.


# Демонстрационный код Python3
# сходство строк
# использование наивного метода (sum() + zip()))


# Вспомогательная функция для вычисления сходства

def аналогичный (str1, str2):

str1 = str1 + `` * ( len (str2) - len (str1) )

str2 = str2 + `` * ( len (str1) - len (str2))

return сумма ( 1 if i = = j else 0

for i, j in zip (str1, str2)) / float ( len (str1))


# Инициализация строк

test_string1 = ` Geeksforgeeks`

test_string2 = `Geeks4geeks`


# с использованием наивного метода (sum() + zip()))
# построчное сходство

res = аналогичный (test_string1, test_string2)


# результат печати

print ( "Сходство между двумя строками:" + str (res))

Вывод:

Сходство между двумя строками: 0,38461538461538464 

Способ № 2: Использование SequenceMatcher.ratio()
Существует встроенный метод, который помогает выполнить эту конкретную задачу, и рекомендуется выполнять эту конкретную задачу, так как она не требует особого подхода, но использует встроенные конструкции для более эффективного выполнения задачи. / p>

# демонстрационный код Python3
# построчное сходство
# использование SequenceMatcher.ratio ()

from difflib import SequenceMatcher


# Вспомогательная функция для вычисления сходства

def аналогичный (str1, str2):

return SequenceMatcher ( None , str1, str2) .ratio ()


# Инициализация строки

test_string1 = <код класса = "string"> `Geeksforgeeks`

test_string2 = `Geeks`


# использование SequenceMatcher.ratio ( )
# сходство строк

res = аналогичный (test_string1, test_string2)


# результат печати

print ( "Сходство между двумя строками:" + str (res ))

Вывод:

Сходство между двумя строками: 0,5555555555555556