通过相似性比较和分组差异的工具或技术

时间:2014-04-15 08:58:43

标签: diff grouping similarity

我开发了一个系统,允许访问者为我的博客提交拼写错误更正。它的工作原理是拥有一个小型客户端应用程序,然后将unified diff发送到服务器。在这之后,我有一个界面,它允许我以一种漂亮的图形方式查看所有差异,对它们进行排序等。

然而,我认为随着时间的推移,许多访问者会在我有时间修复它们之前提交相同的更正。所以我需要一种方法将相似或相同的差异组合在一起。

相同的差异很容易。但可能有人以不同的方式修复错误,例如使用美国或英国的拼写,不同的标点符号规则,对不明确的短语的不同理解,这种事情。对类似的差异进行分组会非常有帮助。

是否有专门设计或可用于计算差异相似性的技术,算法或工具?

2 个答案:

答案 0 :(得分:1)

我认为你有两个问题需要解决:1。识别相同文本的修复(例如相同的拼写错误位置),2。可能删除具有相同或几乎相同的解决方案的那些,并至少分组所有相关的补丁到那个地方。

问题1.统一的diff格式有点好,因为它给出了行,但是单词级别或字符级别的差异(例如,将每个单词计为wdiff的行)可能更精确,帮助您更准确地分组补丁。

问题2.如果补丁是相同的,如你所说它是微不足道的,如果它们不同,解决问题1已经完成了很多工作。您当然可以使用标准化,例如"变形的单词部分删除" (例如,在单词结尾处删除','等等)或"更低的外壳"在比较之前,统一差异中的替换部分,从而帮助将几乎相同的解决方案组合在一起。

问题1是补丁集成或合并暂停的问题。问题2与您的特定情况更相关。

答案 1 :(得分:0)

也许您可以采用Damerau-Levenshtein算法。它用于计算两个字符串之间的距离。