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

时间:2015-06-09 15:36:13

标签: php text pattern-matching fft

我有一个输入表单,用户可以上传测试报告,最小长度为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)设置峰值的阈值。如果任何峰值高于此阈值,则返回文本中的常规模式。例如多次重复句子应该在一定的频率上清楚地标出一个高峰。

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

当然,如何解决这个问题的替代解决方案/建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

没有现有的函数或库以您希望的方式检测重复字符串。你可以将问题分解为一个algorythm,它以一个单词开头,而不是两个单词等。但这对此非常有用。

您的客户将开始复制非重复的句子,您将遇到另一个问题,您无法解决。

你必须管理你的测试人员,惩罚他们非法入境的选项。