我有一个用户可以上传测试报告的输入表单,最小长度为100个字。有些用户写的比这少,只需复制他们写的内容,直到满足100个字的阈值。检测文本字符串中的重复/复制文本
我想测试(理想情况下通过php)文本字符串包含重复的文本,即该字符串的子集被复制。 我正在考虑对文本进行傅立叶分析,这可能会导致字符串内出现文本重复。 是否存在用于此目的的php类或正则表达式示例?
一些示例文本:
布拉布拉喇嘛。这是一些文字,现在我感到无聊。这是一些 文本现在我感到无聊。这是一些文字,现在我感到无聊。 这是一些文字,现在我感到无聊。这是一些文字,现在我 感到无聊。最后有些东西。
更新:我的建议来解决这个如下:
1)将字符串映射到一个整数数组,即找到各个字符的数字表示。所以上面的示例将变得
numerics = array (2, 5, 1, 2, 5, 1, ...);
2)应用傅立叶变换这个阵列上获得“字符频谱”
FT = fft (numerics);
此检测在字符空间规则图案。 例如可以使用this class来计算fft。
3)检测函数FT的峰值。测量峰值的相对高度,与背景中的噪声相比较。
4)设置峰值的阈值。如果任何峰值高于此阈值,则返回正文中出现的常规模式。例如多次重复句子应该在一定频率上清楚地标出一个高峰。
由于这个建议在数据分析中是非常直接的,我不知道它之前是否没有编码过。所以这是我在这里问的目的,如果有人知道这种算法是否已经存在于开源中。
当然,如果能够解决这个问题,可以选择其他解决方案/建议。
请张贴您的工作进度解决方案,不要只是要求我们编写代码。 – JAL
@JAL我正在寻求一个已经可以作为解决方案存在的php类。 – George
如果你必须输入100个单词来表示“它工作正常”,我不想在你的公司工作。点击[lorem ipsum](http://www.lipsum.com/)会马上起来! –