检测文本字符串/复制文本中的重复


Detect repetition in text string / copied text

我有一个输入表单,用户可以上传测试报告,最小长度是100个字。有些用户写的比这个少,只是简单地复制他们写的东西,直到达到100字的阈值。

我想测试(理想情况下通过php),一个文本字符串包含重复的文本,即这个字符串的子集被复制。我在考虑对文本进行傅里叶分析,这可能会导致字符串中的文本重复。是否存在php类或正则表达式示例用于此目的?

一些示例文本:

鼓励性bla。这是一些文本,我现在有点无聊了。这是一些现在发短信,我有点无聊了。这是一些文本,我现在有点无聊了。这是一些文本,我现在有点无聊了。这是一些文本,我现在越来越无聊。有些东西最后。

更新:我解决这个问题的建议如下

1)将字符串映射到整数数组,即为每个字符找到一个数字表示。因此上面的示例将变成

numerics = array ( 2, 5, 1, 2, 5, 1, ...);

2)对该阵列进行傅里叶变换得到"字符频谱"

FT = fft (numerics);

检测字符空间中的规则模式。例如,可以使用这个类来计算fft。

3)检测函数FT的峰值,测量峰值相对于背景噪声的高度。

4)为峰值设置阈值。如果任何峰值高于此阈值,则返回文本中出现的规则模式。例如,重复几次的句子应该在一定的频率上清晰地标记出一个高峰。

由于这个提案在数据分析方面非常直接,我想知道它之前是否没有被编码过。所以这就是我在这里问的目的,如果有人知道这样的算法是否已经存在于开源中。

当然,对于如何解决这个问题的其他解决方案/建议,我将不胜感激。

没有现有的函数或库可以以您喜欢的方式检测重复字符串。你可以把这个问题分解成一个算法,从一个词开始,然后是两个词等等。但是这将会有很多工作要做

你的客户会开始抄袭不重复的句子,你就会有另一个你无法解决的问题。

你必须管理你的测试人员,选择惩罚他们的非法输入