假设以下抄袭的生成模型:
剽窃者: 1.删除部分文本 2.重新排列部分文本 3.添加新文本。
实施例。如果ABCD是原始文本(A,B,C和D可以是段落或句子串),则输出可以是DEAFCG,其中E,F和G是添加的附加文本。
此外,剽窃者会增加小错误(插入,替换和删除率很低)。
我们如何检测这个剽窃事件?
到目前为止我做了什么:尝试使用最长的常见子序列方法。它检测一组线性的匹配文本。在上面的例子中,它将检测D或AC(取决于它们的长度)
我需要什么:处理这个问题的原则性方法。任何对已有文献的引用都会非常有帮助。任何想法的伪代码也都很好。请不要代码。
既不是家庭作业,也不是面试问题。我把我的实际问题简化为这个玩具问题。
答案 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距离也考虑了替换,以及相邻字符的转置。