我有一个输入表单,用户可以上传测试报告,最小长度为100字。有些用户写的不到这个,只需复制他们写的内容,直到满足100个字的阈值。
我想测试(理想情况下通过php)文本字符串包含重复文本,即复制此字符串的子集。 我正在考虑对文本进行傅立叶分析,这可能会在字符串中产生文本重复。 为此目的是否存在php类或正则表达式示例?
一些示例文字:
blabla bla。这是一些文字现在我感到无聊。这是一些 文字现在我感到无聊。这是一些文字现在我感到无聊。 这是一些文字现在我感到无聊。这是我现在的一些文字 越来越无聊。最后有些东西。
更新:我解决此问题的建议如下
1)将字符串映射到整数数组,即找到每个字符的数字表示。所以上面的示例将成为
numerics = array ( 2, 5, 1, 2, 5, 1, ...);
2)对此阵列应用傅立叶变换以获得"字符频谱"
FT = fft (numerics);
这会检测字符空间中的常规模式。 例如可以使用this class来计算fft。
3)检测功能FT的峰值。与背景噪声相比,测量峰的相对高度。
4)设置峰值的阈值。如果任何峰值高于此阈值,则返回文本中的常规模式。例如多次重复句子应该在一定的频率上清楚地标出一个高峰。
由于此提案在数据分析方面非常直接,我想知道它之前是否已经编码过。所以这就是我在这里询问的目的,如果有人知道这样的算法是否已经存在于开源中。
当然,如何解决这个问题的替代解决方案/建议将不胜感激。
答案 0 :(得分:0)
没有现有的函数或库以您希望的方式检测重复字符串。你可以将问题分解为一个algorythm,它以一个单词开头,而不是两个单词等。但这对此非常有用。
您的客户将开始复制非重复的句子,您将遇到另一个问题,您无法解决。
你必须管理你的测试人员,惩罚他们非法入境的选项。