2015-06-09 62 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以您喜歡的方式檢測重複的字符串。你可以把問題分解爲一個算法,以一個詞開始,而不是兩個詞等。但是這對於此將是非常有用的。

您的客戶將開始複製不重複的句子,您將遇到另一個問題,您無法解決。

你必須管理你的測試者,選擇懲罰他們的非法條目。