我希望找到一种比典型算法更为复杂的字符串差异查找算法,可以通过某些参数进行“调整”,以平衡“最大化相同字符数”与“最大化跨度长度”与“尽可能保持整个单词完整”等因素。
最终,我希望能够使结果尽可能地易于人类阅读。例如,如果一个长句子被替换成了一个全新的句子,它与原始句子唯一共同的只有按顺序排列的单词“the”、“and”和“a”,我可能希望将其视为整个句子已更改,而不仅仅是更改了4个特定跨度,就像一个合理的人所看到的那样。
这样的算法是否存在?虽然我正在使用javascript/node.js,但任何语言的算法都将有所帮助。
实际上,我认为使用蒙特卡罗方法或类似方法的算法也可以,如果其结果更好的话。计算时间不是问题(在合理范围内),确定性也不是问题。
注意:虽然这超出了我的要求范围,但我还想提出一件事情:如果它能识别无序的更改……例如,如果有人更改了两段落的顺序,同时保持它们完全相同,如果它能将其识别为简单的移动,而不是一个减法和一个无关的加法,那就太棒了。
最终,我希望能够使结果尽可能地易于人类阅读。例如,如果一个长句子被替换成了一个全新的句子,它与原始句子唯一共同的只有按顺序排列的单词“the”、“and”和“a”,我可能希望将其视为整个句子已更改,而不仅仅是更改了4个特定跨度,就像一个合理的人所看到的那样。
这样的算法是否存在?虽然我正在使用javascript/node.js,但任何语言的算法都将有所帮助。
实际上,我认为使用蒙特卡罗方法或类似方法的算法也可以,如果其结果更好的话。计算时间不是问题(在合理范围内),确定性也不是问题。
注意:虽然这超出了我的要求范围,但我还想提出一件事情:如果它能识别无序的更改……例如,如果有人更改了两段落的顺序,同时保持它们完全相同,如果它能将其识别为简单的移动,而不是一个减法和一个无关的加法,那就太棒了。