📜  Python|字符串的相似度度量

📅  最后修改于: 2022-05-13 01:55:00.641000             🧑  作者: Mango

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