Python|字符串的相似度度量
由于计算机科学的许多领域(例如机器学习、AI 和 Web 开发领域)的相似性计算要求,这种特殊的实用程序现在非常需要,因此计算任何给定容器之间相似性的技术可能非常有用。让我们讨论一些可以做到这一点的方法。
方法 #1:使用朴素方法( sum() + zip()
)
我们可以使用简单的方法来执行这个特定的任务,使用 sum 和 zip 函数,我们可以制定一个可以计算两个字符串相似度的效用函数。
# Python3 code to demonstrate
# similarity between strings
# using naive method (sum() + zip())
# Utility function to compute similarity
def similar(str1, str2):
str1 = str1 + ' ' * (len(str2) - len(str1))
str2 = str2 + ' ' * (len(str1) - len(str2))
return sum(1 if i == j else 0
for i, j in zip(str1, str2)) / float(len(str1))
# Initializing strings
test_string1 = 'Geeksforgeeks'
test_string2 = 'Geeks4geeks'
# using naive method (sum() + zip())
# similarity between strings
res = similar(test_string1, test_string2)
# printing the result
print ("The similarity between 2 strings is : " + str(res))
输出 :
The similarity between 2 strings is : 0.38461538461538464
方法#2:使用SequenceMatcher.ratio()
有一个内置方法可以帮助执行此特定任务,建议完成此特定任务,因为它不需要自定义方法,而是使用内置构造来更有效地执行任务。
# Python3 code to demonstrate
# similarity between strings
# using SequenceMatcher.ratio()
from difflib import SequenceMatcher
# Utility function to compute similarity
def similar(str1, str2):
return SequenceMatcher(None, str1, str2).ratio()
# Initializing strings
test_string1 = 'Geeksforgeeks'
test_string2 = 'Geeks'
# using SequenceMatcher.ratio()
# similarity between strings
res = similar(test_string1, test_string2)
# printing the result
print ("The similarity between 2 strings is : " + str(res))
输出 :
The similarity between 2 strings is : 0.5555555555555556