我感兴趣的是找到一种比典型算法更复杂的算法来查找字符串之间的差异,这种算法可以通过一些参数进行“调整”,以在“最大化相同字符的数量”、“最大化跨度长度”和“尽量保持整个单词的完整性”之间取得平衡。
最终,我希望能够使结果尽可能人类可读。例如,如果一个长句子被一个全新的句子替换了,它与原始句子的唯一共同点是按顺序排列的单词" the“和" and”和"a“,我可能希望它被视为整个句子都被改变了,而不仅仅是四个特定的跨度被改变-就像一个理性的人会怎么看一样。
这样的事情真的存在吗?虽然我使用的是javascript/node.js,但任何语言的算法都会很有帮助。
实际上,我对使用蒙特卡罗方法或类似方法的东西没有问题,如果它的结果更好。计算时间不是问题(在合理范围内),确定性也不是问题。
注意:虽然这超出了我要问的范围,但为了以防万一,我将再抛出一件事:如果它能识别order....for之外的更改,那就太好了。如果有人改变了两个段落的顺序,而让它们在其他方面保持相同,如果它能识别出它是一个简单的移动,而不是一个减法和一个不相关的加法,那就太棒了。
发布于 2011-08-29 01:42:45
我和diff_match_patch在一起很走运。有一些很好的选项可以调优它以提高可读性。
发布于 2011-11-25 19:50:25
尝试http://prettydiff.com/它的代码已经格式化,以便与Node使用的框架CommonJS兼容。
https://stackoverflow.com/questions/7216661
复制相似问题