import numpy
import torch
def levenshteinDistance(s1, s2):
if len(s1) > len(s2):
s1, s2 = s2, s1
distances = range(len(s1) + 1)
for i2, c2 in enumerate(s2):
distances_ = [i2+1]
for i1, c1 in enumerate(s1):
if c1 == c2:
distances_.append(distances[i1])
else:
distances_.append(1 + min((distances[i1], distances[i1 + 1], distances_[-1])))
distances = distances_
return distances[-1]
# a = numpy.random.randint(0,100, (3,4))
# a = numpy.array(([[18, 98, 46, 59],
# [92, 78, 83, 47],
# [31, 77, 22, 92]]))
a = torch.tensor(([[18, 98, 46, 59],
[92, 78, 83, 47],
[31, 77, 22, 92]]))
# b = numpy.random.randint(0,100, (3,4))
# b = numpy.array([[18, 98, 46, 59, 60],
# [66, 4, 87, 4, 60],
# [27, 89,54, 2, 60]])
b = torch.tensor([[98, 18, 47, 59, 60],
[66, 4, 87, 4, 60],
[27, 89,54, 2, 60]])
print(a)
print(b)
for ai,bi in zip(a,b):
print(levenshteinDistance(ai, bi))
# print(levenshteinDistance(['hors','hors','horsa'], ['horse','ros']))
Edit distance(编辑距离)python
最新推荐文章于 2024-05-10 09:35:50 发布