我试图量化两个字符串之间的差异,作为变更监控系统的一部分。
我遇到的问题是字符串 large - 我经常可以处理100K +字符的字符串。
我目前正在使用Levenshtein距离,但计算大字符串的levenshtein距离是非常低效的。即使最好的实现也只管理O(min(mn))
。
由于两个字符串的长度大致相同,因此距离计算过程可能需要几秒钟。
我不需要高精度。对于我的应用程序,更改分辨率为1(1000)(例如0.1%)。
有哪些选项可以实现更有效的字符串距离计算?
答案 0 :(得分:0)
如果您可以容忍某些错误,可以尝试将字符串拆分为较小的块,并计算它们的成对L距离。
该方法显然会产生准确的替换结果,插入和删除会导致精度损失,具体取决于块的数量(最坏的情况会给你2 * <number of insert/deletes> * <number of chunks>
而不是<number of insert/deletes>
的距离)
下一步可能是让流程自适应,我会看到两种方法,取决于预期的变化性质: