У меня есть форма ввода, где пользователи могут загрузить отчет о тестировании, минимальная длина составляет 100 слов. Некоторые пользователи пишут меньше, чем это, и просто копируют то, что они написали, пока не будет достигнут порог в 100 слов.
Я хотел бы проверить (в идеале через php), что текстовая строка содержит повторный текст, то есть, где копируются подмножества этой строки.
Я думал сделать анализ текста Фурье, который может привести к повторениям текста внутри строки.
Существует ли класс php или пример регулярных выражений для этой цели?
Пример текста:
бла бла это какой-то текст, теперь мне становится скучно. это какой-то
текст сейчас мне становится скучно. это какой-то текст, теперь мне становится скучно.
это какой-то текст, теперь мне становится скучно. это какой-то текст сейчас я
скучно. некоторые вещи в конце.
Обновление: мое предложение для решения этой проблемы заключается в следующем
1) Сопоставить строку с массивом целых чисел, то есть найти числовое представление для каждого символа. Таким образом, образец выше станет
numerics = array ( 2, 5, 1, 2, 5, 1, ...);
2) Примените преобразование Фурье к этому массиву, чтобы получить «частотный спектр символов»
FT = fft (numerics);
Это обнаруживает регулярные шаблоны в пространстве символов.
например можно использовать этот класс вычислить БПФ.
3) Обнаружить пики функции FT. Измерьте относительную высоту пиков по сравнению с шумом на заднем плане.
4) Установите порог для пиков. Если какой-либо пик выше этого порога, верните, что в тексте появились регулярные шаблоны. например повторение предложений несколько раз должно четко обозначать высокий пик с определенной частотой.
Поскольку это предложение было бы довольно простым в аналитике данных, мне интересно, не было ли оно закодировано ранее. Так что это была моя цель спросить здесь, если кто-нибудь знает, существует ли такой алгоритм в открытом исходном коде.
Конечно, альтернативные решения / предложения, как решить эту проблему, будут оценены.
Не существует существующей функции или библиотеки, которая бы обнаруживала повторяющиеся строки так, как вам хотелось бы. Вы можете разбить проблему на алгоритм, который начинается с одного слова, а не двух слов и т. Д. но это будет очень много работы для этого.
Ваши клиенты начнут копировать неповторяющиеся предложения, и у вас возникнет другая проблема, которую вы не сможете решить.
Вы должны управлять своими тестерами, варианты наказать их за незаконные записи.
Других решений пока нет …