数字列表之间的Levenshtein距离

3

这是一段代码,我想要计算两个数字列表之间的Levenshtein距离。

最初的回答:

import textdistance
S1=[1,2,3,7,9,15,19,20]
S2=[1,2,3,7,8,14,20]
#convert lists to string 
Str1=‘’.join(str(e) for e in S1)
Str2=‘’.join(str(e) for e in S2)
textdistance.levenshtein.similarity(Str1,Str2)
textdistance.levenshtein.distance(Str1,Str2)

上述代码给出的相似度为:7,这是错误的,正确的是5。并且显示距离值为4,这也是错误的,正确的距离是3。 如何操作代码,使得类似14和15的数字可以被函数视为一个元素?有什么想法吗?

不使用相似度而使用距离会起作用吗? - Drecker
@Drecker 如果它在相似性方面有效,那么在距离方面也会有效。距离给出了4,这也是错误的。正确的距离是3。 - Paulo
@Drecker 我更新了上面的代码,并添加了距离。 - Paulo
2个回答

4
pip install textdistance

不要转换为字符串,保持代码原样:

S1=[1,2,3,7,9,15,19,20]
S2=[1,2,3,7,8,14,20]

textdistance.levenshtein.similarity(S1,S2)
textdistance.levenshtein.distance(S1,S2)

在将其转换为字符串后,代码在Jupyter Notebook中运行正常,但在Visual Studio 2017中,它给出了一个错误,说“sequence item(): expected str instance, int found”。 - Paulo
textdistance.levenshtein.distance 对我来说是有效的。 - Philippe Remy

0

尝试使用jellyfish库,如下所示:

import jellyfish
S1=[1,2,3,7,9,15,19,20]
S2=[1,2,3,7,8,14,20]
#convert lists to string 
Str1=‘’.join(str(e) for e in S1)
Str2=‘’.join(str(e) for e in S2)

jellyfish.levenshtein_distance(Str1, Str2)

你可以在这里找到更多关于它的信息:https://pypi.org/project/jellyfish/


这个问题和他使用的库一样。将两位数转换为字符串会得到一个两位数的字符串。 - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接