可调差分算法

时间:2011-08-27 19:00:17

标签: javascript algorithm node.js

我有兴趣找到一种比典型的更复杂的算法来查找字符串之间的差异,可以通过一些参数“调整”,以平衡“最大化相同字符数”与“最大化跨度的长度“与”试图保持整个单词的完整“。

最终,我希望能够使结果尽可能人性化。例如,如果一个长句被一个全新的句子取代,那么它与原句的唯一相同的东西就是那个词中的“the”,“”和“a”,我可能希望它被视为如果改变了整个句子,而不仅仅改变了4个特定的跨度 - 就像一个合理的人会看到它一样。

这样的事情存在吗?虽然我在javascript / node.js中工作,但任何语言的算法都会有所帮助。

如果结果更好,我实际上可以使用蒙特卡罗方法等。计算时间不是问题(在合理范围内),也不是决定论。

注意:虽然这超出了我所要求的范围,但为了以防万一,我还会再抛出一件事:如果它能够识别无序的变化,那也会很棒....例如,如果有人改变了两个段落的顺序而使它们保持相同,那么如果它认为它是一个简单的移动,而不是作为一个减法和一个不相关的加法,那将是很棒的。

2 个答案:

答案 0 :(得分:1)

我和diff_match_patch好运。为了便于阅读,有一些很好的选择进行调整。

答案 1 :(得分:0)

尝试http://prettydiff.com/其代码已经过格式化,以便与CommonJS兼容,这是Node使用的框架。