2015-06-09 146 views
-2

我有一个用户可以上传测试报告的输入表单,最小长度为100个字。有些用户写的比这少,只需复制他们写的内容,直到满足100个字的阈值。检测文本字符串中的重复/复制文本

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

一些示例文本:

布拉布拉喇嘛。这是一些文字,现在我感到无聊。这是一些 文本现在我感到无聊。这是一些文字,现在我感到无聊。 这是一些文字,现在我感到无聊。这是一些文字,现在我 感到无聊。最后有些东西。

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

1)将字符串映射到一个整数数组,即找到各个字符的数字表示。所以上面的示例将变得

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

2)应用傅立叶变换这个阵列上获得“字符频谱”

FT = fft (numerics); 

此检测在字符空间规则图案。 例如可以使用this class来计算fft。

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

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

由于这个建议在数据分析中是非常直接的,我不知道它之前是否没有编码过。所以这是我在这里问的目的,如果有人知道这种算法是否已经存在于开源中。

当然,如果能够解决这个问题,可以选择其他解决方案/建议。

+0

请张贴您的工作进度解决方案,不要只是要求我们编写代码。 – JAL

+0

@JAL我正在寻求一个已经可以作为解决方案存在的php类。 – George

+0

如果你必须输入100个单词来表示“它工作正常”,我不想在你的公司工作。点击[lorem ipsum](http://www.lipsum.com/)会马上起来! –

回答

0

没有现成的函数或libary以您喜欢的方式检测重复的字符串。你可以把问题分解为一个算法,以一个词开始,而不是两个词等。但是这对于此将是非常有用的。

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

你必须管理你的测试者,选择惩罚他们的非法条目。