我试图相互比较100k字符串。我不能进一步减小问题的大小(即集合中的#strings)。我使用Levenshtein比率进行比较。如果ratio大于0.9,我想将2个字符串存储在列表中。我的问题是关于运行时优化。由于0.9是我的标准,有没有办法将这个值传递给Levenshtein.ratio()并期望在负面情况下提前退出?如果存在提前退出的方法,则可以保存一些运行时。在计算完整距离之前,Levenshtein算法在提前获得比率是否可行。
E.g
import Levenshtein
Levenshtein.ratio('lot of runtime','why not an early exit in this case by taking the intended ratio')
是否有类似的东西:
Levenshtein.ratio('lot of runtime','why not an early exit in this case by taking the intended ratio', 0.9)
答案 0 :(得分:1)
是的,可以提前退出,就像你假设一样。
Levenshtein
模块的源代码是免费提供的,因此您可以自己添加该功能。
您可能希望考虑另一种优化:三角不等式。如果字符串A与字符串B相似20%,字符串B与字符串C相似90%,那么你知道字符串A不会与字符串C相似90%。这是不可能的,所以你没有实际上计算AC Levenshtein距离。