2015-06-09 3 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

Нет существующей функции или библиотеки, которая обнаруживает повторяющиеся строки так, как вам нравится. Вы можете разбить проблему на алгоритм, который начинается с одного слова, чем два слова ect. но для этого это будет очень полезно.

Ваши клиенты начнут копировать неповторяющиеся санкции, и у вас возникнет другая проблема, которую вы не сможете решить.

Вы должны управлять своими тестерами, чтобы наказать их за незаконные записи.

Смежные вопросы