高级序列比对

时间:2013-04-10 21:55:11

标签: algorithm pattern-matching dynamic-programming sequences

假设以下抄袭的生成模型:

剽窃者: 1.删​​除部分文本 2.重新排列部分文本 3.添加新文本。

实施例。如果ABCD是原始文本(A,B,C和D可以是段落或句子串),则输出可以是DEAFCG,其中E,F和G是添加的附加文本。

此外,剽窃者会增加小错误(插入,替换和删除率很低)。

我们如何检测这个剽窃事件?

到目前为止我做了什么:尝试使用最长的常见子序列方法。它检测一组线性的匹配文本。在上面的例子中,它将检测D或AC(取决于它们的长度)

我需要什么:处理这个问题的原则性方法。任何对已有文献的引用都会非常有帮助。任何想法的伪代码也都很好。请不要代码。

既不是家庭作业,也不是面试问题。我把我的实际问题简化为这个玩具问题。

1 个答案:

答案 0 :(得分:0)

有许多算法可以用于众多应用程序。据我所知,他们最常做的(以及你想做的)是计算编辑距离: http://en.wikipedia.org/wiki/Edit_distance

据许可证,有许多不同的算法略有不同 http://en.wikipedia.org/wiki/Levenshtein_distance#Relationship_with_other_edit_distance_metrics

e.g。最长的公共子序列处理加法和删除但不替换; Damerau-Levenshtein距离也考虑了替换,以及相邻字符的转置。