我有兴趣找到一种比典型的更复杂的算法来查找字符串之间的差异,可以通过一些参数“调整”,以平衡“最大化相同字符数”与“最大化跨度的长度“与”试图保持整个单词的完整“。
最终,我希望能够使结果尽可能人性化。例如,如果一个长句被一个全新的句子取代,那么它与原句的唯一相同的东西就是那个词中的“the”,“”和“a”,我可能希望它被视为如果改变了整个句子,而不仅仅改变了4个特定的跨度 - 就像一个合理的人会看到它一样。
这样的事情存在吗?虽然我在javascript / node.js中工作,但任何语言的算法都会有所帮助。
如果结果更好,我实际上可以使用蒙特卡罗方法等。计算时间不是问题(在合理范围内),也不是决定论。
注意:虽然这超出了我所要求的范围,但为了以防万一,我还会再抛出一件事:如果它能够识别无序的变化,那也会很棒....例如,如果有人改变了两个段落的顺序而使它们保持相同,那么如果它认为它是一个简单的移动,而不是作为一个减法和一个不相关的加法,那将是很棒的。
答案 0 :(得分:1)
我和diff_match_patch好运。为了便于阅读,有一些很好的选择进行调整。
答案 1 :(得分:0)
尝试http://prettydiff.com/其代码已经过格式化,以便与CommonJS兼容,这是Node使用的框架。